n n
Neden İhtiyaç Duyuldu?
n nPisilinux 1.2 ve öncesinde, paket derleme aşamasında verdiğimiz ‘pisi bi’ komutu, sisteme derleme aşamasında kullanılıp kullanılmadığına bakmadan, ‘System.devel’ grubunda bulunan bütün paketleri kurar. Eskiden kalan bu davranış şekli, paketlerin bağımlılıklarını düzgün tespit edebilmeyi zorlaştırmıştır.
n nPisi 2.0 ile birlikte, bu eski alışkanlık terk edilip, paketlerin sadece tanımlanmış olan bağımlılıklar ile steril bir ortamda derlenmesine karar verilmiştir. Steril ortam ihtiyacı, paket hazırlayan kişinin, kendi bilgisayarında bulunabilecek sonradan yüklenmiş uygulama ve kütüphanelerden etkilenmeden, sadece dağıtım deposunda bulunan uygulamalar ve kütüphaneleri kullanılarak dağıtıma girecek paketi hazırlama gerekliliğinden çıkmıştır.
n nTeknolojiler
n nGithub ve Webhooks
n nGithub sitesi, geliştirme süreçlerinde kullanabileceğimiz pek çok özellik sağlar. Webhook, bunlardan birisidir. Kod deposundaki yetkili kullanıcılardan birisi, depoya yapılacak güncelleme sonrasında, yapılan güncelleme ile ilgili detay bilgisini, bizim sağladığımız bir sunucudaki url’e veri olarak gönderebilmesini sağlayacak olan webhook ayarını yapabilmektedir. Gelen veri içerisinde yapılan güncelleme ile ilgili bütün detay bilgileri bulunmaktadır. Yeni paket derleme sistemimizin başlangıç noktası da bu webhook ile gelen detaylardır.
n nPisilinux dağıtımının bütün dosyaları github üzerindedir. Pisi paketlerinin her birinin tanım dosyaları ilgili paketçiler tarafından düzenlenip github’a gönderilirler. Depoya kabul işlemi, webhook aracılığıyla yapılan güncellemenin detaylarının kendi sunucumuza gönderilmesine neden olur. Sunucu üzerinde çalışan uygulama, gelen veriyi kullanarak, hangi paketlerde değişiklik yapıldığını tespit eder ve bu paketleri derleme kuyruğuna ekler.
n nFlask, Python Mikroframework
n nYeni paket derleme sistemimizin merkezinde yer alan uygulama, flask ile geliştirilmiştir. Flask, python tabanlı bir mikroframeworktür. REST api şeklinde, http GET ve POST metodlarını kullanan çağrılar ile çalışmaktadır.
n nSteril Derleme Ortamı İçin Docker
n nDocker Nedir?
n nDocker, herhangi bir uygulamanın çalışması için gereken bütün kütüphaneler ve yazılımları bir dosya sistemi altında toplayıp, bu dosya sisteminin docker çalıştırabilen her yerde sorun çıkmadan sözkonusu uygulamayı çalıştırabilmesini sağlar. Örneğin, kurulumu çok karmaşık olabilen bir yazılım, size bir docker konteyneri içinde çalışmaya hazır durumda sunulabilir.
n nBu yöntem, klasik sanallaştırmalardan daha hafiftir. Çoğu sanallaştırma sistemleri, tam donanım sanallaştırması yapmaktadır. Docker ile, uygulama seviyesinde sanallaştırma mümkün olmuştur.
n nBizim Docker Kullanma Yöntemimiz
n nDocker, bize temel sistem paketlerini içeren yaklaşık 80 pisi paketinden oluşan, pisi paketleme sisteminin çalışabilir durumda olduğu en küçük sistemi sunabilmemizi sağlamıştır. Docker uygulamasını uygun parametrelerle çalıştırdığımızda, istediğimiz paketin, derlendiği sistem üzerinde bulunan kütüphanelerden bağımsız olarak derlenebilmesi mümkün hale gelmiştir.
n nYazılan gönüllü uygulaması ile, herhangi bir gönüllü, derleme kuyruğunda beklemekte olan paketlerden birisini alarak kendi sistemindeki pisi docker imajı içinde derlemektedir. Başarılı derleme olursa, oluşan pisi paketi ve derleme aşaması kayıtları (derleme işlemi sırasında oluşan normal ve hata çıktıları) ile birlikte geri göndermektedir. Böylece, başarısız bir derleme işlemini diğer geliştiriciler de olabilecek bütün kayıtları ile inceleyebilmektedirler.
n nGönüllü uygulamasının gönderdiği paketler otomatik olarak test deposuna aktarılmakta, dağıtımı düzenleyen geliştiricilerin uygun görmesinden sonra da stabil depoya taşınmaktadır. Yazının girişinde bahsedilen eski derleme yapısına göre merkezde çok daha az kaynak gerektiren, acil durumlarda cok sayıda gönüllünün derleme işlemine destek olabildiği bir ortam oluşturulmuştur.
n nBu sistemi oluşturan bütün uygulamalar aşağıdaki github adreslerinde bulunmaktadır.
n nhttps://github.com/PisiLinuxNew/pisi-farm
n nhttps://github.com/PisiLinuxNew/gonullu
n nUygulamanın web sitesi ise:
n nhttp://ciftlik.pisilinux.org/ciftlik
n nadresindedir.
n nYAZAN: İlker MANAP
n