๐Ÿค– Bedah Workflow upgrade-everything.yml

Otomatis Upgrade & Cleanup Dependensi Node.js + Bikin PR!

Ilustrasi workflow otomatis

๐ŸŽฏ 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:

  1. 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.
  2. 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 file package.json dan package-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!)

  3. Mulai Kerja! (jobs: maintenance-pr)

    Cuma ada satu pekerjaan utama di sini, yang jalan di lingkungan Linux (ubuntu-latest). Langkah-langkahnya:

    1. Ambil Kode (Checkout code): Ngunduh kode proyekmu ke 'meja kerja' si Actions.
    2. 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.
    3. Pasang Peralatan Tambahan (Install dependencies (untuk tools)): Jalankan npm install. Ini buat masang tools yang dibutuhin workflow ini (kayak npm-check-updates dan depcheck) yang mungkin kamu daftarin di devDependencies di package.json.
    4. Biar Bisa Dijalankan (Make script executable): Ngasih izin biar skrip data/cleanup.js bisa dieksekusi.
    5. Langkah 1: Upgrade! (1. Upgrade dependencies):
      • Masang npm-check-updates (ncu) di 'meja kerja'. (Tips: Kalau ncu udah ada di devDependencies, pakai npx ncu ... mungkin lebih simpel).
      • Jalankan ncu -u --target minor. Ini perintah saktinya! Dia bakal ngecek semua dependensi di package.json, nyari versi minor dan patch terbaru, terus langsung update file package.json kamu. Dijamin aman dari perubahan besar (major) yang bikin pusing.
    6. Langkah 2: Bersih-bersih! (2. Cleanup unused packages):
      • Jalankan skrip data/cleanup.js. Nah, skrip ini kerjaannya bersih-bersih. Kemungkinan besar dia:
        1. Nyari paket/dependensi yang udah tidak kepakai lagi (mungkin pakai depcheck).
        2. Nghapus paket 'sampah' itu dari package.json atau node_modules.
        3. Jalanin npm install lagi biar node_modules dan package-lock.json cocok sama package.json yang udah di-update dan dibersihin.
    7. Ngecek Ada Hasil Tidak? (Check for changes):
      • Langkah cerdas nih! Dia ngecek pakai git status, "File package.json atau package-lock.json ada yang berubah tidak ya setelah di-upgrade dan dibersihin?".
      • Hasilnya disimpan, apakah true (ada perubahan) atau false (tidak ada).
    8. Tes Dulu Kalau Ada Perubahan (Run tests):
      • Ini cuma jalan kalau langkah sebelumnya bilang true.
      • Dia coba jalanin perintah npm run build dan npm test (kalau ada di package.json kamu). Penting banget buat mastiin update dependensi tidak bikin error.
    9. 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-request buat 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.

โœจ 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.