Split the release tests over six runners, and stop repeating the merge run's checks on the release commit
Les mainteneurs répondent en général sous 2 jours
Une pull request liée a déjà été fusionnée.
- #4134 par @anth-volk — fusionnée
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 25/100
Piste de recherche
Start with the release workflow and the existing release tests, then inspect the checks and merge-run status referenced by issues #4124 and #4129. Map how the release commit is created and how make test collects tests so the six shards can be deterministic and a completeness check can detect missing or repeated tests. Done means eligible release commits skip the repeated checks only when the merge checks passed, all tests run exactly once across six runners, and failures block the release.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Problem
Once the release tests run in their own job (#4124) and beside the database jobs (#4129), a Public API release run is still about 18 minutes from its start to the staging Cloud Run deploy, for two reasons that only help together:
- The release run repeats the merge run's checks. It runs lint, the quality guards, both Alembic checks and the cross-database integration tests again, about 10 minutes before
publish-git-tagand the staging database jobs can start. The merge run passed them on a tree that differs only in release files:versioningchanges the version inpyproject.toml, refreshesuv.lock, rebuildsCHANGELOG.mdand removes the fragments it built. Nothing checks that the release commit changes nothing else, so today the repeat is the only protection against, for example, auv lockthat re-resolved dependencies. - The release test suite runs in one process.
make test(about 3,900 tests) takes 14 to 18 minutes on one runner, so skipping the checks alone would leave the tests as the longer branch.
Expected behaviour
- A new job checks the release commit before the checks start. The release run skips lint, the quality guards, both Alembic checks and the integration tests only when:
- the release commit changes nothing but release files: the
[project]version inpyproject.toml, the project's own version entry inuv.lock,CHANGELOG.md, and fragments it removes fromchangelog.d/; and - the merge commit's Push run passed all five checks.
- the release commit changes nothing but release files: the
- If either fails, the checks run as today, and
publish-git-tagrequires the same ones to pass as today. - The release tests run on six runners, split deterministically so that every test runs exactly once, and a check fails the release when any collected test did not run in exactly one shard.
- No new dependency.
Expected saving: about 10 to 12 minutes per release beyond #4124 and #4129 (estimate), with the staging deploy starting about 7 minutes into the release run instead of about 19.
- Langage dominant
- Python
- Étoiles
- 18
- Forks
- 33
- Merge moyen
- 2 j 15 h
- PR mergées (30 j)
- 110
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de PolicyEngine/policyengine-api
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
PolicyEngine/policyengine-api#4037 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 1/5 1-3 heures Accessibilité débutants 88/100
PolicyEngine/policyengine-api#3911 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 82/100
PolicyEngine/policyengine-api#3910 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 3/5 1-2 jours Accessibilité débutants 57/100
PolicyEngine/policyengine-api#4221 ·
Les mainteneurs répondent en général sous 2 jours
-
Stop logging refused economy requests at ERRORPeut-être pris @anth-volk l’a pris aujourd’hui. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
PolicyEngine/policyengine-api#4219 ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de PolicyEngine/policyengine-api
Issues similaires
-
docs size:S
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
strawberry-graphql/strawberry#4794 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
dataforgoodfr/cetolog#21 ·
-
security_citations_test fails against ecc 2026.11.6: SECURITY.md quotes ecc v2026.11.2's linesOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
btclib-org/btclib#2932 ·
Les mainteneurs répondent en général sous 1 jour