CI Pipeline
CI ทำงานทุกครั้งที่ push ไปที่ main และทุก pull request มันใช้ขอบเขตอัจฉริยะเพื่อข้ามงานที่มีค่าใช้จ่ายสูงเมื่อมีเพียงเอกสารหรือโค้ด native เท่านั้นที่เปลี่ยนแปลง
ภาพรวมของงาน
| งาน | วัตถุประสงค์ | เมื่อมันทำงาน |
|---|---|---|
docs-scope | ตรวจจับการเปลี่ยนแปลงเฉพาะเอกสาร | เสมอ |
changed-scope | ตรวจจับพื้นที่ที่เปลี่ยนแปลง (node/macos/android) | PR ที่ไม่ใช่เอกสาร |
check | ประเภท TypeScript, lint, format | การเปลี่ยนแปลงที่ไม่ใช่เอกสาร |
check-docs | Markdown lint + ตรวจสอบลิงก์เสีย | เอกสารเปลี่ยนแปลง |
code-analysis | ตรวจสอบเกณฑ์ LOC (1000 บรรทัด) | เฉพาะ PR |
secrets | ตรวจจับความลับที่รั่วไหล | เสมอ |
build-artifacts | สร้าง dist ครั้งเดียว แชร์กับงานอื่น | ไม่ใช่เอกสาร, การเปลี่ยนแปลง node |
release-check | ตรวจสอบเนื้อหา npm pack | หลังจาก build |
checks | การทดสอบ Node/Bun + ตรวจสอบโปรโตคอล | ไม่ใช่เอกสาร, การเปลี่ยนแปลง node |
checks-windows | การทดสอบเฉพาะ Windows | ไม่ใช่เอกสาร, การเปลี่ยนแปลง node |
macos | Swift lint/build/test + การทดสอบ TS | PR พร้อมการเปลี่ยนแปลง macos |
android | Gradle build + การทดสอบ | ไม่ใช่เอกสาร, การเปลี่ยนแปลง android |
ลำดับ Fail-Fast
งานถูกจัดลำดับให้การตรวจสอบที่ถูกล้มเหลวก่อนที่งานที่มีค่าใช้จ่ายสูงจะทำงาน:
docs-scope+code-analysis+check(แบบขนาน, ~1-2 นาที)build-artifacts(บล็อกโดยด้านบน)checks,checks-windows,macos,android(บล็อกโดย build)
Runners
| Runner | งาน |
|---|---|
blacksmith-16vcpu-ubuntu-2404 | งาน Linux ส่วนใหญ่ รวมถึงการตรวจจับขอบเขต |
blacksmith-16vcpu-windows-2025 | checks-windows |
macos-latest | macos, ios |
คำสั่งที่เทียบเท่าในโลคัล
bashpnpm check # types + lint + format pnpm test # vitest tests pnpm check:docs # docs format + lint + broken links pnpm release:check # validate npm pack