๐ค Bedah Workflow upgrade-everything.yml
Otomatis Upgrade & Cleanup Dependensi Node.js + Bikin PR!

๐ฏ Buat Apa Sih Workflow Ini?
Mantap! Workflow GitHub Actions ini beneran keren dan dirancang buat jaga dependensi Node.js di proyek kamu biar tetap update (versi terbaru) dan bersih (buang yang tidak kepakai).
Tidak cuma itu, setelah dia beres-beres, dia bakal ngajuin perubahan itu sebagai Pull Request (PR). Jadi, kamu atau tim bisa cek dulu (review) sebelum perubahannya digabung ke kode utama. Lebih aman, kan?
Enaknya lagi, workflow ini bisa kamu jalankan manual kapan aja kamu mau, atau dijadwalin otomatis jalan sebulan sekali. Jadi, urusan maintenance dependensi bisa lebih enteng!
๐ Gimana Cara Kerjanya? (Langkah demi Langkah)
Workflow ini kerjaannya cukup sistematis. Ini dia urutannya:
- Kapan Jalan? (
on:)- Manual (
workflow_dispatch): Kamu bisa klik tombol 'Run workflow' di tab "Actions" repositori GitHub kamu. Cocok buat ngetes atau kalau lagi pengen update sekarang juga. - Otomatis (
schedule): Udah disetel buat jalan sendiri tiap tanggal 1 jam 2 pagi UTC (itu sekitar jam 10 pagi WITA kalau di Balikpapan). Jadi, awal bulan, dependensi proyekmu otomatis dicek.
- Manual (
- Minta Izin Dulu (
permissions:)Sebelum mulai kerja, workflow ini minta izin dulu ke GitHub:
contents: write: Izin buat nulis ke repositori, soalnya dia bakal ngubah filepackage.jsondanpackage-lock.json, terus bikin branch baru buat PR.pull-requests: write: Izin khusus buat bikin Pull Request. Ini penting sangat biar dia bisa ngajuin perubahannya. Tanpa ini, bakal error kayak yang kamu alamin sebelumnya.
(Izin ini ditulis di level workflow dan di level job, bagus buat kejelasan!)
- Mulai Kerja! (
jobs: maintenance-pr)Cuma ada satu pekerjaan utama di sini, yang jalan di lingkungan Linux (
ubuntu-latest). Langkah-langkahnya:- Ambil Kode (
Checkout code): Ngunduh kode proyekmu ke 'meja kerja' si Actions. - Siapin Alat Node.js (
Setup Node.js): Masang Node.js versi 20 dan aktifin cache npm biar instalasi dependensi bisa lebih cepet kalau tidak banyak berubah. - Pasang Peralatan Tambahan (
Install dependencies (untuk tools)): Jalankannpm install. Ini buat masang tools yang dibutuhin workflow ini (kayaknpm-check-updatesdandepcheck) yang mungkin kamu daftarin didevDependenciesdipackage.json. - Biar Bisa Dijalankan (
Make script executable): Ngasih izin biar skripdata/cleanup.jsbisa dieksekusi. - Langkah 1: Upgrade! (
1. Upgrade dependencies):- Masang
npm-check-updates(ncu) di 'meja kerja'. (Tips: Kalau ncu udah ada di devDependencies, pakainpx ncu ...mungkin lebih simpel). - Jalankan
ncu -u --target minor. Ini perintah saktinya! Dia bakal ngecek semua dependensi dipackage.json, nyari versi minor dan patch terbaru, terus langsung update filepackage.jsonkamu. Dijamin aman dari perubahan besar (major) yang bikin pusing.
- Masang
- Langkah 2: Bersih-bersih! (
2. Cleanup unused packages):- Jalankan skrip
data/cleanup.js. Nah, skrip ini kerjaannya bersih-bersih. Kemungkinan besar dia:- Nyari paket/dependensi yang udah tidak kepakai lagi (mungkin pakai
depcheck). - Nghapus paket 'sampah' itu dari
package.jsonataunode_modules. - Jalanin
npm installlagi biarnode_modulesdanpackage-lock.jsoncocok samapackage.jsonyang udah di-update dan dibersihin.
- Nyari paket/dependensi yang udah tidak kepakai lagi (mungkin pakai
- Jalankan skrip
- Ngecek Ada Hasil Tidak? (
Check for changes):- Langkah cerdas nih! Dia ngecek pakai
git status, "Filepackage.jsonataupackage-lock.jsonada yang berubah tidak ya setelah di-upgrade dan dibersihin?". - Hasilnya disimpan, apakah
true(ada perubahan) ataufalse(tidak ada).
- Langkah cerdas nih! Dia ngecek pakai
- Tes Dulu Kalau Ada Perubahan (
Run tests):- Ini cuma jalan kalau langkah sebelumnya bilang
true. - Dia coba jalanin perintah
npm run builddannpm test(kalau ada dipackage.jsonkamu). Penting banget buat mastiin update dependensi tidak bikin error.
- Ini cuma jalan kalau langkah sebelumnya bilang
- Bikin Laporan (PR) Kalau Ada Perubahan (
Create Pull Request):- Ini juga cuma jalan kalau ada perubahan (dan asumsinya tes tadi lolos).
- Pakai action jagoan
peter-evans/create-pull-requestbuat bikin PR otomatis. - PR-nya dibikin rapi:
- Di branch baru biar tidak ganggu (
chore/auto-maintenance-xxxx). - Judul, pesan commit, dan deskripsinya jelas nerangin isinya (upgrade & cleanup).
- Dikasih label (
dependencies,chore, dll). - Langsung minta review ke kamu (
reviewers: frijal). - Langsung ready, bukan draft.
- Di branch baru biar tidak ganggu (
- Ambil Kode (
โจ Kerennya Workflow Ini Apa Aja?
- โ Serba Otomatis: Bisa jalan sendiri tiap bulan, hemat waktu kamu.
- ๐ Upgrade Aman: Cuma ambil versi minor & patch, risiko error kecil.
- ๐งน Proyek Jadi Rapi: Ada langkah bersih-bersih paket tidak kepakai.
- ๐ง Cerdas: Cuma bikin PR kalau beneran ada yang di-update atau dibersihin.
- ๐งช Ada Tes: Tidak asal bikin PR, dites dulu biar tidak ngerusak.
- ๐ PR Jelas: Laporan perubahannya (PR) informatif dan gampang dimengerti.
- ๐ Izin Lengkap: Udah punya izin yang pas buat bikin PR (ini penting!).
- ๐ฟ Manajemen Branch Oke: Bikin branch baru tiap jalan biar rapi.
Secara keseluruhan, workflow upgrade-everything.yml dan cleanup.js ini adalah contoh yang solid dan bagus buat otomatisasi tugas maintenance dependensi proyek Node.js kamu di GitHub! ๐
๐ Mau Lihat Kodenya Langsung?
Kamu bisa lihat kode lengkap workflow upgrade-everything.yml dan cleanup.js ini langsung dari repositori GitHub:
Lihat upgrade-everything.yml di GitHub Lihat cleanup.js di GitHub
Kamu bisa adaptasi workflow ini untuk proyek Node.js kamu yang lain. Jangan lupa sesuaikan skrip data/cleanup.js (kalau beda) dan nama reviewer di bagian PR.