Memutuskan untuk ganti gigi dari Renovate ke Dependabot adalah langkah yang cukup masuk akal, apalagi kalau kamu ingin ekosistem yang lebih menyatu dengan infrastruktur native GitHub. File konfigurasimu sebelumnya memang sudah cukup matang, lengkap dengan aturan pengelompokan (grouping) hingga skema automerge. Namun, menerjemahkannya ke format Dependabot butuh sedikit penyesuaian karena kedua sistem ini punya filosofi kerja yang berbeda.

- Dukungan Bun: Dependabot belum memiliki ekosistem
bunyang terpisah secara native seperti Renovate. Dia akan membaca project Bun kamu di bawah payung ekosistemnpm(akan mem-parsingpackage.json, tapi perbaikan lockfilebun.lockbmungkin tidak semulus Renovate). - Aturan Waktu (Hourly Limit & Release Age): Dependabot tidak punya fitur untuk menunda rilis selama "2 days" atau membatasi pembuatan PR per jam. Dia hanya membatasi total PR yang terbuka saja.
- Dashboard: File
dependencyDashboarddigantikan secara otomatis oleh tab Security & Insights bawaan GitHub.
Langkah 1: Membuat File dependabot.yml
Alih-alih JSON, Dependabot menggunakan format YAML. Kamu harus membuat file ini dan meletakkannya di path .github/dependabot.yml di dalam repositorimu. Berdasarkan konfigurasimu, kita akan menyetel batasan 5 PR serentak (open-pull-requests-limit), mengelompokkan web-optimizers dan external-services, serta menugaskan PR tersebut ke akun frijal.
version: 2
updates:
# Ekosistem 1: GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
open-pull-requests-limit: 5
assignees:
- "frijal"
# Ekosistem 2: NPM (Untuk Bun / Node.js)
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
open-pull-requests-limit: 5
versioning-strategy: increase # Setara dengan rangeStrategy: "bump"
assignees:
- "frijal"
# Aturan Pengelompokan (Grouping)
groups:
web-optimizers:
patterns:
- "sharp"
- "@minify-html/node"
- "cheerio"
- "@xmldom/xmldom"
- "glob"
external-services:
patterns:
- "wrangler"
- "tumblr.js"
# Mengabaikan update Major (Karena di Renovate kamu set automerge: false)
# Dependabot tetap akan bikin PR Major,
# tapi kita tidak akan meng-automerge-nya nanti. Langkah 2: Mengembalikan "Sihir" Automerge
Di masa lalu, Dependabot punya fitur automerge di dalam YAML-nya. Namun, GitHub sudah menghapus fitur tersebut demi alasan keamanan. Untuk meniru perilaku di file JSON lamamu—yaitu melakukan automerge untuk patch dan minor (kecuali yang berawalan 0.x), serta automerge keamanan—kamu wajib membuat GitHub Actions Workflow khusus.
Buat file baru di .github/workflows/dependabot-automerge.yml dengan konfigurasi berikut:
name: Dependabot Auto-merge
on: pull_request
permissions:
pull-requests: write
contents: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.actor == 'dependabot[bot]'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@v2
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Approve a PR
run: gh pr review --approve "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: Auto-merge untuk Patch dan Minor
# Automerge diaktifkan HANYA jika bukan update Major
if: ${{steps.metadata.outputs.update-type == 'version-update:semver-patch' || steps.metadata.outputs.update-type == 'version-update:semver-minor'}}
run: gh pr merge --auto --squash "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} Penyesuaian Ekstra di Repository Settings
Agar alur kerja GitHub Actions di atas berjalan mulus, pastikan kamu mengaktifkan opsi "Allow auto-merge" di pengaturan repositorimu (Settings* -> General -> Pull Requests). Dengan kombinasi dependabot.yml dan *workflow rahasia ini, kamu berhasil meniru sekitar 80% kekuatan file konfigurasi Renovate lamamu ke dalam ekosistem Dependabot yang jauh lebih ringan.