: Undefined index: HTTP_ACCEPT_LANGUAGE
: /home/pisilinux/domains/pisilinux.org/private_html/External/Starting/Autoload/MyDefines.php
: 2
Bir Continuous Integration Denemesi, Yeni Pisi Çiftliği

Bir Continuous Integration Denemesi, Yeni Pisi Çiftliği

Neden İhtiyaç Duyuldu?

Pisilinux 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.

Pisi 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.

Teknolojiler

Github ve Webhooks

Github 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.

Pisilinux 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.

Flask, Python Mikroframework

Yeni 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.

Steril Derleme Ortamı İçin Docker

Docker Nedir?

Docker, 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.

Bu 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.

Bizim Docker Kullanma Yöntemimiz

Docker, 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.

Yazı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.

Gö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.

Bu sistemi oluşturan bütün uygulamalar aşağıdaki github adreslerinde bulunmaktadır.

https://github.com/PisiLinuxNew/pisi-farm

https://github.com/PisiLinuxNew/gonullu

Uygulamanın web sitesi ise:

http://ciftlik.pisilinux.org/ciftlik

adresindedir.

YAZAN: İlker MANAP


ERKAN IŞIK
06-07-2018 832