Yeni Paket Derleme
Sistemi

 

 

Ilker Mustafa Manap

Scania, Stokholm

ilker.manap@scania.com

Konular

  • Eski yapı, eksiklikleri
  • Yeni yapı, sağladıkları

Eski Yapi

  • Eski, ama hala kullanımda, 1.2 sürümü için kullanılıyor.
  • Tek sunucu üzerinde, bütün paketler derlenmeye çalışılıyor.
  • Paket geliştiriciler, kendi sistemlerinde de paket oluşturuyorlar.
  • Basit bir paketin derlenmesi için bile, bütün system.devel grubu kurulmak zorunda.

Eski Yapı, sorunlar...

  • Tek sunucunun derleme hızı ile sınırlıyız.
  • Paketçilerin kendi sistemlerinde oluşturdukları paketlerde uyum sorunu oluyor.
    • Paketçinin sisteminde bulunan kütüphanelerle yeni paket oluşuyor.
    • Eğer denemek için kendi depomuzda bulunmayan bir kütüphane sürümü yüklü ise, paketin içindeki dosyalar da o kütüphane ile derlenmiş oluyor.
    • Sonuç, sistemle uyumsuz paket.

Eski Yapı, sorunlar...

  • Eski farm bilgisayarında tüm paketler kurulu oluyor.
  • Paketçide farm bilgisayarındaki paketlerin hepsi olmuyor.
  • Paketçi ile farm bilgisayarı hiçbir zaman özdeş olmuyor.
  • Paketlerin bağımlılık bilgileri yetersiz.
    • System.devel grubunun tümünün kurulması, bağımlılıkların tespitini güçleştiriyor.
    • Bir paket değiştiğinde, onun hangi paketleri etkilediğini bulmak zorlaşıyor.

Yeni Sistem

  • Eski sistemin yetersiz kaldığı noktaları kapatacak.
  • Steril derleme ortamı.
  • Bağımlılıkların tam tespiti.
  • Github ile entegrasyon.
  • Dağıtık derleme sistemi

Yeni Sistem, Steril Derleme Ortamı

  • 2.0 sürümüne baştan başladık.
  • Chroot içinde pisi çalıştırma ve paket derleme.
    • 75 paketle pisi çalışır hale gelebiliyor, 183 MB.
    • Ek 21 paketle derleme yapabilecek duruma geliyor.
  • İlerleyen aşamada, docker kullanmaya başladık.
    • ertugerata/pisi-chroot-base
    • ertugerata/pisi-chroot-farm

Yeni Sistem, Bagımlılıklar

  • Her paket için bütün bağımlılıkların tespiti
    • acl derlemek için 170 tane başka devel paketi gerekmiyor. Eski yapıda gerekiyor.
    • Her bir paket tek tek ele alınıp bağımlılıkları bulunuyor.

Yeni Sistem, Github Entegrasyonu...

  • Veriler veritabanına aktarılıyor.
  • Derlenmesi gereken paketler tespit edilip derleme kuyruğuna ekleniyor.
  • Farklı paket grupları için farklı docker imajları kullanmak mümkün.
    • Farklı mimariler için  derleme imkanı (i386, arm, vs.)
  • Gönüllüler derliyor.

Dağıtık Derleme Sistemi, Gönüllüler

  • Gönüllünün özel bir şey yapması gerekmiyor.
  • Tek uygulama, derleme sisteminden gerekli bilgileri alıyor.
    • Hangi docker imajı kullanılacak?
    • Hangi paket derlenecek?
    • kernel gerekiyor mu?
  • Kullanıcının sistemi üzerinde docker imajı içinde (steril ortamda) derleme gerçekleşir.
  • Paketler ve log dosyaları geri gönderilir.

Dağıtık Derleme Sistemi, Merkez

  • Merkezde, hangi paketin hangi sırayla derleneceğini belirleyeceğiz. (çalışma devam ediyor)
  • Eksik bağımlılığı olan paketler bekletilir.
  • Derlenen paketler otomatik olarak test deposuna aktarılır.
  • Otomatik olarak yapılabilecek testler konusunda çalışıyoruz.

Sonuç

  • Paket hazırlama aşamalarında, geliştiriciye esneklik kazandırdık.
  • Sistemi kıracak paket oluşturma ihtimali çok azaldı.
  • Çok sayıda paket hızlıca derlenebiliyor.
  • Farklı mimarilere de destek verebilecek esnek bir altyapı hazır.
Made with Slides.com