Chapitre 10 — CI/CD de tout l’écosystème#

Tableau récapitulatif de tous les workflows CI de l’écosystème.

Plan#

#FichierSujet
0101-matrix.mdTableau récapitulatif de tous les workflows.
0202-ocarina-workflows.mdocarina : main_ci.yml, dev_ci.yml, unstable_python_full_build.yml
0303-example-workflows.mdocarina-example : main_ci.yml, dev_ci.yml, e2e.yml
0404-ai-workflows.mdocarina-with-ai-example : ai_proof_ci.yml, ai_proof_e2e.yml
0505-igoristan-workflows.mdigoristan : ci-pr.yml, deploy.yml
0606-holy-book-workflow.mdocarina-holy-book : deploy.yml
0707-tests-workers-vercel.mdtests-workers : pas de CI GitHub, déploiement directement pris en charge par Vercel.

Vue d’ensemble#

DépôtWorkflowsTotal
ocarinamain_ci + dev_ci + unstable_python_full_build3
ocarina-examplemain_ci + dev_ci + e2e3
ocarina-with-ai-exampleai_proof_ci + ai_proof_e2e2
igoristanci-pr + deploy2
ocarina-holy-bookdeploy1
tests-workersaucun (délégué à Vercel)0

+ ocarina/.github/actions/allure-history/action.yml.

Discipline transversale#

ConventionBénéfice
workflow_dispatch toujours présentTous les workflows peuvent être lancés manuellement
Cache .venvnode_modulesTous les workflows cachent le venv ou les deps node
Stratégie “matrix”Workflows dupliqués parallélisés pour tester la compatibilité avec plusieurs OS et plusieurs navigateurs web : ocarina (ubuntu+windows). Les autres : ubuntu seul (suffit). ocarina-with-ai-example : matrix Firefox+Chrome.
fail-fast: falseLes workflows instanciés avec strategy: matrix ne se court-circuitent pas entre eux
Artifacts uploadLes tests e2e uploadent toutes les ressources qu’ils génèrent (.screenshots/, .ocarina_logs/, .reports/)
if: always()Les upload ne sont pas court-circuités en cas de fail de test e2e
environment: pour gestion des secretsOC (ocarina-example), github-pages (déploiements)
concurrency: pagesSécurise les race conditions
defaults.run.shell: bashStandardisation du shell cross-OS

Léger en PR, lourd en manuel#

TriggerCharge
push/PRLint + typecheck + tests unitaires (rapide)
workflow_dispatch (manuel)e2e complet (gourmand)
Cron (mensuel)unstable_python_full_build.yml sur Python 3.15-dev