Chapter 10 — CI/CD across the whole ecosystem#

Summary table of every CI workflow in the ecosystem.

Outline#

#FileTopic
0101-matrix.mdSummary table of every workflow.
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: no GitHub CI, deployment handled directly by Vercel.

Overview#

RepoWorkflowsTotal
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-workersnone (delegated to Vercel)0

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

Cross-cutting discipline#

ConventionBenefit
workflow_dispatch always presentEvery workflow can be launched manually
.venv / node_modules cacheEvery workflow caches the venv or node deps
“matrix” strategyDuplicated workflows parallelized to test compatibility across multiple OSes and browsers: ocarina (ubuntu+windows). The others: ubuntu only (enough). ocarina-with-ai-example: Firefox+Chrome matrix.
fail-fast: falsestrategy: matrix workflows don’t short-circuit each other
Artifacts uploadE2E tests upload everything they generate (.screenshots/, .ocarina_logs/, .reports/)
if: always()Uploads aren’t short-circuited on e2e test fail
environment: for secretsOC (ocarina-example), github-pages (deployments)
concurrency: pagesGuards against race conditions
defaults.run.shell: bashCross-OS shell standardization

Light on PR, heavy on manual#

TriggerLoad
push/PRLint + typecheck + unit tests (fast)
workflow_dispatch (manual)Full e2e (heavy)
Cron (monthly)unstable_python_full_build.yml on Python 3.15-dev