diff --git a/.github/workflows/tests-template.yaml b/.github/workflows/tests-template.yaml new file mode 100644 index 000000000000..9fc418b13e7d --- /dev/null +++ b/.github/workflows/tests-template.yaml @@ -0,0 +1,71 @@ +--- +name: Reusable Tests Workflow +on: + workflow_call: + inputs: + arch: + required: true + type: string + runs-on: + required: true + type: string + targets: + required: false + type: string +permissions: read-all + +jobs: + test: + runs-on: ${{ inputs.runs-on }} + # this is to prevent arm64 jobs from running at forked projects + if: inputs.arch == 'amd64' || github.repository == 'etcd-io/etcd' + strategy: + fail-fast: false + matrix: + target: ${{ fromJSON(inputs.targets) }} + steps: + - uses: actions/checkout@v2 + - id: goversion + run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" + - uses: actions/setup-go@v2 + with: + go-version: ${{ steps.goversion.outputs.goversion }} + - run: date + - env: + TARGET: ${{ matrix.target }} + run: | + set -euo pipefail + + echo "${TARGET}" + case "${TARGET}" in + linux-integration-1-cpu) + GOARCH=${{ inputs.arch }} CPU=1 RACE='false' make test-integration + ;; + linux-integration-2-cpu) + GOARCH=${{ inputs.arch }} CPU=2 RACE='false' make test-integration + ;; + linux-integration-4-cpu) + GOARCH=${{ inputs.arch }} CPU=4 RACE='false' make test-integration + ;; + linux-unit-4-cpu-race) + GOARCH=${{ inputs.arch }} RACE='true' CPU='4' GO_TEST_FLAGS='-p=2' make test-unit + ;; + linux-386-unit-1-cpu) + GOOS=linux GOARCH=386 CPU=1 GO_TEST_FLAGS='-p=4' make test-unit + ;; + all-build) + GOARCH=amd64 PASSES='build' ./test.sh + GOARCH=386 PASSES='build' ./test.sh + GO_BUILD_FLAGS='-v -mod=readonly' GOOS=darwin GOARCH=amd64 ./build.sh + GO_BUILD_FLAGS='-v -mod=readonly' GOOS=darwin GOARCH=arm64 ./build.sh + GO_BUILD_FLAGS='-v -mod=readonly' GOOS=windows GOARCH=amd64 ./build.sh + GO_BUILD_FLAGS='-v -mod=readonly' GOARCH=arm ./build.sh + GO_BUILD_FLAGS='-v -mod=readonly' GOARCH=arm64 ./build.sh + GO_BUILD_FLAGS='-v -mod=readonly' GOARCH=ppc64le ./build.sh + GO_BUILD_FLAGS='-v -mod=readonly' GOARCH=s390x ./build.sh + ;; + *) + echo "Failed to find target" + exit 1 + ;; + esac diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 5145d2c8d1f2..01bccb64348b 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -1,65 +1,23 @@ name: Tests on: [push, pull_request] jobs: - test: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - target: - - linux-amd64-fmt - - linux-amd64-integration-1-cpu - - linux-amd64-integration-2-cpu - - linux-amd64-integration-4-cpu - - linux-amd64-unit-4-cpu-race - - all-build - - linux-386-unit-1-cpu - steps: - - uses: actions/checkout@v2 - - id: goversion - run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" - - uses: actions/setup-go@v2 - with: - go-version: ${{ steps.goversion.outputs.goversion }} - - run: date - - env: - TARGET: ${{ matrix.target }} - run: | - set -euo pipefail - - echo "${TARGET}" - case "${TARGET}" in - linux-amd64-fmt) - GOARCH=amd64 PASSES='fmt bom dep' ./test.sh - ;; - linux-amd64-integration-1-cpu) - GOARCH=amd64 CPU=1 RACE='false' make test-integration - ;; - linux-amd64-integration-2-cpu) - GOARCH=amd64 CPU=2 RACE='false' make test-integration - ;; - linux-amd64-integration-4-cpu) - GOARCH=amd64 CPU=4 RACE='false' make test-integration - ;; - linux-amd64-unit-4-cpu-race) - GOARCH=amd64 RACE='true' CPU='4' GO_TEST_FLAGS='-p=2' make test-unit - ;; - all-build) - GOARCH=amd64 PASSES='build' ./test.sh - GOARCH=386 PASSES='build' ./test.sh - GO_BUILD_FLAGS='-v -mod=readonly' GOOS=darwin GOARCH=amd64 ./build.sh - GO_BUILD_FLAGS='-v -mod=readonly' GOOS=darwin GOARCH=arm64 ./build.sh - GO_BUILD_FLAGS='-v -mod=readonly' GOOS=windows GOARCH=amd64 ./build.sh - GO_BUILD_FLAGS='-v -mod=readonly' GOARCH=arm ./build.sh - GO_BUILD_FLAGS='-v -mod=readonly' GOARCH=arm64 ./build.sh - GO_BUILD_FLAGS='-v -mod=readonly' GOARCH=ppc64le ./build.sh - GO_BUILD_FLAGS='-v -mod=readonly' GOARCH=s390x ./build.sh - ;; - linux-386-unit-1-cpu) - GOARCH=386 RACE='false' CPU='1' GO_TEST_FLAGS='-p=4' make test-unit - ;; - *) - echo "Failed to find target" - exit 1 - ;; - esac + amd64: + uses: ./.github/workflows/tests-template.yaml + with: + arch: amd64 + runs-on: ubuntu-latest + targets: "['linux-integration-1-cpu', + 'linux-integration-2-cpu', + 'linux-integration-4-cpu', + 'linux-unit-4-cpu-race', + 'linux-386-unit-1-cpu', + 'all-build']" + arm64: + uses: ./.github/workflows/tests-template.yaml + with: + arch: arm64 + runs-on: actuated-arm64-8cpu-32gb + targets: "['linux-integration-1-cpu', + 'linux-integration-2-cpu', + 'linux-integration-4-cpu', + 'linux-unit-4-cpu-race']"