From 4b3124210a2aff1e14d7cab5c0414f3001cf44f8 Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Fri, 10 Nov 2023 15:23:34 -0800 Subject: [PATCH] github workflow: run arm64 tests on every push --- .github/workflows/tests-template.yaml | 67 +++++++++++++++++++++++++++ .github/workflows/tests.yaml | 62 ++++--------------------- 2 files changed, 76 insertions(+), 53 deletions(-) create mode 100644 .github/workflows/tests-template.yaml diff --git a/.github/workflows/tests-template.yaml b/.github/workflows/tests-template.yaml new file mode 100644 index 000000000000..e5f38e117c34 --- /dev/null +++ b/.github/workflows/tests-template.yaml @@ -0,0 +1,67 @@ +--- +name: Reusable Tests Workflow +on: + workflow_call: + inputs: + arch: + required: true + type: string +permissions: read-all + +jobs: + test: + # this is to prevent the job to run at forked projects + if: github.repository == 'etcd-io/etcd' + strategy: + fail-fast: false + matrix: + target: + - linux-${{ inputs.arch }}-integration-1-cpu + - linux-${{ inputs.arch }}-integration-2-cpu + - linux-${{ inputs.arch }}-integration-4-cpu + - linux-${{ inputs.arch }}-unit-4-cpu + - linux-386-unit-1-cpu + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - id: goversion + run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" + - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 + with: + go-version: ${{ steps.goversion.outputs.goversion }} + - env: + TARGET: ${{ matrix.target }} + run: | + set -euo pipefail + go clean -testcache + + mkdir "${TARGET}" + export JUNIT_REPORT_DIR=$(realpath ${TARGET}) + case "${TARGET}" in + linux-${{ inputs.arch }}-integration-1-cpu) + make gofail-enable + GOOS=linux GOARCH=${{ inputs.arch }} CPU=1 make test-integration + ;; + linux-${{ inputs.arch }}-integration-2-cpu) + make gofail-enable + GOOS=linux GOARCH=${{ inputs.arch }} CPU=2 make test-integration + ;; + linux-${{ inputs.arch }}-integration-4-cpu) + make gofail-enable + GOOS=linux GOARCH=${{ inputs.arch }} CPU=4 make test-integration + ;; + linux-${{ inputs.arch }}-unit-4-cpu) + GOOS=linux GOARCH=${{ inputs.arch }} CPU=4 GO_TEST_FLAGS='-p=2' make test-unit + ;; + linux-386-unit-1-cpu) + if [ "${{ inputs.arch }}" == "arm64" ]; then exit; fi + GOOS=linux GOARCH=386 CPU=1 GO_TEST_FLAGS='-p=4' make test-unit + ;; + *) + echo "Failed to find target" + exit 1 + ;; + esac + - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 + if: always() + with: + path: ./**/junit_*.xml diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 82081ee21285..c456368396f7 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -3,57 +3,13 @@ name: Tests on: [push, pull_request] permissions: read-all jobs: - test: + amd64: runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - target: - - linux-amd64-integration-1-cpu - - linux-amd64-integration-2-cpu - - linux-amd64-integration-4-cpu - - linux-amd64-unit-4-cpu - - linux-386-unit-1-cpu - steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - id: goversion - run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" - - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 - with: - go-version: ${{ steps.goversion.outputs.goversion }} - - env: - TARGET: ${{ matrix.target }} - run: | - set -euo pipefail - go clean -testcache - - mkdir "${TARGET}" - export JUNIT_REPORT_DIR=$(realpath ${TARGET}) - case "${TARGET}" in - linux-amd64-integration-1-cpu) - make gofail-enable - GOOS=linux GOARCH=amd64 CPU=1 make test-integration - ;; - linux-amd64-integration-2-cpu) - make gofail-enable - GOOS=linux GOARCH=amd64 CPU=2 make test-integration - ;; - linux-amd64-integration-4-cpu) - make gofail-enable - GOOS=linux GOARCH=amd64 CPU=4 make test-integration - ;; - linux-amd64-unit-4-cpu) - GOOS=linux GOARCH=amd64 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 - ;; - *) - echo "Failed to find target" - exit 1 - ;; - esac - - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 - if: always() - with: - path: ./**/junit_*.xml + uses: ./.github/workflows/tests-template.yaml + with: + arch: amd64 + arm64: + runs-on: actuated-arm64-8cpu-32gb + uses: ./.github/workflows/tests-template.yaml + with: + arch: arm64