Lưu trữ CI runner
Trả lời
Runner CI tự lưu trữ chạy các pipeline build của bạn trên máy chủ bạn kiểm soát thay vì dùng chung pool của nhà cung cấp. Gói Incognito VPS VECTOR với giá $14/tháng thường hoạt động tốt hơn runner được lưu trữ đồng thời loại bỏ hoàn toàn việc thanh toán theo phút và thời gian chờ hàng đợi.
| Tình huống | Tối thiểu |
|---|---|
| Dự án nhỏ | 2 vCPU, 4 GB RAM |
| Monorepo điển hình | 6 vCPU, 16 GB RAM |
| Biên dịch nặng (Rust, C++) | 16 vCPU, 64 GB RAM |
| Cache layer Docker | 140 GB+ NVMe |
Phép tính thường là yếu tố quyết định
Phút CI được lưu trữ trông có vẻ rẻ cho đến khi bạn đếm chúng. Một nhóm chạy vài trăm build mỗi tháng trên runner 2 lõi được lưu trữ thường chi nhiều hơn chi phí của một VPS chuyên dụng 6 lõi, và nhận được build chậm hơn cho số tiền đó vì runner được lưu trữ là các máy khiêm tốn và phải chia sẻ tài nguyên.
Khoản tiết kiệm khác là thời gian thay vì tiền bạc. Runner tự lưu trữ không có hàng đợi — công việc của bạn bắt đầu khi bạn push. Trên pool được lưu trữ bận rộn, chờ đợi vài phút cho một runner là bình thường, và sự chậm trễ đó ảnh hưởng đến mọi nhà phát triển, mọi lần push.
Bộ nhớ đệm là nơi tăng tốc thực sự
NVMe cục bộ bền vững thay đổi kinh tế CI nhiều hơn số lõi thô. Docker layers, Cargo registries, node_modules, Gradle caches và ccache đều tồn tại giữa các lần chạy trên runner tự lưu trữ, trong khi runner được lưu trữ bắt đầu sạch và tải lại mọi thứ.
Đối với một dự án Rust hoặc C++ lớn, điều này thường giảm thời gian build từ năm đến mười lần, và hoàn toàn miễn phí.
Cách ly, vì runner thực thi mã tùy ý
Runner tự lưu trữ chạy bất cứ thứ gì trong pipeline, đối với kho lưu trữ công khai có nghĩa là bất cứ thứ gì người đóng góp đưa vào pull request. Không bao giờ gắn runner tự lưu trữ vào kho lưu trữ công khai mà không có thực thi tạm thời, cách ly.
Sử dụng runner tạm thời trong container hoặc VM tồn tại ngắn hạn, cấp cho runner không có thông tin xác thực nào mà nó không cần, và đặt nó trên một máy chủ không có gì khác. Một máy $14 cho mỗi dự án là bảo hiểm rẻ để ngăn chặn pipeline bị xâm nhập tiếp cận phần còn lại của hạ tầng của bạn.
Câu hỏi thường gặp
01 Gói nào dành cho runner CI?
VECTOR (4 vCPU, 8 GB) cho dự án điển hình; BASTION (6 vCPU, 16 GB) cho monorepo hoặc biên dịch nặng. Bộ nhớ đệm NVMe bền vững quan trọng hơn số lõi cho hầu hết các pipeline.
02 Có hoạt động với GitHub Actions không?
Có. Đăng ký máy dưới dạng runner tự lưu trữ và nhắm mục tiêu bằng runs-on. GitLab, Forgejo, Woodpecker và Drone đều hoạt động theo cách tương tự.
03 Runner tự lưu trữ có an toàn cho kho lưu trữ công khai không?
Không nếu không có cách ly tạm thời. Một pull request có thể chạy mã tùy ý trên runner. Sử dụng container tạm thời hoặc VM dùng một lần, và không bao giờ cấp thông tin xác thực mà pipeline không cần.
04 Nó nhanh hơn bao nhiêu?
Thường nhanh gấp hai đến bốn lần về tính toán thô, và gấp năm đến mười lần cho các pipeline phụ thuộc bộ nhớ đệm vì Docker layers và dependency caches tồn tại giữa các lần chạy thay vì được tải lại.
Liên quan