diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 3225ddb..72ee3fc 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -313,6 +313,16 @@ jobs: binaries_checksums: ${{ steps.output-checksums.outputs.checksums }} released_at: ${{ steps.release-meta.outputs.released_at }} steps: + # Records the core count so a run can be read correctly: GitHub bills the + # standard macOS tier as "3-core or 4-core", and a 4-core runner would admit + # all four targets even without -p, masking the flag's effect. + - name: Report runner hardware + shell: bash + run: | + echo "ncpu=$(sysctl -n hw.ncpu) logical=$(sysctl -n hw.logicalcpu) physical=$(sysctl -n hw.physicalcpu)" + echo "cpu=$(sysctl -n machdep.cpu.brand_string 2>/dev/null || echo unknown)" + echo "mem_bytes=$(sysctl -n hw.memsize)" + - name: Checkout caller repo uses: actions/checkout@v5 with: @@ -417,12 +427,17 @@ jobs: role-to-assume: arn:aws:iam::025044153841:role/${{ steps.role-names.outputs.gha_artifacts_role_name }} aws-region: us-west-2 + # -p pins GoReleaser's build semaphore, which otherwise defaults to + # runtime.GOMAXPROCS(0) (cmd/release.go). The standard macOS fleet is mixed + # (GitHub bills it as "3-core or 4-core"), so the number of the four targets + # that run concurrently varies by whichever machine a release lands on. + # Pinning it makes the release reproducible instead of a hardware lottery. - name: Run GoReleaser uses: goreleaser/goreleaser-action@v6 with: workdir: _caller version: "~> v2.13" - args: release --clean --config ../_workflows/_generated/.goreleaser.binaries.yaml + args: release --clean -p 3 --config ../_workflows/_generated/.goreleaser.binaries.yaml env: GITHUB_TOKEN: ${{ secrets.RELENG_GITHUB_TOKEN }} GORELEASER_CURRENT_TAG: ${{ inputs.tag }}