Ana Sayfa

Dependabot'ın Gerçek Yüzü: GitHub'ın Bağımlılık Yönetimi Aracı

1 dk okuma

Çoğu geliştirici Dependabot'ı, repolarını izleyen ve güncellemeler çıktığında pull request oluşturan akıllı bir bot olarak düşünür. Ancak makale, bunun doğru olmadığını ortaya koyuyor. Dependabot aslında, kendi başına hiçbir durumu tutmayan, her çalışmada sıfırdan başlayan, tamamen durumsuz bir Ruby kütüphanesidir. GitHub'ın tescilli altyapısı, bu kütüphaneyi çevreleyerek tüm koordinasyon, zamanlama ve durum takibi gibi kritik görevleri üstlenir. Bu ayrım, Dependabot'ın nasıl çalıştığını anlamak için temel bir noktadır.

Mayıs 2024'te GitHub, dependabot-core kütüphanesini ticari kullanımı kısıtlayan Prosperity Public License'tan MIT lisansına geçirdi. Bu değişiklik, bağımlılık manifestlerini ayrıştırma, registry'leri kontrol etme ve dosya değişiklikleri oluşturma gibi temel güncelleme mantığını açık kaynak hale getirdi. Ancak, hizmetin bir bütün olarak çalışmasını sağlayan zamanlama, durum yönetimi ve koordinasyon mekanizmaları hala GitHub'ın tescilli mülkiyetinde kalmaya devam ediyor. Bu da demek oluyor ki, Dependabot'ı kendi sunucularınızda barındırmak isterseniz, bu tescilli kısımları kendiniz yeniden inşa etmeniz gerekecek.

dependabot-core kod tabanı, 25'ten fazla paket ekosistemini destekleyen yaklaşık 330.000 satır Ruby kodundan oluşuyor. Her ekosistem, FileFetcher, FileParser, UpdateChecker ve FileUpdater olmak üzere dört ana sınıfı uyguluyor. Bu sınıfların karmaşıklığı ekosisteme göre büyük farklılıklar gösteriyor; örneğin, npm ekosistemi package.json, çeşitli lockfile formatları, yarn ve pnpm gibi araçları ele alırken oldukça karmaşık bir yapıya sahip. Güncellemeleri gerçekleştirmek için dependabot-core, yerel paket yöneticisi araçlarını kullanıyor. Bu durum, Python Dockerfile'ının altı farklı Python sürümünü barındırması ve npm ekosisteminin eski npm 6 ve Yarn 1.x gibi özel çözümlerle çalışması gibi ek karmaşıklıklar yaratıyor.

İçgörü

Dependabot'ın çekirdek mantığının açık kaynak olması, bağımlılık yönetim araçlarının nasıl çalıştığına dair şeffaflığı artırırken, hizmetin tam işlevselliği için hala tescilli altyapıya bağımlı olduğunu gösteriyor.

Kaynak