--- name: Reusable Tests Workflow on: workflow_call: inputs: arch: required: true type: string # runs-on: # required: true # type: string permissions: read-all jobs: test: # this is to prevent arm64 jobs from running at forked projects if: inputs.arch == 'arm64' || github.repository == 'etcd-io/etcd' # this is to tune memory allocation of arm64 architecture runs-on: ${{ if inputs.arch == 'arm64' then 'actuated-arm64-8cpu-8gb' else inputs.runs-on end }} 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: - name: Collect Workflow Telemetry uses: catchpoint/workflow-telemetry-action@v1 - 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) # 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@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 if: always() with: path: ./**/junit_*.xml