Gate the test matrix and retry setup-uv's flaky manifest fetch (#3080)

This commit is contained in:
Max 2026-07-09 12:32:53 +01:00 • committed by GitHub
commit 148278e07f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 55 additions and 7 deletions

View file

@ -17,10 +17,23 @@ jobs:
with: with:
persist-credentials: false persist-credentials: false
- uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 # setup-uv's manifest fetch is a single request with a hard 5s timeout
# (astral-sh/setup-uv#869); retry once. Drop when upstream adds a retry.
- name: Install uv
id: setup-uv
continue-on-error: true
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
with: with:
enable-cache: true enable-cache: true
version: 0.9.5 version: 0.9.5
- name: Install uv (retry)
if: steps.setup-uv.outcome == 'failure'
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
with:
enable-cache: true
version: 0.9.5
- name: Install dependencies - name: Install dependencies
run: uv sync --frozen --all-extras --python 3.10 run: uv sync --frozen --all-extras --python 3.10
@ -44,8 +57,8 @@ jobs:
name: test (${{ matrix.python-version }}, ${{ matrix.dep-resolution.name }}, ${{ matrix.os }}) name: test (${{ matrix.python-version }}, ${{ matrix.dep-resolution.name }}, ${{ matrix.os }})
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
timeout-minutes: 10 timeout-minutes: 10
continue-on-error: true
strategy: strategy:
fail-fast: false
matrix: matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
dep-resolution: dep-resolution:
@ -60,7 +73,18 @@ jobs:
with: with:
persist-credentials: false persist-credentials: false
# setup-uv's manifest fetch is a single request with a hard 5s timeout
# (astral-sh/setup-uv#869); retry once. Drop when upstream adds a retry.
- name: Install uv - name: Install uv
id: setup-uv
continue-on-error: true
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
with:
enable-cache: true
version: 0.9.5
- name: Install uv (retry)
if: steps.setup-uv.outcome == 'failure'
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
with: with:
enable-cache: true enable-cache: true
@ -92,7 +116,19 @@ jobs:
with: with:
persist-credentials: false persist-credentials: false
- uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 # setup-uv's manifest fetch is a single request with a hard 5s timeout
# (astral-sh/setup-uv#869); retry once. Drop when upstream adds a retry.
- name: Install uv
id: setup-uv
continue-on-error: true
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
with:
enable-cache: true
version: 0.9.5
- name: Install uv (retry)
if: steps.setup-uv.outcome == 'failure'
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
with: with:
enable-cache: true enable-cache: true
version: 0.9.5 version: 0.9.5
@ -115,7 +151,19 @@ jobs:
with: with:
persist-credentials: false persist-credentials: false
- uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 # setup-uv's manifest fetch is a single request with a hard 5s timeout
# (astral-sh/setup-uv#869); retry once. Drop when upstream adds a retry.
- name: Install uv
id: setup-uv
continue-on-error: true
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
with:
enable-cache: true
version: 0.9.5
- name: Install uv (retry)
if: steps.setup-uv.outcome == 'failure'
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
with: with:
enable-cache: true enable-cache: true
version: 0.9.5 version: 0.9.5

View file

@ -39,9 +39,9 @@ the publish job — `skip-existing` makes it skip whatever already landed. The
commit — and therefore the README PyPI publishes — names the version commit — and therefore the README PyPI publishes — names the version
being released. When entering a new phase (alpha → beta → rc), update being released. When entering a new phase (alpha → beta → rc), update
the banner wording too. the banner wording too.
2. Check the full test matrix is green on the release commit. The matrix runs 2. Check the full test matrix is green on the release commit. The publish
with `continue-on-error`, so a green workflow run does not mean the tests workflow re-runs the checks and blocks publishing until they pass, so a
passed — check the individual jobs. red leg there means re-running the failed jobs on the Publishing run.
3. Create the release as a pre-release, passing the exact commit verified in 3. Create the release as a pre-release, passing the exact commit verified in
step 2 as `--target` (otherwise the tag is created from whatever `main`'s step 2 as `--target` (otherwise the tag is created from whatever `main`'s
HEAD is by then). The tagged commit determines everything about the HEAD is by then). The tagged commit determines everything about the