GitHub telah menghapus Node.js 20 dari runner GitHub Actions. Perubahan ini berlaku sejak 23 September 2026, ketika runtime tersebut tidak lagi tersedia untuk menjalankan JavaScript action. Pemilik action yang masih mendeklarasikan `runs.using: node20` perlu merilis pembaruan dengan `node24`, sedangkan pengguna workflow harus memperbarui versi action yang mereka pakai.

Perubahan ini bukan sekadar kenaikan versi Node di mesin CI. `runs.using` adalah bagian dari metadata sebuah JavaScript action. Nilai itu menentukan runtime yang dipakai GitHub untuk menjalankan file utama action, termasuk skrip `pre` dan `post` jika action memilikinya. Dokumentasi GitHub sekarang mencantumkan `node20` dan `node24` sebagai pilihan runtime yang tersedia, tetapi pengumuman penghapusan Node 20 menjelaskan bahwa runner GitHub-hosted sudah beralih ke Node 24 dan opt-out sementara tidak lagi berlaku.

Bagi pembuat action, pekerjaan utamanya ada di file `action.yml` atau `action.yaml`. Metadata perlu diubah dari pola seperti `using: node20` menjadi `using: node24`, lalu kode action dan dependensinya harus diuji di Node 24. Setelah itu, pemilik action perlu membuat rilis baru agar pengguna dapat mengambil versi yang sudah diperbarui. Mengubah metadata di branch utama saja tidak otomatis memperbaiki workflow yang masih mengunci action ke tag atau rilis lama.

Bagi pengguna GitHub Actions, langkah yang lebih praktis adalah memperbarui action pihak pertama dan pihak ketiga ke versi terbaru. GitHub mengatakan seluruh versi terbaru action pihak pertamanya sudah diperbarui agar menggunakan Node 24. Workflow yang masih memakai rilis lama dapat terus menunjuk ke metadata Node 20, sehingga kegagalannya mungkin baru terlihat ketika job berjalan atau ketika sebuah action dipanggil dalam pipeline yang jarang digunakan.

Perubahan ini juga membawa batas kompatibilitas yang perlu diperiksa. Node 24 tidak kompatibel dengan macOS 13.4 dan versi yang lebih lama. GitHub juga menyebut bahwa Node 24 tidak memiliki dukungan resmi untuk ARM32. Akibatnya, self-hosted runner yang memakai sistem operasi tersebut atau arsitektur ARM32 tidak lagi didukung setelah Node 20 dihapus. Ini bukan berarti semua runner macOS atau ARM langsung bermasalah; yang perlu diperiksa adalah versi sistem operasi dan arsitekturnya.

Ada lapisan kedua yang sering tertutup oleh pembicaraan tentang runtime action: perangkat lunak runner itu sendiri. GitHub mendokumentasikan bahwa self-hosted runner secara default memperbarui diri ketika versi baru tersedia. Jika pembaruan otomatis dimatikan, operator tetap harus memasang versi baru dalam 30 hari. Runner yang tidak diperbarui dapat berhenti menerima antrean job, dan pembaruan keamanan kritis dapat membuat job ditahan sampai runner diperbarui.

GitHub juga sedang memperketat syarat versi minimum self-hosted runner. Dalam jadwal yang diumumkan pada 12 Juni 2026, GitHub Enterprise Cloud dijadwalkan memasuki penegakan penuh pada 25 September 2026. Runner di bawah versi minimum dapat gagal mendaftar ulang, sementara runner yang terlalu lama dapat berhenti menjalankan workflow. GitHub menyarankan operator memperbarui image VM, container, skrip instalasi, dan template runner—bukan hanya memperbaiki satu mesin yang sedang aktif.

Dua perubahan ini saling berkaitan, tetapi tidak sama. Node 20 adalah runtime untuk JavaScript action. Versi runner adalah perangkat lunak yang menghubungkan mesin self-hosted ke layanan GitHub Actions. Memperbarui salah satunya tidak selalu memperbarui yang lain. Tim yang mengelola CI/CD perlu memeriksa metadata action, versi action yang dipanggil dalam workflow, versi runner, sistem operasi, dan arsitektur secara terpisah.

Pemeriksaan pertama dapat dilakukan dengan mencari `runs.using` di repository yang berisi custom action. Untuk workflow biasa, periksa baris `uses:` dan lihat apakah action yang dipanggil sudah memiliki rilis yang mendukung Node 24. Jika pipeline berjalan pada self-hosted runner, inventarisasi versi runner melalui pengaturan organisasi atau API GitHub, lalu cocokkan dengan jadwal dukungan yang berlaku. Jangan mengandalkan label seperti `ubuntu-latest` untuk menjawab kondisi self-hosted runner karena label itu tidak menggambarkan mesin yang dikelola sendiri.

Penghapusan Node 20 juga memperlihatkan pola pemeliharaan yang penting di ekosistem CI. Runtime bawaan membuat action lebih mudah dipakai, tetapi perubahan platform tetap dapat memutus integrasi lama. Action yang tidak dirawat akan menjadi titik rapuh di banyak workflow sekaligus, terutama jika digunakan oleh repository lain sebagai dependensi. Karena itu, pemilik action sebaiknya menguji rilis baru pada sistem operasi yang benar-benar didukung, memperbarui dokumentasi, dan memberi catatan migrasi yang jelas.

Untuk sebagian besar pengguna, solusi akhirnya sederhana: gunakan rilis terbaru action, pastikan custom action sudah mendeklarasikan Node 24, dan perbarui self-hosted runner secara berkala. Bagian yang tidak sederhana adalah menemukan semua tempat yang masih mengunci Node 20 atau berjalan di hardware lama. Setelah 23 September 2026, masalah itu bukan lagi peringatan migrasi. Ia menjadi batas kompatibilitas yang harus ditangani sebelum pipeline berikutnya dijalankan.

Sumber utama: - GitHub Changelog, “Node 20 is no longer available in GitHub Actions” (23 September 2026): https://github.blog/changelog/2026-09-23-node-20-is-no-longer-available-in-github-actions/ - GitHub Changelog, “Deprecation of Node 20 on GitHub Actions runners” (19 September 2025, diperbarui 25 Agustus 2026): https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/

Sumber tambahan: - GitHub Docs, “Metadata syntax reference”: https://docs.github.com/en/actions/reference/workflows-and-actions/metadata-syntax - GitHub Docs, “Self-hosted runners reference”: https://docs.github.com/en/actions/reference/runners/self-hosted-runners - GitHub Changelog, “GitHub Actions: Minimum version enforcement timeline for self-hosted runners” (12 Juni 2026): https://github.blog/changelog/2026-06-12-github-actions-minimum-version-enforcement-timeline-for-self-hosted-runners/