Runner CI self-hosted punya satu sifat yang merepotkan: mereka mengingat semuanya. Cache, token, kunci deploy yang ditambahkan seseorang "untuk sementara" musim semi lalu. Untuk branch Anda sendiri, itu tidak masalah. Masalah muncul begitu ada pull request dari orang yang belum pernah Anda dengar — atau dari agen AI Anda sendiri, yang menulis patch yang belum dibaca siapa pun.
Jawaban yang bersih adalah satu mesin per eksekusi. Clone, instal, tes, buang mesinnya.
Seperti apa sebuah eksekusi
Sandbox adalah microVM Firecracker yang menyala dalam sekitar satu detik dengan Python 3.12, Node.js 22, git, dan curl. Internet keluar berfungsi, jadi git clone dan pip install -r requirements.txt berjalan seperti biasa. Tidak ada port masuk — tidak ada yang bisa menghubungi lingkungan tes selama ia berjalan.
Dari sebuah job CI, semuanya cukup dengan skrip pendek. Berikut dengan SDK Python, dipanggil dari job CI mana pun:
import os, sys
from eqvps import Sandbox
repo, ref = os.environ["REPO_URL"], os.environ["PR_SHA"]
with Sandbox.create(tariff="standard", ttl=1800) as sb:
sb.exec(f"git clone {repo} /root/app && cd /root/app && git checkout {ref}", timeout=55)
sb.exec("cd /root/app && pip install -r requirements.txt", timeout=55)
task = sb.exec("cd /root/app && python3 -m pytest -q", background=True)
result = task.wait(on_output=lambda out, err: print(out, end=""))
sys.exit(result.exit_code or 0)
Token disimpan di secret CI Anda sebagai EQVPS_API_KEY. Tidak ada hal lain dari CI Anda — tidak ada kunci deploy, tidak ada kredensial cloud — yang masuk ke sandbox. Ketika blok with selesai, sandbox dihapus, juga jika job gagal di tengah jalan.
Eksekusi tesnya sendiri adalah tugas latar belakang, karena satu perintah sinkron berhenti di 55 detik. Tugas latar belakang mengalirkan output selama bekerja dan bisa berlanjut sampai TTL sandbox — di sini diatur 30 menit agar tes yang macet tidak membengkakkan tagihan.
Batas yang benar-benar akan Anda temui
Jujur soal ini menghemat waktu Anda satu sore.
Konkurensi. Satu akun bisa memegang 20 sandbox, tetapi hanya 2 perintah yang dieksekusi bersamaan. Untuk CI, itu dua job yang benar-benar paralel. Sepuluh PR yang datang bersamaan akan mengantre. Jika pipeline Anda membagi tes ke 16 worker, ini bukan alat yang tepat untuk pipeline utama — tetap jalankan itu di runner Anda sendiri pada VPS dan gunakan sandbox untuk jalur yang tidak tepercaya.
Tanpa kontainer di dalam. Docker tidak tersedia di sandbox. Tes unit dan integrasi yang membutuhkan kontainer Postgres tidak akan berjalan apa adanya; tes terhadap SQLite atau tiruan di memori akan berjalan.
File. Unggahan dan unduhan lewat API maksimal 5 MB per file. Ambil kode dengan git di dalam sandbox daripada mengunggah arsip.
Berapa biayanya
Anda membayar vCPU dan RAM tarif per detik, minimal 60 detik, dari saldo prabayar — tanpa langganan.
| Eksekusi | Tarif | Perkiraan biaya |
|---|---|---|
| Lint + tes unit, 1 mnt | small (0.5 vCPU, 1 GB) | $0.0006 |
| Suite lengkap, 3 mnt | standard (1 vCPU, 2 GB) | $0.0033 |
| Build + tes, 10 mnt | plus (2 vCPU, 4 GB) | $0.022 |
Dengan harga seperti ini, pertanyaan yang menarik bukan biayanya, melainkan apakah tes Anda selesai dalam waktu yang Anda tetapkan. Beri TTL sedikit ruang di atas eksekusi hijau Anda yang paling lambat.
Pembagian yang masuk akal
Rekomendasi kami: biarkan branch tepercaya di runner cepat Anda yang punya cache. Lewatkan dulu lewat sandbox semua yang tidak Anda tulis sendiri — fork, kontributor eksternal, patch buatan agen. Jika eksekusi di sandbox hijau dan seorang manusia sudah melihat diff-nya, naikkan ke pipeline tepercaya.
Dengan begitu Anda punya satu jalur tempat kecepatan dan cache penting, dan satu lagi tempat mesin yang bersih penting, tanpa memaksa satu alat menjadi keduanya.
Mulailah dari ikhtisar sandbox dan panduan koneksi — akun baru mendapat $1 waktu sandbox, cukup untuk beberapa ratus eksekusi tes singkat. Setiap metode yang dipakai di atas ada di referensi SDK, dan aturan penagihan yang persis ada di batas dan penagihan sandbox.
Terkait: sandbox untuk code review dan pemeriksaan PR dan sandbox untuk agen AI.
Komentar
Belum ada komentar. Jadilah yang pertama.