--- name: Reusable Tests Workflow on: workflow_call: inputs: arch: required: true type: string runs-on: required: true 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: - 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@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.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) # skip running single-threaded 386 unit tests only if arch is arm64 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@c7d193f32edcb7bfad88892161225aeda64e9392 # v4.0.0 if: always() with: name: "${{ matrix.target }}" path: ./**/junit_*.xml