--- name: Reusable unit test Workflow on: workflow_call: inputs: runs-on: required: false type: string default: ubuntu-latest targets: required: false type: string default: "['linux-unit-test-1-cpu','linux-unit-test-2-cpu','linux-unit-test-4-cpu']" permissions: read-all jobs: test-linux: # this is to prevent arm64 jobs from running at forked projects if: ${{ github.repository == 'etcd-io/bbolt' || inputs.runs-on == 'ubuntu-latest' }} strategy: fail-fast: false matrix: target: ${{ fromJSON(inputs.targets) }} runs-on: ${{ inputs.runs-on }} steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - id: goversion run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT" - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: ${{ steps.goversion.outputs.goversion }} - run: make fmt - env: TARGET: ${{ matrix.target }} run: | case "${TARGET}" in linux-unit-test-1-cpu) CPU=1 make test ;; linux-unit-test-2-cpu) CPU=2 make test ;; linux-unit-test-4-cpu) CPU=4 make test ;; linux-unit-test-4-cpu-race) CPU=4 ENABLE_RACE=true make test ;; *) echo "Failed to find target" exit 1 ;; esac - name: golangci-lint uses: golangci/golangci-lint-action@051d91933864810ecd5e2ea2cfd98f6a5bca5347 # v6.3.2 with: version: v1.61.0