Langsung ke konten utama

Pipeline CI

CI berjalan pada setiap push ke main dan setiap pull request. CI menggunakan cakupan cerdas untuk melewati job mahal ketika hanya area yang tidak terkait yang berubah.

Ikhtisar Job

JobTujuanKapan dijalankan
preflightMendeteksi perubahan khusus dokumen, cakupan yang berubah, ekstensi yang berubah, dan membangun manifes CISelalu pada push dan PR non-draf
security-fastDeteksi private key, audit workflow melalui zizmor, audit dependensi produksiSelalu pada push dan PR non-draf
build-artifactsMembangun dist/ dan Control UI sekali, mengunggah artefak yang dapat digunakan ulang untuk job downstreamPerubahan yang relevan dengan Node
checks-fast-coreJalur pemeriksaan Linux cepat seperti bundled/plugin-contract/protocolPerubahan yang relevan dengan Node
checks-node-extensionsShard pengujian bundled-plugin penuh di seluruh rangkaian ekstensiPerubahan yang relevan dengan Node
checks-node-core-testShard pengujian inti Node, tidak termasuk jalur channel, bundled, contract, dan extensionPerubahan yang relevan dengan Node
extension-fastPengujian terfokus hanya untuk bundled plugin yang berubahSaat perubahan ekstensi terdeteksi
checkGerbang lokal utama di CI: pnpm check plus pnpm build:strict-smokePerubahan yang relevan dengan Node
check-additionalPengaman arsitektur, boundary, import-cycle, ditambah harness regresi gateway watchPerubahan yang relevan dengan Node
build-smokePengujian smoke CLI hasil build dan smoke memori saat startupPerubahan yang relevan dengan Node
checksJalur Linux Node sisanya: pengujian channel dan kompatibilitas Node 22 khusus pushPerubahan yang relevan dengan Node
check-docsPemformatan dokumen, lint, dan pemeriksaan tautan rusakDokumen berubah
skills-pythonRuff + pytest untuk Skills berbasis PythonPerubahan yang relevan dengan Skills Python
checks-windowsJalur pengujian khusus WindowsPerubahan yang relevan dengan Windows
macos-nodeJalur pengujian TypeScript macOS menggunakan artefak hasil build bersamaPerubahan yang relevan dengan macOS
macos-swiftLint, build, dan pengujian Swift untuk aplikasi macOSPerubahan yang relevan dengan macOS
androidMatriks build dan pengujian AndroidPerubahan yang relevan dengan Android

Urutan Fail-Fast

Job diurutkan agar pemeriksaan murah gagal lebih dulu sebelum yang mahal dijalankan:
  1. preflight menentukan jalur mana yang benar-benar ada. Logika docs-scope dan changed-scope adalah step di dalam job ini, bukan job terpisah.
  2. security-fast, check, check-additional, check-docs, dan skills-python gagal dengan cepat tanpa menunggu job artefak dan matriks platform yang lebih berat.
  3. build-artifacts berjalan paralel dengan jalur Linux cepat sehingga konsumen downstream dapat mulai segera setelah build bersama siap.
  4. Setelah itu, jalur platform dan runtime yang lebih berat menyebar: checks-fast-core, checks-node-extensions, checks-node-core-test, extension-fast, checks, checks-windows, macos-node, macos-swift, dan android.
Logika cakupan berada di scripts/ci-changed-scope.mjs dan dicakup oleh unit test di src/scripts/ci-changed-scope.test.ts. Workflow install-smoke yang terpisah menggunakan kembali skrip cakupan yang sama melalui job preflight miliknya sendiri. Workflow ini menghitung run_install_smoke dari sinyal changed-smoke yang lebih sempit, sehingga smoke Docker/install hanya berjalan untuk perubahan yang relevan dengan install, packaging, dan container. Pada push, matriks checks menambahkan jalur compat-node22 yang khusus untuk push. Pada pull request, jalur itu dilewati dan matriks tetap berfokus pada jalur pengujian/channel normal.

Runner

RunnerJobs
blacksmith-16vcpu-ubuntu-2404preflight, security-fast, build-artifacts, pemeriksaan Linux, pemeriksaan dokumen, Skills Python, android
blacksmith-32vcpu-windows-2025checks-windows
macos-latestmacos-node, macos-swift

Padanan Lokal

pnpm check          # types + lint + format
pnpm build:strict-smoke
pnpm check:import-cycles
pnpm test:gateway:watch-regression
pnpm test           # pengujian vitest
pnpm test:channels
pnpm check:docs     # format dokumen + lint + tautan rusak
pnpm build          # build dist saat jalur artefak/build-smoke CI relevan