Rust's CI is moving to GitHub Actions
Bài tóm tắt Rust 2020 2. Tăng trưởng Độ khó: Dễ
Rust · 2020 · 2. Tăng trưởng · Độ khó: Dễ — bài gốc
Bài thông báo ngắn của Rust Infrastructure Team (khoảng 2.000 ký tự). Giá trị chính là mô tả cách Rust giữ master luôn xanh và cái giá của cách đó.
Bối cảnh
- Rust muốn master luôn xanh, nên test và merge từng PR một: các PR đã duyệt xếp hàng trong bors. CI rộng: 57 máy build và test compiler trên mọi nền tảng hỗ trợ; trên hệ cũ (Azure Pipelines, VM 2 core) mỗi builder mất 3–4 giờ. Ghép với "mỗi lần một PR", PR thường chờ nhiều ngày trong hàng đợi (2020).
Thay đổi chính
- Sau đánh giá bắt đầu từ cuối 2019, chuyển phần lớn CI sang GitHub Actions: GitHub tài trợ một pool VM riêng 8 core do GitHub quản lý. GitHub Actions có phần lớn tính năng họ dùng ở Azure Pipelines và gắn với phân quyền, giao diện của GitHub.
- Từ 2020-07-22, mọi build CI của
rust-lang/rustchạy trên GitHub Actions, trừ macOS (còn ở Azure, chờ GitHub sửa một lỗi).
Vì sao
- Với hàng đợi merge tuần tự, thời gian chờ của một PR = độ dài hàng × thời gian một lượt CI; rút ngắn lượt CI (máy mạnh hơn) là đòn bẩy trực tiếp nhất khi không muốn bỏ đảm bảo "mỗi commit trên master đã qua test" (CI và build ở quy mô lớn).
Bài học cho SWE
- "Test từng PR một trước merge" cho đảm bảo mạnh nhưng không scale theo số PR; cái giá hiện ra thành thời gian chờ nhiều ngày, không phải thành lỗi.
- Đổi nhà cung cấp CI có thể chủ yếu là đổi phần cứng; ghi rõ phần nào còn ở hệ cũ và vì sao.
Liên quan
- Uber 2022 (SubmitQueue: hàng đợi merge ở quy mô lớn hơn, gom thay đổi không xung đột) · Riot Games 2021
- CI và build ở quy mô lớn
Được nhắc tới trong
Chủ đề (1)
Công ty (1)