Diagram pipeline CI/CD
Peta visual dan rincian per jalur dari tahap alur kerja build, uji, lint, keamanan, dan publikasi yang mengawal setiap perubahan kode dan rilis.
Peta struktural alur kerja build · validasi · publikasi yang mengawal setiap perubahan pada ekosistem Apothem. Dokumen ini memasang permukaan visualisasi. Berkas alur kerja GitHub Actions yang dijelaskannya berada di .github/workflows/ (misalnya ci.yml dan release.yml), dan perkakas rilis berada di scripts/release/.
Bentuk pipeline
%%{ init: { "theme": "neutral" } }%%
%% verified: 2026-04-27 %%
%% provenance: pyproject.toml + scripts/dev/validate_ecosystem.py + scripts/dev/validate_hooks.py %%
%% cross-reference: site/content/docs/developer-guide.mdx (contributor workflow) %%
flowchart LR
accTitle: CI/CD pipeline shape
accDescr: Left-to-right flowchart of the apothem CI CD pipeline showing build, test, lint, type-check, security scan, docs build, package, sign, and publish stages with branch protection gates between them.
subgraph Trigger["Trigger surface"]
PR["Pull request opened or updated"]
PUSH["Push to main"]
TAG["Tag release vX.Y.Z"]
end
subgraph Static["Static analysis lane"]
LINT["Ruff lint + format check"]
TYPE["Mypy strict"]
FRONT["Frontmatter validator"]
end
subgraph Test["Test lane"]
PYTEST["pytest tests/hooks"]
ECO["validate_ecosystem.py"]
CHAOS["chaos_pass.py (CI quality job)"]
BENCH["src/apothem/benchmarks/ (unit tests in CI, bench_hooks in metrics job)"]
end
subgraph Security["Security lane"]
SECRETS["Secret scan"]
SBOM["SBOM generation (tags only)"]
LICENSE["License audit"]
end
subgraph Publish["Publish lane (tags only)"]
SIGN["Signed-tag verification"]
ATTEST["Provenance attestation"]
RELEASE["Release notes from CHANGELOG.md"]
end
DOCS["Project website publish"]
PR --> Static
PR --> Test
PR --> Security
PUSH --> Static
PUSH --> Test
PUSH --> Security
PUSH --> DOCS
TAG --> Static
TAG --> Test
TAG --> Security
TAG --> Publish
Static --> GATE{All lanes green?}
Test --> GATE
Security --> GATE
GATE -->|yes| MERGE[Merge / publish]
GATE -->|no| BLOCK[Block · surface failures · request fix]
Publish --> MERGEPeran jalur
- Jalur analisis statis — umpan balik cepat. Ruff mencakup gaya Python dan satu set aturan yang dikurasi; mypy menegakkan disiplin tipe pada tingkat strict; validator frontmatter mengawal kepatuhan skema artefak untuk aturan, skill, pekerja terdelegasi, dan command. markdownlint tidak termasuk dalam jalur ini: hook pre-commit miliknya berjalan di CI melalui alur kerja Markdown Lint ketika berkas Markdown berubah (lihat Konvensi Markdown).
- Jalur uji —
pytest tests/hooksmenjalankan runtime hook terhadap matriks peristiwa lengkap;validate_ecosystem.pyadalah gerbang struktural utama untuk konsistensi lintas-artefak;chaos_pass.pyberjalan di job kualitas CI pada push dan pull request kemain(difilter menurut jalur) untuk menangkap degradasi di bawah masukan yang terdegradasi. Driver benchmark per-kelas di bawahsrc/apothem/benchmarks/berjalan di CI melalui suite pytest dan melalui jobmetrics. Setiap eksekusi pytest penuh di CI mengumpulkantests/unit/test_benchmarks.py, yang memanggil setiap driver kecualibench_install.py. Jobmetricsmenjalankanscripts/dev/collect_metrics.py, yang menjalankanbench_hooks.py --jsondan mencatat hasilnya sebagaihook_e2e_ms.bench_tests.pydanbench_install.pyhanya mengukur eksekusi nyata di bawahmake benchmarks. Tidak ada workflow yang menjalankanmake benchmarks. - Jalur keamanan — gitleaks di
ci.ymlmenangkap kredensial yang tidak sengaja di-commit. Audit lisensi (license-audit.yml) gagal ketika sebuah dependensi memiliki lisensi di luar daftar izinnya. Audit ini berjalan mingguan dan ketika berkas dependensi atau lisensi berubah. Gerbang REUSE (reuse.yml) berjalan pada setiap perubahan dan gagal ketika sebuah berkas tidak memiliki baris lisensi atau sebuah ekspresi SPDX tidak dapat diurai.release.ymlmenghasilkan SBOM untuk setiap rilis yang diberi tag. - Jalur publikasi — workflow rilis dipicu oleh push tag; penerbit npm dan VS Code juga dapat dijalankan ulang melalui dispatch manual untuk tag yang sudah ada. Verifikasi tag yang ditandatangani memastikan asal-usul cabang rilis; catatan rilis berasal dari format Keep-A-Changelog
CHANGELOG.md. Situs web proyek dipublikasikan darisite/dist/ke target GitHub Pages pada push kemainyang menyentuh masukan build-nya, atau melalui dispatch manual.
Konfigurasi konkret
Berkas alur kerja yang sebenarnya (.github/workflows/ci.yml,
.github/workflows/release.yml, dst.) ada di dalam repositori. Diagram ini
mendefinisikan bentuk kanonik yang dicerminkan oleh setiap konfigurasi mendatang.
Referensi silang otoritatif
pyproject.toml— sumber kebenaran konfigurasi Ruff / mypy / pytest.scripts/dev/validate_ecosystem.py— gerbang lintas-artefak utama.scripts/dev/validate_hooks.py— validasi struktural khusus hook.scripts/dev/chaos_pass.py— sapuan adversarial pada setiap hook yang dikonfigurasi.src/apothem/benchmarks/— verifikator anggaran runtime per-kelas.site/content/docs/developer-guide.mdx— alur kerja kontributor yang berorientasi operator.CHANGELOG.md— sumber catatan rilis.
Konvensi Berlingkup-Repositori untuk Harness Asisten
Bagaimana apothem memmaterialisasikan konvensi operasi berlingkup-repositori — aturan, skill, dan definisi pekerja terdelegasi — ke dalam permukaan instruksi asli setiap harness (AGENTS.md dan padanan per-toolnya).
Referensi
Registri kelas artefak yang dapat dinavigasi dengan jalur dan tata letak di disk untuk aturan, perintah, skill, pekerja terdelegasi, hook, server MCP, pengaturan, dan output-style.