Lebih cepat ke konten

Rollout Progresif

A roll-out progresif menjaga saluran jangan diubah tetapi mengirimkan versi terpisah target bahasa peluncuran ke suatu kelompok perangkat yang dikendalikan. Pengguna produksi sebagian besar tetap pada stabil. Hanya kelompok peluncuran yang menerima kandidat sampai Anda Complete peluncuran atau Mengembalikan peluncuran.

Kontrol roll-out progresif dalam sebuah saluran Capgo
The Rollout Progresif bagian pada tab Informasi saluran menampilkan Target Rollout and Versi Stabildan kontrol persentase, serta aksi rollout.

How progressive rollouts bekerja dari awal hingga akhir

Bagian berjudul “How progressive rollouts bekerja dari awal hingga akhir”

Masing-masing saluran dapat memiliki dua link bundle pada saat yang sama:

Label konsolAPI / CLISiapa yang menerima
Fallback stabilBundle stabil (version pada POST Channels)Setiap perangkat pada saluran yang Tidak ada Tidak dalam kelompok peluncuran.
Target PeluncuranTarget Peluncuran (rolloutVersion / rollout_version)Hanya perangkat Capgo memilih secara acak ke dalam kelompok peluncuran selama peluncuran diaktifkan enabled tidak berhenti dan tidak dihentikan.

Apa yang terjadi pada setiap periksa update

Perangkat bertanya __CAPGO_KEEP_0__ untuk memperbarui saluran.
  1. Perangkat meminta pembaruan dari Capgo di saluran perangkatnya.
  2. Jika peluncuran adalah disabledatau tidak ada target, Capgo melayani fallback stabil.
  3. Jika peluncuran diaktifkan dan and dihentikanperangkat yang sudah ada di kelompok tetap menerima target peluncuran; orang lain menerima fallback stabil.
  4. Jika peluncuran diaktifkan dan dan tidak berhenti, Capgo memeriksa apakah perangkat ini berada dalam kelompok peluncuran:
    • Ini kelompok → target peluncuran.
    • Tidak dalam kelompok → fallback stabil.

Capgo membuat keputusan acak untuk setiap perangkat yang layak, kemudian menyimpannya menggunakan hash ID perangkat dan ID peluncuran. Hal itu membuat kelompok menempel untuk durasi cache yang ditentukan bukannya meluncur ulang setiap kali periksa update.

Sebuah rollout memerlukan fallback stabil terlebih dahulu. Di dashboard, tentukan bundle stabil sebelum memilih target rollout. Dengan demikian Saluran Publik APISaluran yang sudah ada dapat menyediakan version dan rolloutVersion dalam permintaan POST yang sama.

dalam permintaan POST yang sama.

  1. Atur Rollout target atau unggah/assign bundle — lihat (atau unggah/tentukan bundle — lihat).
  2. Pilih Persentasi dan klik Aplikasikan persentasi.
  3. Klik Aktifkan rollout.

Sampai Anda mengaktifkan rollout, mengkonfigurasi target dan persentasi tidak mengubah perangkat mana yang menerima.

Pada konsol, edit persentasi dan klik Aplikasikan persentasi untuk menyimpannya. Capgo mempertahankan keputusan yang ada ketika memungkinkan:

  • Meningkatkan persentasi — perangkat yang sudah dipilih tetap dipilih; hanya sebagian kecil perangkat yang belum dipilih sebelumnya yang ditambahkan.
  • Turunkan persentase — sebagian kecil dari kelompok yang dipilih kembali ke fallback stabil.
  • Setel persentase ke 0% — tidak ada perangkat baru yang dipilih. Perangkat yang sudah menjalankan target rollout yang diaktifkan terus menerima target tersebut sampai Anda menonaktifkan, mengembalikan, atau mengubah target.
  • Berhenti Rilis — menghentikan perangkat baru dari memasuki sementara perangkat yang sudah menjalankan target yang diaktifkan tetap menjalankannya.
  • Nonaktifkan rollout — menghentikan resolusi target rollout; periksa update menggunakan fallback stabil.

Pada saluran with progressive rollout yang terkonfigurasi, unggahan baru dan tautan bundle pergi ke target rollout secara default. Fallback stabil tetap tidak berubah kecuali Anda secara eksplisit memilih untuk menggantinya.

Judul bagian “Rute unggahan default”Upload Standar / Tugas DefaultStabil fallbackTarget rollout
Tidak Tidak ada konfigurasi rollout majuMendarat di saluranDitetapkan ke unggahanTidak ada
Konfigurasi rollout maju adaMendarat di saluranTidak berubahDitetapkan ke unggahan
Bagaimana Anda mengirimkan paketJatuh kembali yang stabilSasaran rolloutCatatan
bundle upload --channel <name> (tidak ada flag tambahan)Tidak berubah pada saluran rollout; set ketika tidak ada rolloutSet di saluran roll-outpada saluran rollout
bundle upload --channel <name> --rollout <percent>Belum DiubahSet; rollout ; peluncuran di persentase tersebutpada persentase tersebut
bundle upload --channel <name> --stableReplacedBelum DiubahKeluar dari jalur — penggantian stabil sengaja.
bundle upload with no --channelBelum DiubahUnchangedPendaftaran hanya; hubungkan dengan channel set atau API.
Dialog tautan konsol → Otomatis (direkomendasikan)Unchanged pada saluran rolloutPilih di saluran peluncuranpada saluran rollout
Dialog tautan konsol → Pilihan default.UnchangedMengaturTarget Rollout Tidak Langsung
Dialog Konsole → Ganti Versi StabilSudah DigantiTidak BerubahKunci Darurat.
PUT /bundle/ dengan target: "auto"Tidak Berubah di Saluran RolloutMengatur di Saluran RolloutAPI default.
PUT /bundle/ dengan target: "rollout"tetapSetTarget Perilaku Rollout.
PUT /bundle/ dengan target: "stable"ReplacedtetapDiperbarui (diganti).
channel set --bundle <version>ReplacedTidak BerubahOverride stabil eksplisit.
channel set --rollout-bundle <version> (+ --rollout-percentage, --rollout-enable)Tidak BerubahDitetapkan atau berubahKonfigurasi target tanpa mengunggah.
POST Channel versionDigantikan ketika diaturTidak BerubahOverride stabil eksplisit.
POST Channel rolloutVersionTidak BerubahSet atau diubah ketika diaturPengasasan target programatik.

Upload default pada saluran yang telah dikonfigurasi (target rollout; stabil tidak berubah):

Jendela terminal
bunx @capgo/cli@latest bundle upload com.example.app \
--path ./dist \
--channel production

Upload, atur target rollout, dan aktifkan pada 5%:

Jendela terminal
bunx @capgo/cli@latest bundle upload com.example.app \
--path ./dist \
--channel production \
--rollout 5

Ubah stabil secara eksplisit:

Jendela terminal
bunx @capgo/cli@latest bundle upload com.example.app \
--path ./dist \
--channel production \
--stable

Muat tanpa menghubungkan, kemudian atur rollout:

Jendela terminal
bunx @capgo/cli@latest bundle upload com.example.app --path ./dist -b 1.3.0
bunx @capgo/cli@latest channel set production com.example.app \
--rollout-bundle 1.3.0 \
--rollout-percentage 5 \
--rollout-enable

API asingkan dengan target eksplisit (auto | stable | rollout):

Jendela terminal
curl -X PUT \
-H "authorization: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"app_id": "com.example.app",
"version_id": 456,
"channel_id": 789,
"target": "rollout"
}' \
https://api.capgo.app/bundle/

Naikkan eksposur tanpa me-reseating perangkat yang sudah dipilih:

Jendela terminal
bunx @capgo/cli@latest channel set production com.example.app \
--rollout-percentage 25

Gunakan --rollout-percentage-bps when you need finer steps than whole percents (for example 50 = 0.5%).

Lihat referensi saluran CLI referensi dan paket CLI referensi untuk setiap opsi peluncuran. UX konsol dikirimkan dalam capgo.app#3313.

Bab Peluncuran Langkah demi Langkah (dashboard)

Bab Peluncuran Langkah demi Langkah (dashboard)

Buka aplikasi → Saluran → pilih saluran → Informasi → Rollout Progresif.

Bagian ini menampilkan Target Rollout dan Jatuh Tempo Stabil untuk dua tautan bundle. Gunakan Pilih Target Rollout yang Berbeda untuk memilih bundle kandidat yang berbeda. Setelah mengedit persentase, klik Aplikasikan Persentase untuk menyimpannya.

KontrolApa yang dilakukanPerangkat yang sudah ada di kelompokPerangkat baru yang layak
Ubah target peluncuranSet rolloutVersionMengubahnya memulai ID peluncuran baru dan kelompok baru. Mengunggah atau menugaskan bundle ke saluran (default) juga menetapkan target peluncuran.Tetapkan target sebelumnya sampai mereka memeriksa kembali dan sesuai dengan aturan keputusan baru.Dipilih berdasarkan persentase terhadap target baru.
Terapkan persentaseMenyimpan persentase yang Anda masukkan.Dipertahankan ketika Anda meningkatkan; subset acak mungkin meninggalkan ketika Anda menurunkan.Ditambahkan atau dikecualikan berdasarkan aturan persentase di atas.
aktifkan roll-outMengaktifkan pengiriman roll-out untuk target yang dikonfigurasi dan persentase.Tidak ada perubahan langsung hingga cek update berikutnya.Mungkin dipilih pada cek berikutnya.
Jeda roll-outMenghentikan perangkat baru dari memasuki.Terus di target roll-out.Penerima fallback stabil pada cek berikutnya.
Mulai kembali roll-outMenghapus jeda.Tidak berubah.Mungkin dipilih lagi pada cek berikutnya.
Nonaktifkan rolloutMenghentikan penyelesaian target rollout; Capgo menggunakan fallback stabil untuk semua orang.Pindah ke fallback stabil pada cek berikutnya.Terima fallback stabil.
Rollout selesai (API: promoteToStable; CLI: --rollout-promote)Membuat target rollout menjadi fallback stabil baru, kemudian membersihkan status rollout. Dikonfirmasi oleh Rollout progresif selesai? — target menjadi stabil untuk semua orang, fallback stabil sebelumnya digantikan, dan persentase kembali ke nol.Menjadi fallback stabil untuk semua orang.Menerima bundle yang sudah selesai sebagai stabil.
Mengembalikan peluncuran (API: rollback; CLI: --rollout-rollback)Menghapus target, mematikan rollout, mengatur persentase kembali ke 0%, dan mengembalikan perangkat ke fallback stabil.Kembali ke fallback stabil pada cek berikutnya.Menerima fallback stabil.

Pilih satu aksi terminal pada satu waktu (Rollout selesai dan Rollback rollout tidak dapat digabungkan dalam satu panggilan API):

Salin ke clipboard
# Stop adding devices while you investigate
bunx @capgo/cli@latest channel set production com.example.app --rollout-pause
# Allow new devices to enter again
bunx @capgo/cli@latest channel set production com.example.app --rollout-resume
# Complete rollout — candidate becomes stable for everyone
bunx @capgo/cli@latest channel set production com.example.app --rollout-promote
# Rollback rollout — discard candidate and return to stable
bunx @capgo/cli@latest channel set production com.example.app --rollout-rollback

Tunggu sampai bundle target dapat diakses Rollout selesai or Rollback rolloutBundel yang terkait sebagai fallback stabil atau target rollout dilindungi dari penghapusan.

Rollout progresif dirancang agar Anda dapat memvalidasi di produksi tanpa mengganti saluran seluruhnya sekaligus. Sebuah urutan yang praktis:

  1. Pastikan fallback stabil sehat. Itu harus versi yang Anda siapkan untuk tetap menyajikan kepada pengguna mayoritas.
  2. Unggah kandidat ke saluran yang telah dikonfigurasi untuk rollout (bundle upload --channel <name> mendarat di Target rollout dan meninggalkan Fallback stabil sendiri) atau gunakan --rollout <small-percent> untuk memungkinkan akses di langkah yang sama.
  3. Mulai kecil — 1–5% sudah cukup untuk sinyal pertama. Klik Aplikasikan persentase, kemudian Aktifkan rollout. Aktifkan pause otomatis jika Anda ingin Capgo berhenti mengekspos ketika tingkat kegagalan meningkat.
  4. Perhatikan sebelum Anda memperluas. Pakai Amati untuk kesehatan versi. Catatan Log untuk kesehatan versi, dan Sejarah tab untuk perubahan konfigurasi. Bandingkan target rollout dengan fallback stabil; jangan meningkatkan persentase sampai kohort terlihat sehat.
  5. Naikkan secara bertahap — edit persentase, klik Aplikasikan persentase, dan naikkan (misalnya 5% → 25% → 50% → 100%). Capgo menjaga perangkat yang sudah ada di kohort dipilih ketika Anda meningkatkan.
  6. Sampai dengan rollout lengkap ketika percaya diri — konfirmasi Apakah Anda ingin menyelesaikan rollout progresif? sehingga kandidat menjadi fallback stabil untuk semua.
  7. Jika ada yang salah, Hentikan rollout terlebih dahulu — menghentikan paparan baru sementara Anda menyelidiki. Perangkat yang sudah ada di build buruk tetap di atasnya sampai Anda Mengembalikan peluncuran atau Kembali ke versi sebelumnya.

Capgo dapat mengevaluasi peluncuran yang diaktifkan setiap lima menit dan bertindak ketika sinyal gagalnya melewati ambang batas Anda. Ini mengukur instalasi dan gagal untuk target peluncuran di saluran yang dipilih dan jendela waktu, kemudian menggunakan batas kepercayaan Wilson daripada tingkat gagal yang mentah sendiri.

Pause otomatis dimatikan secara default. Konfigurasi lapangan-lapangan ini di tab saluran’s Info tab atau dengan channel set:

  • Batasan tingkat kegagalan dalam menit (default: 60).500 = 5%). Diperlukan adalah batas untuk kebijakan tersebut dapat diaktifkan.
  • antara dalam menit (default: 60).
  • Confidence between 0 dan 1 (default: 0.95).
  • Jumlah percobaan minimum dan gagal, untuk menghindari tindakan pada sampel kecil.
  • Kurang Tertib dalam menit (default: 60), yang mencegah aksi yang berulang.
  • Aksi: pause, rollback, atau notify.

pause menghentikan paparan rollout baru, rollback mengosongkan target dan kembali ke fallback stabil, dan notify mengirimkan peringatan rollout tanpa mengubah pengiriman rollout.

Jendela Terminal
bunx @capgo/cli@latest channel set production com.example.app \
--auto-pause-enabled \
--auto-pause-failure-rate-bps 500 \
--auto-pause-window-minutes 60 \
--auto-pause-confidence 0.95 \
--auto-pause-min-attempts 100 \
--auto-pause-min-failures 5 \
--auto-pause-action pause \
--auto-pause-cooldown-minutes 120
  • Dashboard: app → Saluran context Information → Rollout Progresif
  • Saluran API: Public Channels API Untuk bidang peluncuran, promosikan, dan batalkan
  • Saluran Publik API PUT /bundle/ dengan target: auto, stable, atau rollout

Untuk pengaturan saluran umum dan prioritas perangkat, lihat SaluranUntuk pemulihan bundle darurat di luar roll-out progresif, lihat Mengembalikan ke versi sebelumnya sebuah live update.