Workflow của tôi có chạy được mà không cần sửa không?
Có, phần lớn đều chạy được. Skipbox chạy workflow của repository công khai và riêng tư trên tổ chức và tài khoản cá nhân GitHub. VM là Ubuntu 24.04 trên x64, có Docker, git, build-essential, Node 22 và Python 3.12, và job chạy dưới một user có sudo không cần mật khẩu, giống runner của GitHub. Image ubuntu-latest của GitHub cài sẵn nhiều thứ hơn, nên hãy thêm actions/setup-java, actions/setup-go và các action tương tự cho công cụ khác.
Vì sao rẻ đến vậy?
Khi AI viết ngày càng nhiều code, CI chạy nhiều hơn mỗi tháng, và tính phí theo phút thì tăng theo từng lần chạy. Vì vậy Skipbox cố ý chọn một mô hình khác: bạn thuê theo tháng một VM chỉ dành cho tài khoản của bạn. GitHub không tính phí số phút của self-hosted runner, nên dù bạn chạy bao nhiêu job, giá vẫn cố định $39 một tháng cho S. Fluxenic, công ty đứng sau Skipbox, vận hành máy chủ từ các nhà cung cấp cloud giá rẻ và máy chủ của chính mình, rồi cung cấp chúng dưới dạng VM có kích thước hợp lý. Skipbox làm phần việc phiền phức thay bạn: đăng ký runner, dọn dẹp sau mỗi job và kiểm tra tình trạng máy. Nó còn dựng lại máy bị hỏng và giữ image luôn mới. Khi chạy hết công suất, giá chỉ bằng 1/12 giá GitHub và 1/8 giá Blacksmith.
Vì sao nhanh đến vậy?
Vì máy chỉ thuộc về tài khoản của bạn và vẫn chạy giữa các job. Docker layer và cache package từ job trước vẫn nằm trên ổ đĩa, nên bản build dùng chúng không phải tải hay dựng lại. Job trên GitHub-hosted runner lần nào cũng khởi động trên một VM mới với ổ đĩa trống. Ngay cả S cũng giữ cache trên ổ đĩa riêng 80 GB. Như vậy là hơn 7 lần dung lượng cache mặc định GitHub cấp cho mỗi repository, và không có gì trong đó hết hạn sau 7 ngày không dùng. S còn có 4 vCPU, nhiều hơn 2 nhân của ubuntu-latest trên repository riêng tư.
Tự thuê VPS làm runner chẳng phải rẻ hơn sao?
Thuê một VPS cùng kích thước từ nhà cung cấp lớn, bạn vẫn không có được self-hosted runner nào rẻ hơn, nhanh hơn và ít việc hơn Skipbox. Skipbox đăng ký một runner mới cho mỗi job và gỡ nó sau đó. Sau mỗi job, nó xóa thông tin xác thực của runner và giữ bản checkout cùng kết quả build cho job tiếp theo. Nó kiểm tra tình trạng máy, dựng lại máy khi kiểm tra thất bại và giữ image luôn mới. Code từ người không có quyền ghi (chẳng hạn pull request từ fork) chạy trên một VM dùng một lần. Bạn có tất cả những điều đó với $39 một tháng trên S, chỉ bằng cách đổi một dòng runs-on, không phải bảo trì gì.
Skipbox có chạy repository công khai không?
Có, cả repository công khai lẫn riêng tư. Code từ người không có quyền ghi (chẳng hạn pull request từ fork) chạy trên một VM mới, đọc được cache của bạn nhưng không sửa được; máy riêng của bạn chỉ chạy code của nhóm bạn.
Số phút có thật sự không giới hạn không?
Có. Các gói có giá $39, $79 hoặc $149 một tháng, thanh toán bằng đô la Mỹ hằng tháng, hoặc trả trước theo năm với giá của 10 tháng, không phí theo mức sử dụng. Gói giới hạn số job chạy cùng lúc và kích thước mỗi job, không giới hạn số phút: job không vừa sẽ chờ đến khi một job đang chạy kết thúc, và thời gian chờ không cộng thêm gì vào hóa đơn. Trang tổ chức của bạn trong Skipbox cho thấy có bao nhiêu job đang chờ và job chờ lâu nhất đã chờ bao lâu. Một job chạy được tối đa 6 giờ.
Job lớn hơn được tính vào số job đồng thời thế nào?
Số job đồng thời được tính theo job 4 vCPU. Một gói chạy cùng lúc các job có tổng vCPU tối đa bằng tổng vCPU của gói (S 4, M 8, L 16 vCPU), nên một job 8 vCPU được tính là 2, và một job 16 vCPU là 4. Job đơn lẻ lớn nhất một gói chạy được bằng số vCPU của gói: 4 trên S, 8 trên M, 16 trên L. Thêm gói để chạy nhiều job cùng lúc hơn.
Skipbox so với runner của GitHub thế nào?
Mỗi job Skipbox S có 4 vCPU và 16 GB; ubuntu-latest của GitHub trên repository riêng tư là 2 nhân và 8 GB. Máy riêng của bạn còn giữ Docker layer và cache package từ job trước, nên bản build dùng chúng không phải tải lại; job trên GitHub-hosted runner lần nào cũng khởi động trên VM mới. docker build và docker compose build dùng lại các layer. Builder mặc định của docker/setup-buildx-action bắt đầu trống ở mỗi job, nên hãy đặt driver: docker cho nó để dùng cache của chính máy. Sau khi job đầu tiên của bạn chạy trên Skipbox, bảng điều khiển hiển thị thời gian của nó bên cạnh trung vị trên GitHub trong 30 ngày gần nhất, nếu GitHub đã chạy nó trong thời gian đó.
Bản build của tôi hết bộ nhớ trên runner của GitHub. Skipbox có bao nhiêu bộ nhớ?
16 GB ở gói S, trên máy riêng của bạn: gấp 2 lần 8 GB của ubuntu-latest trên repository riêng tư, và bằng "larger runner" của GitHub (loại 4 nhân). Trước đây gói S có 8 GB, và con số đó không đủ cho openai/codex (rust-v0.159.3): cargo clippy --workspace --tests của dự án chỉ chạy xong nhờ đẩy khoảng 14 GB vào swap nén. Với 16 GB hiện nay, cùng bản build đó chỉ đẩy khoảng 20 MB ra swap. Với job cần nhiều hơn, gói L có 32 GB.
Skipbox truy cập được những gì?
Chỉ những gì cần để đăng ký runner và kiểm tra job. Trên tổ chức, ứng dụng Skipbox CI xin ba quyền: Self-hosted runners (ghi), để đăng ký với GitHub một runner cho mỗi job và gỡ nó khi job kết thúc; Actions (đọc và ghi), để xem job nào đang chờ, kiểm tra trạng thái, đọc thời gian chạy job của bạn trong 30 ngày gần nhất để báo giá, và chạy lại job có máy Skipbox bị dừng giữa chừng; và Metadata (đọc). Ứng dụng Skipbox CI không bao giờ sửa hay push workflow của bạn, và không đọc được code của bạn: mỗi job tự checkout code trên VM mà nó chạy. Trên tài khoản cá nhân, GitHub chỉ cho đăng ký runner cho một repository khi có quyền Administration, quyền này cũng bao gồm cài đặt, collaborator và deploy key của repository. Skipbox (personal) xin quyền này và chỉ dùng nó để đăng ký và gỡ runner. Có một tính năng là ngoại lệ, và chỉ khi bạn cài nó: nút "Mở pull request" trên bảng điều khiển dùng một ứng dụng riêng, Skipbox Migrate, mà bạn chỉ cài trên các repository bạn chọn. Ở đó nó xin quyền ghi cho Contents, Workflows và Pull requests, push một branch (skipbox/run-ci-on-skipbox) chỉ đổi các dòng runs-on, và mở pull request từ branch đó. Nó không bao giờ merge hay động vào branch mặc định của bạn. Khi bạn đăng nhập, Skipbox cũng đọc địa chỉ email của bạn để gửi thông báo về dùng thử và thanh toán. Như mọi runner, VM của job giữ secret của workflow và token của GitHub cho job đó, nên code mà job chạy có thể đọc chúng.
Job chạy ở đâu?
Trên máy riêng của tổ chức bạn: một VM theo kích thước gói của bạn (kể cả khi dùng thử), mỗi gói thêm là thêm một máy. Không tổ chức nào khác dùng nó. Máy vẫn chạy giữa các job, nên Docker image, cache, bản checkout và kết quả build của nó (target/ của Cargo và cache của Turborepo với turbo 2) được giữ cho các job sau. Máy chạy trên máy chủ mà Fluxenic, công ty đứng sau Skipbox, thuê từ các nhà cung cấp cloud hoặc tự vận hành. Chính sách quyền riêng tư liệt kê từng nhà cung cấp và quốc gia. Sau mỗi job, thông tin xác thực của runner, thông tin xác thực git trong bản checkout và các file thông tin xác thực phổ biến bị xóa. Job vượt quá số máy riêng của bạn, code từ người không có quyền ghi (chẳng hạn pull request từ fork) và mọi job khi bật VM mới cho mỗi job đều chạy trên VM mới, bị xóa cùng ổ đĩa khi job kết thúc. Job vẫn chạy sau 6 giờ sẽ bị dừng. Không gì từ internet kết nối vào được. Thư gửi ra (cổng TCP 25) bị chặn. Phần còn lại của internet vẫn mở, như trên GitHub-hosted runner. Lưu lượng không bị tính phí.
Tôi có thể làm mới máy, hoặc chạy mọi job trên VM mới không?
Có. Nhấn Đặt lại máy trong Gói và thanh toán, bất cứ lúc nào. Bật VM mới cho mỗi job ở đó, mỗi job sẽ chạy trên một VM mới.
Có thể hủy hoặc được hoàn tiền không?
Hủy bất cứ lúc nào; gói vẫn chạy đến hết tháng, hoặc hết năm, bạn đã trả. Nếu job của bạn trên Skipbox không nhanh hơn trên GitHub, bạn được hoàn lại toàn bộ số tiền đã trả, với cả gói tháng lẫn gói năm: hãy yêu cầu trên trang Gói và thanh toán của tài khoản trong vòng 30 ngày kể từ lần thanh toán đầu tiên. Skipbox lấy thời gian trung vị của mỗi job trên Skipbox và trên GitHub (30 ngày trước khi bạn cài Skipbox), đặt trọng số cho mỗi job theo số lần nó chạy trên GitHub, rồi so sánh hai tổng; một job được tính khi đã chạy ít nhất 3 lần trên mỗi bên, và nếu không có job nào để so sánh thì không có gì để hoàn. Nếu job đầu tiên bạn chạy sau khi đăng ký không khởi chạy trong vòng 10 phút, không tính thời gian chờ sau các job của chính bạn, chúng tôi tự động hoàn toàn bộ khoản thanh toán và kết thúc gói. Ngoài ra, tháng hoặc năm đã trả không được hoàn tiền, trừ các trường hợp Điều khoản liệt kê.
Hết thời gian dùng thử thì sao? Tôi có bị tính tiền không?
Không tính tiền gì cả: dùng thử không cần thẻ. Thời gian dùng thử bắt đầu từ job đầu tiên của bạn trên Skipbox, không phải lúc đăng nhập hay cài ứng dụng, và chạy mỗi lần một job 4 vCPU · 16 GB trong 7 ngày hoặc 3.000 phút, tùy điều kiện nào đến trước. Mỗi tài khoản có 1 lần dùng thử và mỗi người 1 lần. Khi hết, job mới sẽ chờ trên GitHub cho đến khi bạn chọn gói.
Làm sao chạy một job trên Skipbox, và quay lại thế nào?
Đổi runs-on thành skipbox để chuyển sang, và đổi lại ubuntu-latest để quay về. Đăng nhập bằng GitHub, cài ứng dụng Skipbox CI vào tổ chức hoặc Skipbox (personal) vào tài khoản cá nhân, đổi dòng runs-on của job thành skipbox rồi commit; để dùng VM lớn hơn trên các gói có nó, dùng skipbox-8x16 hoặc skipbox-16x32. Để quay về, đổi runs-on: skipbox lại thành runs-on: ubuntu-latest. Không có gì khác trong repository bị thay đổi.