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-agency |
arclith |
publish.yml |
pypi |
arclith-cli |
karned-agency |
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é :
Pour vérifier le blueprint paramétré sans transport depuis les paquets publics :
Le smoke doit aussi vérifier le refus de l'affectation directe et de
model_copy(update={"status": ...}), puis la transition autorisée
draft -> submitted et le conflit de version du compare-and-swap.
Release 0.33.0 : autonomie et toolkit agent¶
Arclith 0.33.0 et arclith-cli 0.30.0 publient le toolkit agent portable
et la nouvelle identité Karned Agency. La CLI exige arclith>=0.33.0, génère
des liens canoniques vers le dépôt transféré et télécharge son implémentation de
référence depuis karned-agency/arclith-reference.
Cette release sert aussi de preuve de migration OIDC : les deux paquets sont
publiés depuis le dépôt transféré avec les environnements GitHub pypi et
pypi-cli. Après publication, vérifier les métadonnées de projet et les liens
sur PyPI, puis installer sans cache :
| Bash | |
|---|---|
Release 0.32.0 : catalogue complet¶
Arclith 0.32.0 et arclith-cli 0.29.0 publient Job, Synchronization et
Workflow, en complément de CRUD, Append-only et State-machine. La CLI exige
arclith>=0.32.0 ; les nouveaux projets reprennent la version du framework
installé comme minimum. Les formats et recettes historiques restent lisibles.
Après publication, installer les versions exactes depuis l'index officiel, sans cache ni source locale :
| Bash | |
|---|---|
Vérifier les six entrées du catalogue, puis générer un projet frais par blueprint et exécuter ses tests. Les guides Job, Synchronization et Workflow donnent les commandes et les specs publiques. Valider aussi les scénarios d'exécution : soumission Job idempotente, reprise incrémentale après page partielle, finalisation full et reprise Workflow après un checkpoint non confirmé avec la même clé d'exécution.
Les stores et runners mémoire restent non durables. La publication des paquets n'ajoute aucun transport ni adaptateur persistant aux projets consommateurs.