name: go-tests on: pull_request: branches-ignore: - stable-website - 'docs/**' - 'ui/**' - 'mktg-**' # Digital Team Terraform-generated branches' prefix - 'backport/docs/**' - 'backport/ui/**' - 'backport/mktg-**' permissions: contents: read env: TEST_RESULTS: /tmp/test-results GOTESTSUM_VERSION: 1.8.2 jobs: setup: name: Setup runs-on: ubuntu-latest outputs: compute-small: ${{ steps.setup-outputs.outputs.compute-small }} compute-medium: ${{ steps.setup-outputs.outputs.compute-medium }} compute-large: ${{ steps.setup-outputs.outputs.compute-large }} compute-xl: ${{ steps.setup-outputs.outputs.compute-xl }} steps: - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # pin@v3.3.0 - id: setup-outputs name: Setup outputs run: ./.github/scripts/get_runner_classes.sh check-go-mod: needs: - setup uses: ./.github/workflows/reusable-check-go-mod.yml with: runs-on: ${{ needs.setup.outputs.compute-small }} check-generated-protobuf: needs: - setup runs-on: ${{ fromJSON(needs.setup.outputs.compute-small) }} steps: - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # pin@v3.3.0 - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # pin@v3.5.0 with: go-version-file: 'go.mod' - run: make proto-tools name: Install protobuf - run: make proto-format name: "Protobuf Format" - run: make --always-make proto - run: | if ! git diff --exit-code; then echo "Generated code was not updated correctly" exit 1 fi - run: make proto-lint name: "Protobuf Lint" - name: Notify Slack if: failure() run: .github/scripts/notify_slack.sh check-generated-deep-copy: needs: - setup runs-on: ${{ fromJSON(needs.setup.outputs.compute-small) }} steps: - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # pin@v3.3.0 - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # pin@v3.5.0 with: go-version-file: 'go.mod' - run: make codegen-tools name: Install deep-copy - run: make --always-make deep-copy - run: | if ! git diff --exit-code; then echo "Generated code was not updated correctly" exit 1 fi - name: Notify Slack if: failure() run: .github/scripts/notify_slack.sh lint-enums: needs: - setup runs-on: ${{ fromJSON(needs.setup.outputs.compute-small) }} steps: - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # pin@v3.3.0 - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # pin@v3.5.0 with: go-version-file: 'go.mod' - run: go install github.com/reillywatson/enumcover/cmd/enumcover@master && enumcover ./... - name: Notify Slack if: failure() run: .github/scripts/notify_slack.sh lint-container-test-deps: needs: - setup runs-on: ${{ fromJSON(needs.setup.outputs.compute-small) }} steps: - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # pin@v3.3.0 - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # pin@v3.5.0 with: go-version-file: 'go.mod' - run: make lint-container-test-deps - name: Notify Slack if: failure() run: .github/scripts/notify_slack.sh lint-consul-retry: needs: - setup runs-on: ${{ fromJSON(needs.setup.outputs.compute-small) }} steps: - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # pin@v3.3.0 - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # pin@v3.5.0 with: go-version-file: 'go.mod' - run: go install github.com/hashicorp/lint-consul-retry@master && lint-consul-retry - name: Notify Slack if: failure() run: .github/scripts/notify_slack.sh lint: needs: - setup uses: ./.github/workflows/reusable-lint.yml with: runs-on: ${{ needs.setup.outputs.compute-xl }} lint-32bit: needs: - setup uses: ./.github/workflows/reusable-lint.yml with: go-arch: "386" runs-on: ${{ needs.setup.outputs.compute-xl }} # create a development build dev-build: needs: - setup uses: ./.github/workflows/reusable-dev-build.yml with: runs-on: ${{ needs.setup.outputs.compute-xl }} # TODO(JM): - linux arm64 is not available in our self-hosted runners # they are currently on the roadmap. # # create a development build for arm64 # dev-build-arm64: # needs: # - setup # uses: ./.github/workflows/reusable-dev-build.yml # with: # uploaded-binary-name: 'consul-bin-arm64' # # runs-on: ${{ needs.setup.outputs.compute-xl-arm64 }} # go-test-arm64: # # TODO(JM): Fix to run on arm64 # needs: # - setup # - dev-build-arm64 # uses: ./.github/workflows/reusable-unit-split.yml # with: # directory: . # uploaded-binary-name: 'consul-bin-arm64' # runner-count: 12 # # runs-on: ${{ needs.setup.outputs.compute-xl-arm64 }} # go-test-flags: 'if ! [[ "$GITHUB_REF_NAME" =~ ^main$|^release/ ]]; then export GO_TEST_FLAGS="-short"; fi' go-test: needs: - setup - dev-build uses: ./.github/workflows/reusable-unit-split.yml with: directory: . runner-count: 12 runs-on: ${{ needs.setup.outputs.compute-xl }} go-test-race: needs: - setup - dev-build uses: ./.github/workflows/reusable-unit.yml with: directory: . go-test-flags: 'GO_TEST_FLAGS="-race -gcflags=all=-d=checkptr=0"' package-names-command: "go list ./... | grep -E -v '^github.com/hashicorp/consul/agent(/consul|/local|/routine-leak-checker)?$' | grep -E -v '^github.com/hashicorp/consul/command/'" runs-on: ${{ needs.setup.outputs.compute-xl }} go-test-32bit: needs: - setup - dev-build uses: ./.github/workflows/reusable-unit.yml with: directory: . go-arch: "386" go-test-flags: 'export GO_TEST_FLAGS="-short"' runs-on: ${{ needs.setup.outputs.compute-xl }} go-test-envoyextensions: needs: - setup - dev-build uses: ./.github/workflows/reusable-unit.yml with: directory: envoyextensions runs-on: ${{ needs.setup.outputs.compute-xl }} go-test-troubleshoot: needs: - setup - dev-build uses: ./.github/workflows/reusable-unit.yml with: directory: troubleshoot runs-on: ${{ needs.setup.outputs.compute-xl }} go-test-api-1-19: needs: - setup - dev-build uses: ./.github/workflows/reusable-unit.yml with: directory: api runs-on: ${{ needs.setup.outputs.compute-xl }} go-test-api-1-20: needs: - setup - dev-build uses: ./.github/workflows/reusable-unit.yml with: directory: api runs-on: ${{ needs.setup.outputs.compute-xl }} go-test-sdk-1-19: needs: - setup - dev-build uses: ./.github/workflows/reusable-unit.yml with: directory: sdk runs-on: ${{ needs.setup.outputs.compute-xl }} go-test-sdk-1-20: needs: - setup - dev-build uses: ./.github/workflows/reusable-unit.yml with: directory: sdk runs-on: ${{ needs.setup.outputs.compute-xl }} noop: runs-on: ubuntu-latest steps: - run: "echo ok"