Cara Saya Memperbarui Setiap Cabang Tanpa Menyentuh Satu Mesin Pun

Saya membangun alat desktop internal menggunakan Electron. Alat ini berjalan di mesin-mesin di berbagai kantor cabang. Kantor-kantor ini memiliki jaringan yang berbeda dan tingkat keahlian IT yang berbeda pula.

Minggu lalu, saya perlu mengirimkan perbaikan ke setiap mesin segera. Saya tidak mengunjungi cabang mana pun. Saya tidak mengirimkan file setup melalui email. Saya tidak meminta siapa pun untuk mengklik instal.

Saya menjalankan dua perintah di terminal saya dan pergi. Menjelang keesokan paginya, setiap mesin sudah mendapatkan pembaruan tersebut.

Ini berhasil karena saya telah membangun sistem auto-update menggunakan electron-updater beberapa bulan yang lalu.

Saat Anda mengirimkan perangkat lunak ke lokasi terpencil, Anda akan menghadapi masalah-masalah berikut:

  • Anda tidak bisa mengandalkan pengguna untuk menjalankan installer.
  • Anda tidak bisa berasumsi bahwa dukungan IT ada di lokasi.
  • Akses jarak jauh tidak dapat diskalakan.
  • Distribusi manual menjadi hambatan terbesar Anda.

Solusinya adalah dengan mengeluarkan installer dari proses tersebut.

Sistem saya menggunakan generic HTTP provider. Saya menghosting pembaruan di server web pribadi melalui SFTP. Hal ini menjaga perangkat lunak internal tetap aman dari repositori publik seperti GitHub.

Prosesnya memiliki empat lapisan:

  • Build and publish: Kompilasi aplikasi dan unggah file ke server.
  • Main process: Periksa versi baru dan unduh secara diam-diam.
  • Preload bridge: Teruskan event pembaruan ke UI dengan aman.
  • Renderer UI: Tunjukkan progres kepada pengguna tanpa membiarkan mereka menghentikannya.

Berikut adalah alur pembaruannya:

  1. Saya menjalankan skrip publish. Skrip ini membangun aplikasi dan mengunggah file-filenya.
  2. Aplikasi menggunakan file latest.yml untuk memeriksa pembaruan. File ini berisi versi dan hash keamanan.
  3. Saat diluncurkan, aplikasi memeriksa server.
  4. Jika versi baru tersedia, aplikasi akan mengunduhnya secara otomatis.
  5. Setelah pengunduhan selesai, aplikasi akan keluar dan menginstal pembaruan tersebut.

Saya menggunakan autoDownload: true. Ini berarti pengguna tidak perlu mengklik apa pun. Saya juga menampilkan progress bar di UI. Ini memberikan visibilitas kepada pengguna tanpa memaksa mereka untuk mengambil keputusan.

Pelajaran dalam membangun perangkat lunak desktop internal:

  • Gunakan generic HTTP provider untuk kontrol penuh.
  • Selalu timpa file metadata saat mengunggah.
  • Bangun logika resume ke dalam skrip unggah Anda untuk koneksi yang tidak stabil.
  • Gunakan pengunduhan diam-diam tetapi tampilkan progress bar yang terlihat.
  • Selalu verifikasi pembaruan dengan hash SHA-512.

Membangun pipeline ini sejak dini telah menghemat saya berhari-hari pekerjaan manual.

Sumber: https://dev.to/vinniharu/how-i-pushed-a-critical-update-to-every-company-branch-without-touching-a-single-machine-electron-4pk1