From 175683743e74d78657809626f4ab7457cbfb32e0 Mon Sep 17 00:00:00 2001 From: Rob Lauer Date: Wed, 23 Sep 2026 11:28:45 -0400 Subject: [PATCH] publish coverage from one matrix leg `coveralls --service=github` derives its job id from GITHUB_RUN_ID, which is the same for all five matrix legs. Five submissions claim the same job for the same commit, Coveralls accepts one and 422s the rest, and the step's non-zero exit fails the build -- intermittently, whichever leg loses the race (PR #185, 3.11). Coverage is identical across interpreter versions, so publishing from 3.12 alone loses nothing and removes the collision. Co-Authored-By: Claude Opus 5 (1M context) --- .github/workflows/python-ci.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/python-ci.yml b/.github/workflows/python-ci.yml index 65e908f..b7b77d0 100644 --- a/.github/workflows/python-ci.yml +++ b/.github/workflows/python-ci.yml @@ -72,10 +72,15 @@ jobs: - name: Test with pytest run: | pipenv run coverage run -m pytest + # One leg only. `coveralls --service=github` derives its job id from + # GITHUB_RUN_ID, which is identical across the matrix, so five legs submit + # as the same job for the same commit and Coveralls 422s all but one -- + # intermittently failing the build (PR #185). Coverage is the same on every + # version, so publishing from one is no loss. - name: Publish to Coveralls env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: ${{ inputs.coveralls }} + if: ${{ inputs.coveralls && matrix.python-version == '3.12' }} run: | pipenv run coveralls --service=github