Deprecation Node image

Deprecation Node 20 pada GitHub Actions dan Cara Migrasi ke Node 24 🔁

Ringkasnya Node 20 akan mencapai end of life dan GitHub Actions berencana migrasi ke Node 24. Di halaman ini aku jelaskan apa yang berubah siapa terdampak kapan dan bagaimana langkah praktis untuk memigrasi action dan runner Anda. Santai dan langsung ke inti.

Ilustrasi Node deprecation

Apa yang terjadi

Node 20 akan mencapai end of life pada April 2026. GitHub Actions memulai proses deprecation dan berencana menjadikan Node 24 sebagai default pada 2 Juni 2026. Runner terbaru mendukung Node 20 dan Node 24 namun default akan berubah. Ada flag env untuk menguji atau menunda transisi.

Siapa yang terdampak

Pengguna GitHub Actions yang menjalankan JavaScript actions atau custom actions berbasis Node. Juga pemilik self hosted runner terutama yang memakai macOS lama atau arsitektur ARM32. Repos yang bergantung pada modul native perlu perhatian khusus.

Kapan perubahan berlaku

Ringkasan tanggal penting

  • Node 20 EOL April 2026
  • Runner mulai default ke Node 24 pada 2 Juni 2026
  • Node 20 akan dihapus dari runner pada musim gugur 2026

Di mana perubahan ini relevan

Perubahan berlaku pada GitHub hosted runners dan self hosted runners. Jika Anda mengandalkan macOS runner versi lama atau ARM32 self hosted runner, Anda harus meninjau kompatibilitas karena Node 24 tidak mendukung macOS 13.4 dan tidak mendukung ARM32.

Mengapa ini penting

Node versi lama tidak lagi menerima pembaruan keamanan dan perbaikan. Migrasi memastikan CI tetap aman dan kompatibel dengan ekosistem paket terbaru. Selain itu perubahan default runner dapat memicu kegagalan build jika dependensi belum kompatibel dengan Node 24.

Bagaimana langkah langkah migrasi praktis

Langkah langkah prioritas yang aku rekomendasikan untuk tim dan repo

  1. Uji lokal dengan Node 24 menggunakan nvm
  2. Perbarui engines di package json jika siap
  3. Perbarui dan rebuild native modules seperti sharp
  4. Uji workflow di GitHub Actions dengan env flag untuk Node 24
  5. Siapkan runner modern untuk macOS dan arsitektur yang didukung

Langkah detail dan perintah contoh

Contoh perintah untuk uji lokal dan CI

Uji lokal dengan nvm

nvm install 24
nvm use 24
npm ci
npm run test

Perbarui engines di package json

{
 "engines": {
 "node": ">=24.0.0"
 }
}

Rebuild native modules

npm ci
npm rebuild
# atau jika perlu build from source
npm ci --build-from-source

Uji workflow di GitHub Actions dengan env flag

env:
 FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

Jika perlu tunda transisi sementara

env:
 ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true

Daftar paket di package json yang perlu diperiksa

Contoh daftar dependensi yang Anda sebutkan sebelumnya. Periksa versi dan kompatibilitas native modules

@minify-html/node ^0.18.1
@xmldom/xmldom ^0.9.8
cheerio ^1.2.0
glob ^13.0.6
sharp ^0.34.5
tumblr.js ^5.0.1
wrangler ^4.72.0
node >=20.0.0

Perhatikan khusus sharp dan modul native lain. Cari rilis yang menyatakan dukungan Node 24 dan lakukan rebuild.

Risiko umum dan mitigasi

  • Build native gagal mitigasi perbarui modul dan rebuild
  • macOS runner lama tidak kompatibel mitigasi upgrade runner atau gunakan self hosted modern
  • Self hosted ARM32 tidak didukung mitigasi pindah ke x64 atau ARM64

Checklist migrasi singkat

  1. Backup konfigurasi CI dan workflow
  2. Perbarui engines di package json jika sesuai
  3. Perbarui dependensi native ke versi yang mendukung Node 24
  4. Jalankan test matrix pada Node 24
  5. Perbarui dokumentasi dan beri tahu tim
  6. Rencanakan cutover sebelum 2 Juni 2026

FAQ singkat

Apakah aku harus migrasi sekarang Jika repo Anda menggunakan modul native atau runner macOS lama sebaiknya uji sekarang dan rencanakan migrasi.

Bagaimana jika build gagal di Node 24 Periksa error rebuild native modules perbarui versi modul dan jalankan npm rebuild atau build from source.

Referensi dan sumber

Ringkasan ini berdasarkan pengumuman deprecation dan praktik migrasi umum untuk Node dan CI. Pastikan cek dokumentasi resmi GitHub Actions dan rilis modul native yang Anda gunakan.