ci: add self-test workflow for pushes and pull requests#64
ci: add self-test workflow for pushes and pull requests#64hapo-nghialuu wants to merge 2 commits into
Conversation
|
Update sau lần chạy CI đầu tiên: Run đầu fail sau 13s vì một thực tế của repo mà local dry-run không phát hiện được: Commit ✅ CI hiện xanh: 137 tests pass, job chạy 30s. Lưu ý policy (ngoài phạm vi PR): vì lockfile không được commit, CI mất lá chắn reproducible-install — dependency mới phát hành có thể làm CI đỏ dù code không đổi (đây cũng chính là loại drift mà scheduled run sẽ bắt được). Nếu muốn lá chắn đó, cân nhắc bỏ 🤖 Generated with Claude Code |
Mục đích
CafeKit hiện release ~18 bản/30 ngày lên npm nhưng không có CI — việc chạy test trước khi publish phụ thuộc hoàn toàn vào thao tác tay. Đã từng tồn tại thời điểm bộ self-test đỏ trên local trong khi npm vẫn tiếp tục nhận bản mới (test
hapo:specs feature-description flow continues past initfail trên 0.12.0, chỉ được sửa gián tiếp bởi Specs-v2).PR này thêm lưới an toàn đầu tiên: mọi push vào
dev/mainvà mọi pull request đều tự động chạy toàn bộ self-test suite trên môi trường sạch. Phạm vi cố ý tối thiểu (test-only): quy trình publish npm giữ nguyên thủ công.Thay đổi
.github/workflows/test.ymlself-testdocs/project-changelog.md[Unreleased]Chi tiết workflow
pushvàodev/main+ mọipull_request. Trigger cả push trực tiếp vì repo có pattern commit thẳng lêndev— chỉ canh PR sẽ lọt phần lớn commit.ubuntu-latest, Node 20 (engines khai>=18), pnpm 10 (khớp lockfile v9), Python 3.12.pnpm install --frozen-lockfile --filter @haposoft/cafekit: chỉ cài deps của package lõi, bỏ qua cây Next.js củacafekit-web; lockfile lệch là fail ngay.timeout-minutes: 10: suite chạy ~18s local; treo lâu hơn nghĩa là có vấn đề thật.Đã kiểm chứng
yaml)runtrên local (macOS, pnpm 10.28): install OK, PASS 137 tests / ~18sopencode --versiontrong suite tự skip khi binary vắng mặt (runner GitHub không có opencode); PDF test không cần dependency ngoài stdlibBước tiếp theo (ngoài phạm vi PR)
devrequire checkself-testpass trước khi merge🤖 Generated with Claude Code