diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml deleted file mode 100644 index d3c05be..0000000 --- a/.github/workflows/CI.yaml +++ /dev/null @@ -1,115 +0,0 @@ -name: CI -on: - # See the documentation for more intricate event dispatch here: - # https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#on - push: - branches: - - "!dependabot/*" - - "*" - pull_request: - branches: - - "*" -jobs: - build: - name: Build & Lint - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Setup - uses: actions/setup-go@v2 - with: - go-version: ^1.15 - - name: Build - run: go build -v ./cmd/... - - name: Vet - run: go vet ./... - - name: Imports - uses: Jerome1337/goimports-action@v1.0.3 - - name: Format - uses: Jerome1337/gofmt-action@v1.0.4 - - name: Lint - uses: Jerome1337/golint-action@v1.0.2 - - unit: - name: Unit Tests - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Setup - uses: actions/setup-go@v2 - with: - go-version: ^1.15 - - name: Unit Tests - run: go test -v -race $(go list ./...) - - e2e-mem: - name: E2E Tests (Memory Storage) - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Setup - uses: actions/setup-go@v2 - with: - go-version: ^1.15 - - name: End-to-End Test - run: | - go install ./cmd/chihaya - cat ./dist/example_config.yaml - chihaya --config=./dist/example_config.yaml --debug & - pid=$! - sleep 2 - chihaya e2e --debug - kill $pid - - e2e-redis: - name: E2E Tests (Redis Storage) - runs-on: ubuntu-latest - services: - redis: - image: redis - ports: ["6379:6379"] - options: --entrypoint redis-server - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Setup - uses: actions/setup-go@v2 - with: - go-version: ^1.15 - - name: Configure redis storage - run: | - curl -LO https://github.com/jzelinskie/faq/releases/download/0.0.6/faq-linux-amd64 - chmod +x faq-linux-amd64 - ./faq-linux-amd64 '.chihaya.storage = {"config":{"gc_interval":"3m","peer_lifetime":"31m","prometheus_reporting_interval":"1s","redis_broker":"redis://127.0.0.1:6379/0","redis_connect_timeout":"15s","redis_read_timeout":"15s","redis_write_timeout":"15s"},"name":"redis"}' ./dist/example_config.yaml > ./dist/example_redis_config.yaml - cat ./dist/example_redis_config.yaml - - name: End-to-End Test - run: | - go install ./cmd/chihaya - chihaya --config=./dist/example_redis_config.yaml --debug & - pid=$! - sleep 2 - chihaya e2e --debug - kill $pid - - dist: - name: Helm Template - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Install Helm - uses: engineerd/configurator@v0.0.5 - with: - name: helm - pathInArchive: linux-amd64/helm - fromGitHubReleases: true - repo: helm/helm - version: ^v3 - urlTemplate: https://get.helm.sh/helm-{{version}}-linux-amd64.tar.gz - token: ${{ secrets.GITHUB_TOKEN }} - - name: Helm Template - working-directory: ./dist/helm/chihaya - run: helm template . --debug diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..d437900 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,112 @@ +--- +name: "Build & Test" +on: + push: + branches: + - "!dependabot/*" + - "main" + pull_request: + branches: ["*"] +jobs: + build: + name: "Go Build" + runs-on: "ubuntu-latest" + steps: + - uses: "actions/checkout@v2" + - uses: "actions/setup-go@v2" + with: + go-version: "^1.17" + - name: "Build" + run: "go build ./cmd/..." + + unit: + name: "Run Unit Tests" + runs-on: "ubuntu-latest" + steps: + - uses: "actions/checkout@v2" + - uses: "actions/setup-go@v2" + with: + go-version: "^1.17" + - name: "Run `go test`" + run: "go test -race ./..." + + e2e-mem: + name: "E2E Memory Tests" + runs-on: "ubuntu-latest" + steps: + - uses: "actions/checkout@v2" + - uses: "actions/setup-go@v2" + with: + go-version: ^1.17 + - name: "Install and configure chihaya" + run: | + go install ./cmd/chihaya + cat ./dist/example_config.yaml + - name: "Run end-to-end tests" + run: | + chihaya --config=./dist/example_config.yaml --debug & + pid=$! + sleep 2 + chihaya e2e --debug + kill $pid + + e2e-redis: + name: "E2E Redis Tests" + runs-on: "ubuntu-latest" + services: + redis: + image: "redis" + ports: ["6379:6379"] + options: "--entrypoint redis-server" + steps: + - uses: "actions/checkout@v2" + - uses: "actions/setup-go@v2" + with: + go-version: ^1.17 + - name: "Install and configure chihaya" + run: | + go install ./cmd/chihaya + curl -LO https://github.com/jzelinskie/faq/releases/download/0.0.6/faq-linux-amd64 + chmod +x faq-linux-amd64 + ./faq-linux-amd64 '.chihaya.storage = {"config":{"gc_interval":"3m","peer_lifetime":"31m","prometheus_reporting_interval":"1s","redis_broker":"redis://127.0.0.1:6379/0","redis_connect_timeout":"15s","redis_read_timeout":"15s","redis_write_timeout":"15s"},"name":"redis"}' ./dist/example_config.yaml > ./dist/example_redis_config.yaml + cat ./dist/example_redis_config.yaml + - name: "Run end-to-end tests" + run: | + chihaya --config=./dist/example_redis_config.yaml --debug & + pid=$! + sleep 2 + chihaya e2e --debug + kill $pid + + image-build: + name: "Docker Build" + runs-on: "ubuntu-latest" + steps: + - uses: "actions/checkout@v2" + - uses: "docker/setup-qemu-action@v1" + - uses: "docker/setup-buildx-action@v1" + with: + driver-opts: "image=moby/buildkit:master" + - uses: "docker/build-push-action@v1" + with: + push: false + tags: "latest" + + helm: + name: "Helm Template" + runs-on: "ubuntu-latest" + steps: + - uses: "actions/checkout@v2" + - name: "Install Helm" + uses: "engineerd/configurator@v0.0.5" + with: + name: "helm" + pathInArchive: "linux-amd64/helm" + fromGitHubReleases: true + repo: "helm/helm" + version: "^v3" + urlTemplate: "https://get.helm.sh/helm-{{version}}-linux-amd64.tar.gz" + token: "${{ secrets.GITHUB_TOKEN }}" + - name: "Run `helm template`" + working-directory: "./dist/helm/chihaya" + run: "helm template . --debug" diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml new file mode 100644 index 0000000..a64509e --- /dev/null +++ b/.github/workflows/lint.yaml @@ -0,0 +1,86 @@ +--- +name: "Lint" +on: + push: + branches: + - "!dependabot/*" + - "main" + pull_request: + branches: ["*"] +jobs: + go-mod-tidy: + name: "Lint Go Modules" + runs-on: "ubuntu-latest" + steps: + - uses: "actions/checkout@v2" + - uses: "actions/setup-go@v2" + with: + go-version: "^1.17" + - name: "Run `go mod tidy`" + run: "go mod tidy && bash -c '[ $(git status --porcelain | tee /dev/fd/2 | wc -c) -eq 0 ]'" + + go-fmt: + name: "Format Go" + runs-on: "ubuntu-latest" + steps: + - uses: "actions/checkout@v2" + - uses: "actions/setup-go@v2" + with: + go-version: "^1.17" + - name: "Install gofumpt" + run: "go install mvdan.cc/gofumpt@latest" + - name: "Run `gofumpt`" + run: | + GOFUMPT_OUTPUT="$(find . -iname '*.go' -type f | xargs gofumpt -d)" + if [ -n "$GOFUMPT_OUTPUT" ]; then + echo "The following files are not correctly formatted:" + echo "${GOFUMPT_OUTPUT}" + exit 1 + fi + + go-lint: + name: "Lint Go" + runs-on: "ubuntu-latest" + steps: + - uses: "actions/checkout@v2" + - uses: "actions/setup-go@v2" + with: + go-version: "^1.17" + - uses: "golangci/golangci-lint-action@v2" + with: + version: "v1.43" + skip-go-installation: true + skip-pkg-cache: true + skip-build-cache: false + + extra-lint: + name: "Lint YAML & Markdown" + runs-on: "ubuntu-latest" + steps: + - uses: "actions/checkout@v2" + - uses: "bewuethr/yamllint-action@v1.1.1" + with: + config-file: ".yamllint" + - uses: "nosborn/github-action-markdown-cli@v2.0.0" + with: + files: "." + config_file: ".markdownlint.yaml" + + codeql: + name: "Analyze with CodeQL" + runs-on: "ubuntu-latest" + permissions: + actions: "read" + contents: "read" + security-events: "write" + strategy: + fail-fast: false + matrix: + language: ["go"] + steps: + - uses: "actions/checkout@v2" + - uses: "github/codeql-action/init@v1" + with: + languages: "${{ matrix.language }}" + - uses: "github/codeql-action/autobuild@v1" + - uses: "github/codeql-action/analyze@v1" diff --git a/README.md b/README.md index 6efc440..5221d08 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Chihaya -[![Build Status](https://github.com/chihaya/chihaya/workflows/CI/badge.svg)](https://github.com/chihaya/chihaya/actions) -[![Docker Repository on Quay.io](https://quay.io/repository/jzelinskie/chihaya/status "Docker Repository on Quay.io")](https://quay.io/repository/jzelinskie/chihaya) +[![Build Status](https://github.com/chihaya/chihaya/workflows/Build%20&%20Test/badge.svg)](https://github.com/chihaya/chihaya/actions) +[![Container Image](https://img.shields.io/github/v/release/chihaya/chihaya?color=%232496ED&label=container&logo=docker "Container Image")](https://quay.io/repository/jzelinskie/chihaya?tab=tags) [![GoDoc](https://godoc.org/github.com/chihaya/chihaya?status.svg)](https://godoc.org/github.com/chihaya/chihaya) [![License](https://img.shields.io/badge/license-BSD-blue.svg)](https://en.wikipedia.org/wiki/BSD_licenses#2-clause_license_.28.22Simplified_BSD_License.22_or_.22FreeBSD_License.22.29) [![IRC Channel](https://img.shields.io/badge/IRC-%23chihaya-%235555ff.svg "IRC Channel")](https://web.libera.chat/#chihaya)