Chapter 10 — CI/CD across the whole ecosystem#
Summary table of every CI workflow in the ecosystem.
Outline#
Overview#
| Repo | Workflows | Total |
|---|
ocarina | main_ci + dev_ci + unstable_python_full_build | 3 |
ocarina-example | main_ci + dev_ci + e2e | 3 |
ocarina-with-ai-example | ai_proof_ci + ai_proof_e2e | 2 |
igoristan | ci-pr + deploy | 2 |
ocarina-holy-book | deploy | 1 |
tests-workers | none (delegated to Vercel) | 0 |
+ ocarina/.github/actions/allure-history/action.yml.
Cross-cutting discipline#
| Convention | Benefit |
|---|
workflow_dispatch always present | Every workflow can be launched manually |
.venv / node_modules cache | Every workflow caches the venv or node deps |
| “matrix” strategy | Duplicated 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: false | strategy: matrix workflows don’t short-circuit each other |
| Artifacts upload | E2E tests upload everything they generate (.screenshots/, .ocarina_logs/, .reports/) |
if: always() | Uploads aren’t short-circuited on e2e test fail |
environment: for secrets | OC (ocarina-example), github-pages (deployments) |
concurrency: pages | Guards against race conditions |
defaults.run.shell: bash | Cross-OS shell standardization |
Light on PR, heavy on manual#
| Trigger | Load |
|---|
| push/PR | Lint + typecheck + unit tests (fast) |
workflow_dispatch (manual) | Full e2e (heavy) |
| Cron (monthly) | unstable_python_full_build.yml on Python 3.15-dev |