Release PyPI¶
Cette procédure publie les deux distributions publiques :
arclith, le framework Python.arclith-cli, la CLI de scaffold.
Les archives sont publiées par GitHub Actions via PyPI Trusted Publishing. Aucun token PyPI ne doit être stocké dans les secrets du dépôt.
Préparer la release¶
- Partir d'un
mainà jour et propre. - Mettre à jour les versions :
pyproject.tomlpourarclith.cli/pyproject.tomletcli/arclith_cli/__init__.pypourarclith-cli.- La dépendance
arclith>=...danscli/pyproject.toml. - Mettre à jour
CHANGELOG.md. - Régénérer les locks :
Valider localement¶
Depuis la racine du dépôt :
| Bash | |
|---|---|
Les dossiers dist/ sont ignorés par Git. Ils peuvent être supprimés après la validation locale.
Configurer PyPI Trusted Publishing¶
Chaque projet PyPI doit déclarer son propre Trusted Publisher, car le jeton OIDC est borné au projet PyPI ciblé.
| Projet PyPI | Owner GitHub | Repository | Workflow filename | Environment |
|---|---|---|---|---|
arclith |
karned-rekipe |
arclith |
publish.yml |
pypi |
arclith-cli |
karned-rekipe |
arclith |
publish.yml |
pypi-cli |
Le fichier correspondant dans le dépôt est .github/workflows/publish.yml. Le champ PyPI demande
le nom du fichier workflow, pas un token GitHub. GitHub fournit un jeton OIDC court-vivant au job
grâce à la permission id-token: write, puis PyPI l'échange contre un jeton de publication limité
au projet ciblé.
Si arclith-cli utilise l'environnement pypi au lieu de pypi-cli, PyPI rejette la publication
avec une erreur Invalid API Token: OIDC scoped token is not valid for project 'arclith-cli'.
Publier¶
Une fois la PR de release mergée :
| Bash | |
|---|---|
Le tag déclenche .github/workflows/publish.yml. Le workflow exécute :
make precommit.make coverage.- La construction des distributions
arclithetarclith-cli. - La publication de chaque distribution dans son job PyPI dédié.
Vérifier après publication¶
Contrôler les deux pages PyPI :
Puis valider depuis un environnement consommateur isolé :