Ke halaman utama

Panduan Otonom Pembaruan Aplikasi Electron 2026

Ship Electron app auto update without the silent failures. Real code, signing tips, rollout guardrails, and rollback strategy for production teams.

Panduan Otonom Pembaruan Aplikasi Electron 2026

Anda telah mengirimkan bangunan Electron, halaman rilis sudah aktif, dan tiket dukungan pertama datang sebelum mesin kopi selesai. Salah satu pengguna mengatakan aplikasi tidak menemukan pembaruan. Pengguna lain mengunduhnya tetapi tidak bisa menginstalnya. Seseorang masih menjalankan versi lama dengan alur autentikasi yang rusak, sementara log menunjukkan tidak ada informasi yang berguna.

Itu adalah kenyataan yang tidak nyaman dari Update Otomatis Aplikasi Electron. Pengguna API hanya satu komponen. Rilis produksi juga bergantung pada tanda tangan platform, kebijakan transportasi, manifest, hosting, kejadian siklus, observabilitas, kontrol peluncuran, dan jalur rollback. Anggap salah satu dari itu sebagai opsional dan patch rutin dapat menjadi insiden malam hari.

Daftar Isi

Insiden Update Pagi yang Membuat Panduan Ini

Rilis tersebut telah melewati CI dan terlihat biasa. Pada akhir pekan, seorang pengembang menerbitkan bangunan Electron yang tidak ditandatangani, dan pekerja publikasi mengunggah cukup aset untuk membuat rilis tersebut terlihat lengkap. Aplikasi diluncurkan dalam pengujian, tetapi tidak ada yang menguji jalur pembaruan dari bangunan produksi yang terpasang.

Pada pukul 2:08 pagi, PagerDuty mengingatkan insinyur yang bertugas. Aliran autentikasi baru gagal untuk sebagian armada, dan pengguna yang menerima pembaruan tidak dapat menyelesaikan sign-in. Pengguna lain tetap menggunakan versi sebelumnya karena pembaruan tidak dapat memverifikasi atau menginstal artefak. Beberapa pelanggan memiliki rilis yang rusak, sementara armada lainnya menjalankan versi yang berbeda tanpa penjelasan yang jelas.

Penginvestigasian mengikuti lima pemeriksaan:

  1. Pemeriksaan Feed Rilis Binary sudah ada, tapi metadata yang diharapkan tidak secara jelas menentukan mana klien yang harus menerima itu. Manifest adalah kontrak antara pipeline rilis dan klien yang terpasang, bukan detail unggahan opsional.
  2. Periksa tanda tangan. Rilis tidak ditandatangani dengan benar, sehingga verifikasi gagal pada platform yang terpengaruh. Tanda tangan harus menghalangi publikasi ketika itu hilang atau tidak valid.
  3. Bandingkan log klien. Error pembaruan tidak pernah mencapai telemetri pusat. Aplikasi menelan event dan terus berjalan, meninggalkan tim tanpa bukti yang dapat diandalkan.
  4. Periksa pengendalian peluncuran. Tidak ada saluran internal atau kohort yang dipersiapkan. Setiap klien yang layak menggunakan sumber yang sama, sehingga gagalnya menyebar tanpa titik pengamanan.
  5. Cari rollback. Tim tidak memiliki prosedur yang telah diuji untuk mempublikasikan versi sebelumnya atau mengarahkan klien menjauhi rilis yang rusak.

Dokumentasi resmi Electron menjelaskan batasan platform dengan jelas. Linux tidak memiliki dukungan auto-updater bawaan.dan permintaan pembaruan macOS harus memenuhi Persyaratan Keamanan Transport Aplikasi Dokumentasi juga mengidentifikasi tanda tangan sebagai prasyarat untuk pembaruan macOS yang dapat diandalkan dan verifikasi rilis. Dokumentasi autoUpdater Electron Menggambarkan keterbatasan API sementara sistem rilis harus mengimplementasikan kontrol operasional yang melingkungi.

Pelajaran Pasca-Kematian: Updater yang tidak dapat menjelaskan apa yang terjadi adalah upaya instalasi jarak jauh dengan telemetri yang hilang.

Biaya yang diperluas melampaui waktu engineering. Pelanggan kehilangan kepercayaan pada klien desktop, dukungan harus menjelaskan perilaku yang tidak konsisten, dan tim menghabiskan hari kerja berikutnya untuk membangun kembali proses rilis yang seharusnya ada sebelum insiden.

Tentukan Jalur Updater Electron yang Tepat Pada pukul 2 pagi, pilihan updater yang salah menjadi masalah operasional. Perbarui biner native harus menangani tanda tangan, manifest, installer, dan rollback. Perubahan JavaScript atau CSS renderer hanya mengikuti jalur yang berbeda. Keterbatasan hosting juga berperan: proyek kecil __CAPGO_KEEP_0__-hosted tidak memerlukan kontrol rilis yang sama seperti layanan distribusi perusahaan.Memilih Jalur Updater Electron yang Tepat

Pada pukul 2 pagi, pilihan updater yang salah menjadi masalah operasional. Perbarui biner native harus menangani tanda tangan, manifest, installer, dan rollback. Perubahan JavaScript atau CSS renderer hanya mengikuti jalur yang berbeda. Keterbatasan hosting juga berperan: proyek kecil __CAPGO_KEEP_0__-hosted tidak memerlukan kontrol rilis yang sama seperti layanan distribusi perusahaan.

At 2 a.m., the wrong updater choice becomes an operational problem. A native binary update must handle signing, manifests, installers, and rollback. A renderer-only JavaScript or CSS change follows a different path. Hosting constraints also matter: a small GitHub-hosted project does not need the same release controls as an enterprise distribution service.

Untuk proyek yang menggunakan electron-builder dengan publikasi artifact yang ditandatangani, electron-updater is usually the practical default. Its ecosystem covers publish targets, release manifests, artifact downloads, and installation on the next launch. It supports several hosting models, but your team still owns signing, feed availability, channel policy, rollout controls, and monitoring. The Integrasi pembaruan Electron untuk Capgo relevant ketika mengevaluasi model pengiriman hybrid untuk bundle layer web bersamaan dengan rilis native.

update-electron-app suits tim yang ingin integrasi kecil di sekitar GitHub Rilis. Ini memeriksa pada startup dan kemudian pada interval yang berulang, yang menjaga setup sederhana tetapi meninggalkan kurang ruang untuk pilihan saluran lanjutan, lalu lintas yang dipersiapkan, dan aturan gulir balik yang disesuaikan. Paket ini wajar untuk proses rilis kecil, asalkan GitHub Rilis dan ketersediaannya sesuai dengan persyaratan operasional Anda.

Opsi Pengendalian Hosting Bantuan Tanda Tangan Saluran & Rollout yang Dipersiapkan Beban Perawatan
electron-updater S3, GitHub, HTTPS umum, dan target publik lainnya Terintegrasi dengan tanda tangan rilis terpakai Dasar yang kuat, kebijakan kustom biasanya hidup di sekitar sumber pakan Moderat
update-electron-app Proses pelepasan GitHub yang sederhana secara utama Menggunakan model tanda tangan Electron yang mendasarinya Terbatas kecuali Anda menambahkan layanan sekitar Rendah
Squirrel.Windows atau Squirrel.Mac Aliran distribusi yang berorientasi pada platform Mengandalkan persyaratan tanda tangan platform Possibel, tapi biasanya memerlukan infrastruktur rilis tambahan Moderat untuk aplikasi legasi
Pelayanan khusus Penuh kontrol atas manifest, otorisasi, kelompok, dan sumber daya Anda yang mengelola desain verifikasi dan pengelolaan kunci Fleksibilitas maksimum Tinggi
Capgo pembaruan langsung Pengiriman terkelola untuk paket layer web Menggunakan updater dan model pengiriman miliknya Pengiriman berdasarkan target audiens dan saluran Model operasional terpisah dari pembaruan biner asli

A layanan khusus seperti Hazel, Nuts, atau sumber internal cocok ketika otorisasi rilis, target penyewa, catatan audit, atau aturan pengiriman yang diatur membenarkan biaya implementasi. Perbandingan adalah kepemilikan yang berkelanjutan. Tim Anda harus menentukan semantik manifesto, melindungi kunci tanda tangan, menjaga kompatibilitas klien, dan menguji download gagal, rilis yang ditolak, dan perilaku rollback.

Pembaruan hidup dapat mengirimkan perubahan renderer saja tanpa membangun kembali shell native. Mereka tidak menggantikan pembaruan biner ketika Electron, modul native, izin, atau perilaku pemasang berubah. Gunakan electron-updater kecuali Anda membutuhkan logika peluncuran kustom. Jika logika kustom diperlukan, bangun sekitar konvensi manifesto dan artefak yang sudah ada daripada menciptakan kembali perilaku download dan pembaruan diferensial. Jalur yang dapat diandalkan adalah jalur yang tim Anda dapat mengamati, menguji, dan membalikkan di bawah tekanan.

Mengimplementasikan Alur Pembaruan Otomatis di Proses Utama

Proses utama harus mengelola periksa pembaruan dan instalasi. Renderer dapat menampilkan status, tetapi tidak boleh menentukan apakah pembaruan eksekutif dapat dipercaya atau ketika aplikasi keluar.

Konfigurasi target publik terlebih dahulu

Konfigurasi pembangun electron yang minimal mungkin seperti ini:

{
  "build": {
    "appId": "com.example.desktop",
    "publish": [
      {
        "provider": "s3",
        "bucket": "example-electron-releases",
        "channel": "stable"
      }
    ],
    "nsis": {
      "oneClick": false,
      "allowToChangeInstallationDirectory": true
    }
  }
}

Pisahkan sumber beta dan stabil. Saluran adalah kebijakan rilis, bukan label di UI. Setiap saluran harus menyelesaikan ke artifact yang ditandatangani dan manifesto yang benar.

Jadwalkan periksa dan terapkan event kehidupan

Panggil checkForUpdates() Hanya selama proses startup yang merupakan kesalahan produksi umum. Seorang pengguna dapat meninggalkan aplikasi terbuka selama beberapa hari, sehingga proses utama membutuhkan interval yang dikendalikan dan strategi ulang yang menghormati operasi offline.

const { app, BrowserWindow, ipcMain } = require('electron');
const { autoUpdater } = require('electron-updater');

let mainWindow;
let isQuitting = false;
let retryDelay = 60 * 1000;

function sendUpdateStatus(status, payload = {}) {
  if (mainWindow && !mainWindow.isDestroyed()) {
    mainWindow.webContents.send('update-status', { status, ...payload });
  }
}

function scheduleUpdateCheck() {
  setTimeout(async () => {
    try {
      await autoUpdater.checkForUpdates();
      retryDelay = 60 * 1000;
    } catch (error) {
      sendUpdateStatus('error', { message: error.message });
      retryDelay = Math.min(retryDelay * 2, 30 * 60 * 1000);
    }
    scheduleUpdateCheck();
  }, retryDelay);
}

app.whenReady().then(() => {
  mainWindow = new BrowserWindow({
    webPreferences: {
      preload: require('path').join(__dirname, 'preload.js')
    }
  });

  autoUpdater.autoDownload = true;
  autoUpdater.autoInstallOnAppQuit = false;

  autoUpdater.on('checking-for-update', () => {
    sendUpdateStatus('checking');
  });

  autoUpdater.on('update-available', info => {
    sendUpdateStatus('available', { version: info.version });
  });

  autoUpdater.on('download-progress', progress => {
    sendUpdateStatus('progress', { percent: progress.percent });
  });

  autoUpdater.on('update-downloaded', info => {
    sendUpdateStatus('downloaded', { version: info.version });
  });

  autoUpdater.on('error', error => {
    sendUpdateStatus('error', { message: error.message });
  });

  autoUpdater.checkForUpdates().catch(error => {
    sendUpdateStatus('error', { message: error.message });
  });

  scheduleUpdateCheck();
});

ipcMain.handle('install-update', () => {
  isQuitting = true;
  autoUpdater.quitAndInstall(false, true);
});

app.on('before-quit', event => {
  if (!isQuitting) {
    return;
  }
});

Siklus perubahan update yang tepat berbeda-beda tergantung pada platform dan pengaturan pengemasan, sehingga tes dari artefak yang diinstal daripada mode pengembangan. Dokumentasi Electron juga menyebutkan kekhawatiran waktu startup pada Windows, termasuk kasus Squirrel pertama kali. Jangan memicu periksa update sebelum aplikasi telah menyelesaikan inisialisasi spesifik platform yang dibutuhkan.

Tetapkan informasi renderer tanpa menghalangi pekerjaan

Jembatan preload harus menampilkan API yang sempit:

const { contextBridge, ipcRenderer } = require('electron');

contextBridge.exposeInMainWorld('updates', {
  onStatus(callback) {
    ipcRenderer.on('update-status', (_event, status) => callback(status));
  },
  install() {
    return ipcRenderer.invoke('install-update');
  }
});

Garis kemajuan renderer sisi dapat tetap sederhana:

window.updates.onStatus(status => {
  const progress = document.querySelector('#update-progress');
  const message = document.querySelector('#update-message');

  if (status.status === 'progress') {
    progress.hidden = false;
    progress.value = status.percent;
    message.textContent = `Downloading update, ${Math.round(status.percent)}%`;
  }

  if (status.status === 'downloaded') {
    message.textContent = `Version ${status.version} is ready to install`;
  }

  if (status.status === 'error') {
    message.textContent = 'The update could not be downloaded. We will retry later.';
  }
});

Tutup instalasi di belakang persetujuan pengguna di produksi kecuali aplikasi Anda memiliki alasan kuat untuk restart segera. Atur flag sebelum isQuitting flag karena handler tutup jendela normal dapat mencegah installer dari mengambil alih. quitAndInstall()Layar tangkapan dari https://raw.githubusercontent.com/electron-userland/electron-builder/master/docs/electron-builder-autoupdate.png

Dua gagal harus diuji secara eksplisit. Pertama, klien yang sudah berjalan harus memanggil

pada jadwal, bukan hanya pada peluncuran. Kedua, checkForUpdates() event harus mencapai log dan telemetri. Jika aplikasi menelaninya tanpa melaporkan, maka error aplikasi Anda tidak akan mengetahuinya. Alur Kerja Pemecahan Masalah Aplikasi dimulai dengan spekulasi bukan bukti.

Menghubungkan CI/CD untuk Rilis Tanda Tangan dan Manifest

Alur rilis adalah sumber kebenaran untuk apa yang diinstal oleh pengguna. Pembangunan lokal yang berfungsi di satu mesin pengembang tidak membuktikan bahwa file biner, manifest, tanda tangan, dan saluran semua menggambarkan rilis yang sama.

Model publikasi Electron-builder mengharapkan metadata rilis dan target pembaruan untuk berjalan bersama. Untuk banyak konfigurasi, itu berarti artefak seperti latest.yml untuk Windows dan latest-mac.yml untuk macOS, di samping paket khusus platform dan file blockmap. Manifest yang hilang dapat membuat file biner yang valid tetap tidak terlihat oleh klien.

Jadikan tanda tangan eksplisit di CI

Gaya pola GitHub Actions yang sederhana seperti ini:

name: release

on:
  push:
    tags:
      - "v*"

jobs:
  build:
    strategy:
      matrix:
        os: [macos-latest, windows-latest]
    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4
        with:
          node-version: 24
          cache: npm

      - run: npm ci
      - run: npm run test
      - run: npm run build

      - name: Build and publish
        shell: bash
        env:
          CSC_LINK: ${{ secrets.CSC_LINK }}
          CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
          WIN_CSC_LINK: ${{ secrets.WIN_CSC_LINK }}
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        run: npx electron-builder --publish always

Pakai rahasia khusus platform dan simpan bahan tanda tangan di luar repository. Gagal tanda tangan harus menghentikan pekerjaan, bukan menghasilkan fallback tidak tanda tangan yang diunggah secara manual.

Variabel Tujuan
CSC_LINK sertifikat macOS atau referensi sertifikat
CSC_KEY_PASSWORD Kata sandi untuk materi tanda tangan macOS
WIN_CSC_LINK sertifikat Windows atau referensi sertifikat
AWS_ACCESS_KEY_ID Kredensial publikasi dengan akses yang terbatas
AWS_SECRET_ACCESS_KEY Rahasia yang dipasangkan dengan kredensial publikasi

Konfigurasi publikasi harus mengidentifikasi penyedia dan saluran secara konsisten:

{
  "build": {
    "publish": {
      "provider": "s3",
      "bucket": "example-electron-releases",
      "channel": "stable",
      "publishAutoUpdate": true,
      "updaterCacheDirName": "example-desktop-updater"
    }
  }
}

Sebelum publikasi, jalankan pekerjaan pada versi paket, tag, SHA komit, dan hasil uji asap. Setelah publikasi, pastikan bahwa feed mengandung manifest yang diharapkan dan bahwa manifest mengarah ke artefak yang tepat yang dihasilkan oleh pekerjaan tersebut. Petunjuk pengaturan integrasi terus menerus bermanfaat ketika Anda formalisasi periksaan-periksaan tersebut, dan tim yang membandingkan orkestrasi pipa mungkin juga mendapat manfaat dari memahami ketika menggunakan Jenkins dan Ansible bersama-sama.

Perintah-perintah yang umumnya mengungkapkan rilis yang tidak lengkap adalah sengaja membosankan:

npx electron-builder --publish never
test -f dist/latest.yml
test -f dist/latest-mac.yml
find dist -name "*.blockmap" -print

Periksaan-periksaan tersebut tidak menggantikan tes instalasi yang ditandatangani. Mereka menangkap kesalahan operasional mengunggah biner tanpa metadata yang dibutuhkan oleh klien untuk menemukannya.

Rilis, Saluran, dan Strategi Rollback

Apa itu sumber rilis harus berperilaku lebih seperti target pengiriman daripada folder download. Simpan internal, beta, dan latest saluran terpisah, dengan setiap saluran didukung oleh manifest dan set artefak tanda tangan sendiri. Promosi harus memindahkan rilis yang telah diuji antara kebijakan, bukan menggantikan file sementara klien sedang mengunduhnya.

Saluran pemisahan juga melindungi produksi dari bangunan uji coba tidak sengaja. Pembarui harus mengetahui apakah klien termasuk dalam kelompok internal, audiens beta, atau populasi stabil sebelum mengevaluasi sumber.

Pakai kelompok sebelum paparan luas

Apa itu bidang manifest kustom dapat mengungkapkan pengiriman tahap:

version: 4.8.0
path: Example-Setup-4.8.0.exe
sha512: signed-artifact-hash
rolloutPercentage: 10

Proses utama dapat menetapkan wadah stabil per-pengguna, kemudian membandingkannya dengan rolloutPercentagePengasasan stabil penting. Pengguna yang berpindah antara keadaan yang layak dan tidak layak pada setiap periksa akan menerima perilaku tidak terduga dan membuat laporan dukungan sulit untuk diinterpretasikan.

Membesarkan kohort hanya setelah rilis telah bertahan di jendela pengamatan. Jendela yang tepat harus mencerminkan pola penggunaan Anda, tetapi keputusan harus didasarkan pada tanda-tanda, bukan hanya kalender. Ikuti hasil periksa update, penyelesaian download, kesehatan peluncuran, kegagalan, kecuali renderer, dan keberhasilan autentikasi.

Tanda Aksi Alasan
Kerusakan atau kesalahan dalam pakan atau tanda melebihi batas yang disetujui tim Tahan peluncuran Klien mungkin tidak dapat memvalidasi atau menemukan rilis
Pemeriksaan peluncuran gagal setelah update Kembalikan pakan Biner mungkin terpasang tetapi gagal selama startup
Kecuali renderer meningkat setelah promosi Tahan di kohort saat ini Instalasi native mungkin sehat sementara aplikasi baru code tidak sehat
Signal tetap berada dalam anggaran rilis Perluas kelompok Bukti mendukung peningkatan akses

Tidak salah mengacu rollback dengan menghapus artefak. Klien yang sudah ada mungkin memiliki metadata yang disimpan, dan beberapa mungkin sudah menjalankan versi yang buruk. Rencana rollback memerlukan rilis yang ditandatangani sebelumnya, perubahan feed, dan perilaku klien yang dapat pulih.

Aturan operasional: Rollback harus dapat dieksekusi oleh insinyur yang bertugas tanpa membangun aplikasi kembali selama insiden.

Dalam prakteknya, buku petunjuk harus mempromosikan manifest rilis sebelumnya ke saluran yang terkena dampak, membatalkan marker staging, dan memastikan bahwa periksa ulang menyelesaikan ke versi yang aman. Jika masalah ada di renderer code daripada shell native, rollback layer web yang spesifik mungkin lebih cepat. Platform seperti code phased rollouts dapat relevan untuk lapisan pengiriman yang terpisah, tetapi tidak boleh menyembunyikan batasan antara rollback biner native dan rollback bundle web. Capgo phased rollouts Pembaruan Electron mengunduh eksekusi __CAPGO_KEEP_0__ dan dapat menginstalnya dengan interaksi pengguna yang sedikit. Hal itu membuat jalur pembaruan menjadi

__CAPGO_KEEP_0__ phased rollouts

code batasan keamanan, bukan hanya fitur kenyamanan. Dokumentasi resmi Electron menjelaskan keterbatasan platform seperti macOS ATS, dan penutupan keamanan telah mendokumentasikan skenario 2022 di mana penyerang yang mengontrol infrastruktur pembaruan dapat menyajikan paket berbahaya yang masih lolos code-pengecekan tanda tangan, seperti yang dibahas dalam Dokumentasi keamanan pembaruan Electron Builder.

tanda tangan Code tetap menjadi fondasi, tetapi bukan model kepercayaan yang utuh. Tanda tangan setiap rilis, verifikasi sertifikat dan identitas selama CI, dan lakukan prosedur rotasi kunci yang terdokumentasi. Pada macOS, kombinasikan tanda tangan dengan notarisasi dan runtime yang diperkuat sesuai dengan aplikasi Anda. Pada Windows, buat kepemilikan sertifikat, perpanjangan, dan akses pembangunan yang dapat diaudit. Linux memerlukan strategi yang spesifik distribusi karena Electron tidak menyediakan pembaruan universal yang dapat digunakan di sana.

Jaga metadata dengan hati-hati seperti binary

Binary yang ditandatangani masih dapat terkait dengan rilis yang salah jika kanal metadata diserang atau tidak terkonfigurasi dengan benar. Pertimbangkan menambahkan tanda tangan manifest yang diverifikasi terhadap kunci publik yang diintegrasikan dalam aplikasi, enforse versi yang diizinkan minimal, dan tolak penurunan yang tidak terduga kecuali ada jalur pemulihan yang diizinkan secara resmi.

Juga layak untuk dikontrol produksi:

  • Kontrol akses publikasi: Berikan CI hanya hak akses yang diperlukan untuk memublikasikan aset rilis.
  • Jaga rahasia tanda tangan: Simpan sertifikat dan kunci pribadi di penyimpanan rahasia yang dikelola, bukan file repository.
  • Ketergantungan Pin: Kunci Electron, electron-builder, dan dependensi transitif di CI.
  • Ulasan Artifact: Skani paket yang dihasilkan dan bandingkan dengan komit yang dimaksud dan versi.
  • Memerlukan Transportasi yang Aman: Ikuti persyaratan ATS dan HTTPS ketat untuk permintaan pembaruan.
  • Pantau Kegagalan Verifikasi: Tangani kegagalan tanda tangan atau manifest yang berulang sebagai kejadian keamanan, bukan kebisingan jaringan biasa.

Ekosistem alat yang dipelihara Electron terus menambahkan penutupan dan penutupan pembaruan, tetapi pemeliharaan tidak menghilangkan kebutuhan untuk model ancaman. Tujuan praktis adalah memastikan bahwa penyerang yang mengompromikan wadah, CDN, atau langkah pembangunan masih tidak bisa membuat klien menerima rilis yang tidak diotorisasi. Panduan Verifikasi Tanda Tangan Menghadirkan konteks yang berguna untuk merancang lapisan verifikasi tambahan.

Dokumentasi Proses Pembaruan Produksi

Kit Buku dan Daftar Periksa Pembaruan Produksi

Rilis siap hanya ketika seorang insinyur lain dapat mengoperasikannya di bawah tekanan. Simpan daftar periksa dekat dengan pekerjaan pengembangan dan saluran insiden.

Gates Pra-Rilis

  • Identitas Versi: Konfirmasikan versi paket, tag rilis, SHA komit, dan catatan perubahan sesuai.
  • Tanda Tangan: Verifikasi setiap artefak platform ditandatangani dan notarisasi atau validasi setara telah selesai.
  • Kontrak Manifest: Konfirmasikan latest.yml, latest-mac.yml, hash, jalur, dan blockmaps sesuai dengan artefak yang diunggah.
  • Keamanan Saluran: Publikasikan ke feed internal atau beta sebelum mempromosikan saluran rilis.
  • Telemetri: Konfirmasi periksa update, kemajuan download, instalasi selesai, kesehatan peluncuran, dan kesalahan yang datang.

Canary dan peluncuran penuh

  • Pengendalian kohort: Mulai dengan audiens internal atau beta yang sengaja kecil.
  • Anggaran kesehatan: Tahan promosi jika gagal peluncuran, gagal download update, kecuali kejadian renderer, atau gagal autentikasi melebihi batasan yang disetujui tim.
  • Persetujuan promosi: Memerlukan keputusan eksplisit untuk maju atau tidak sebelum memindahkan rilis ke feed stabil.
  • Dampak pelanggan: Siapkan pesan dukungan sebelum distribusi luas, bukan setelah insiden pertama.

Pengembalian insiden

Jika biner baru gagal diluncurkan, proses spawning terganggu, atau download update berhenti selesai, hentikan promosi segera. Kembalikan manifest yang ditandatangani sebelumnya, buat marker staging tidak berlaku, dan pastikan klien segar mengarah ke versi sebelumnya. Kemudian, konfirmasikan melalui telemetri bahwa armada sedang pulih sebelum mengumumkan penutupan.

Perintah rollback yang tepat bergantung pada penyedia Anda, tetapi urutan harus selalu terdokumentasi: Geser manifest saluran ke versi sebelumnya, buat tag staging tidak berlaku, kirim marker update paksa jika perlu untuk pemulihan, dan pastikan jalur downgrade dengan telemetri hidup.. Sebuah rollback yang belum pernah diuji hanya harapan.

Daftar checklist profesional untuk mengelola pembaruan perangkat lunak produksi, termasuk perencanaan, eksekusi, dan langkah-langkah validasi setelah pembaruan.


Capgo menawarkan pembaruan Electron untuk menyampaikan perubahan layer web yang ditandatangani, saluran yang ditargetkan, kontrol rollout, dan observabilitas update tanpa membangun shell native untuk setiap perubahan renderer. Jika Anda ingin memisahkan rilis biner native dari pengiriman JavaScript dan CSS yang dikendalikan, kunjungi Capgo dan evaluasikan bersama dengan pipa rilis Electron yang sudah ada.

Perbarui Hidup untuk Aplikasi Capacitor

Ketika bug layer web masih aktif, kirimkan perbaikan melalui Capgo daripada menunggu hari-hari untuk persetujuan toko aplikasi. Pengguna mendapatkan perbaruan di latar belakang sementara perubahan native tetap dalam jalur review normal.

Bantuan Manusia dari Martin

Mulai Sekarang

Terbaru dari Blog Kami

Capgo memberikan Anda wawasan terbaik yang Anda butuhkan untuk membuat aplikasi mobile yang benar-benar profesional.