İçeriğe geç

Renovate Bot Nedir, Neden Kullanmalısınız?

Renovate, repolarınızdaki bağımlılıkları otomatik tarayıp güncel sürümler için pull request açan açık kaynak bir bot. Dependabot'tan farkları, kurulumu, örnek renovate.json yapılandırması ve self-hosted CI'da kullanımı bu yazıda.

Paylaş
Renovate Bot Nedir, Neden Kullanmalısınız?

Bağımlılık güncellemeleri, çoğu geliştiricinin ihmal ettiği ama teknik borcun en hızlı biriktiği alanlardan biri. package.json, requirements.txt, Dockerfile, GitHub Actions workflow'ları... hepsi zamanla eskir ve bir gün kritik bir güvenlik açığıyla karşınıza çıkar. Renovate tam olarak bu sorunu çözmek için var.

Renovate Nedir?

Renovate, repolarınızdaki bağımlılıkları otomatik olarak tarayan, güncel sürümleri tespit eden ve her güncelleme için ayrı bir pull request açan açık kaynak bir bottur. Mend (eski adıyla WhiteSource) tarafından geliştirilir ve GitHub, GitLab, Bitbucket, Azure DevOps gibi platformlarda çalışır.

Dependabot'a benzese de Renovate çok daha esnek bir yapılandırma sistemine sahiptir. npm, pip, Docker, Terraform, GitHub Actions, Cargo, Go modules dahil onlarca ekosistemi tek bir araçla yönetebilirsiniz.

Neden Dependabot Değil de Renovate?

  • Tek yapılandırma dosyasırenovate.json ile tüm repo genelinde tutarlı kurallar tanımlanır.
  • Gruplama desteği — İlgili paketleri (örneğin tüm eslint-* paketlerini) tek bir PR'da toplayabilirsiniz, PR kalabalığı azalır.
  • Zamanlama kontrolü — Güncellemelerin sadece belirli saatlerde/günlerde açılmasını sağlayabilirsiniz (mesai dışı gece build'lerini tetiklememek gibi).
  • Otomatik merge — Minor/patch seviyesindeki düşük riskli güncellemeler için testler geçerse otomatik merge tanımlanabilir.
  • Daha geniş ekosistem desteği — Docker base image'ları, Helm chart'ları, Terraform provider'ları gibi Dependabot'ın zayıf kaldığı alanlarda daha güçlü.

Kurulum

GitHub üzerinde en pratik yol Renovate GitHub App'i kurmak:

  1. github.com/apps/renovate adresinden uygulamayı yükleyin.
  2. Erişim vermek istediğiniz repoları seçin.
  3. Bot ilk taramadan sonra otomatik olarak bir "Configure Renovate" PR'ı açar; bu PR varsayılan renovate.json dosyasını içerir.

Kendi altyapınızda (self-hosted GitLab, Gitea vb.) çalıştırmak isterseniz renovate npm paketini CLI olarak veya resmi Docker image'ı üzerinden CI pipeline'ında da çalıştırabilirsiniz.

Örnek Yapılandırma

json

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:recommended"],
  "timezone": "Europe/Istanbul",
  "schedule": ["after 22:00 every weekday", "every weekend"],
  "packageRules": [
    {
      "matchUpdateTypes": ["minor", "patch"],
      "automerge": true
    },
    {
      "matchPackagePatterns": ["^eslint"],
      "groupName": "eslint packages"
    }
  ],
  "vulnerabilityAlerts": {
    "enabled": true,
    "labels": ["security"]
  }
}

Bu örnekte:

  • Güncellemeler yalnızca mesai dışı saatlerde açılıyor.
  • Minor ve patch seviyesindeki güncellemeler testler geçerse otomatik birleşiyor.
  • ESLint ile ilgili paketler tek PR'da gruplanıyor.
  • Güvenlik açığı bulunan paketler için ayrı, etiketlenmiş uyarılar oluşturuluyor.

Self-Hosted Ortamlarda Kullanım

Proxmox/Docker tabanlı bir altyapıda çalışan projeler için Renovate'i bir cron job veya GitHub Actions scheduled workflow olarak tetiklemek yaygın bir pattern. Örneğin:

yaml

name: Renovate
on:
  schedule:
    - cron: '0 3 * * *'
  workflow_dispatch:

jobs:
  renovate:
    runs-on: ubuntu-latest
    steps:
      - uses: renovatebot/github-action@v40
        with:
          configurationFile: renovate.json
          token: ${{ secrets.RENOVATE_TOKEN }}

Bu, harici bir servise bağımlı olmadan kendi CI altyapınız üzerinden tam kontrol sağlar.

Pratik İpuçları

  • config:recommended ile başlayın — Sıfırdan kural yazmak yerine önerilen preset üzerine küçük özelleştirmeler eklemek daha sürdürülebilir.
  • Dashboard PR'ını kapatmayın — Renovate, tüm bekleyen güncellemeleri listeleyen bir "Dependency Dashboard" issue'su açar; bu genel görünüm için değerlidir.
  • Lock file maintenance'ı aktif edinlockFileMaintenance seçeneği, doğrudan versiyon değişikliği olmasa bile lock dosyasını düzenli tazeler.
  • Major güncellemeleri ayrı tutun — Major sürüm atlamaları genelde breaking change içerir; bunları otomerge dışında bırakıp manuel gözden geçirin.

Sonuç

Renovate, "bağımlılıkları güncel tutma" işini insan hafızasından çıkarıp sürece dönüştürüyor. İlk kurulumu birkaç dakika sürse de, uzun vadede güvenlik açıklarını erken yakalamak ve teknik borcu biriktirmemek açısından kazandırdığı zaman katbekat fazla. Küçük bir yapılandırma dosyasıyla başlayıp ihtiyaca göre kuralları genişletmek en sağlıklı yaklaşım.

Devamını oku