BUILDBOT

τэкnoкraτ

Buildbot bir continous integration (Sürekli entegresyon) servistir.Sürekli entegrasyon demek proje üzerinde yapılan her commit ardından, tüm sistemin çalışır durumda olduğunu, yapılan değişikliğin sistemin bazı bölümlerinde hataya yol açmadığını tespit etmek için kullanılan yöntemdir.Şimdi kısaca Continous Integration(C.E) neden ihityacımız var onlara değinelim. Continuous Integration un artıları:

  • Hatalar hızlı bir şekilde tespit edilir. (otomotize edildiği için manuel yapılan testlerden daha hızlı bir şekilde sonuç alınır.)
  • tahminler yerine direk yazılım üzerinden test yapılır. (Burası bozulmadığına göre bunu kullanan diğer şurada da bir şey olmaz heralde gibi.)
  • Manuel yapılan işlemleri otomotize eder ve insan faktörünün hatasını ortadan kaldırır.

Continuous Integration yapmak için temel gereksinimler:

  • Sürüm kontrol sistemi kullanıyor olmak. (svn, git, mercurial…)
  • Projemizi test ile geliştiriyor olmak.
  • Bir Continuous Integration tool u kullanıyor olmak.

BUILDBOT SİSTEM YAPISI

screenshot

Yukarıdaki şekle göre buildbot 4 ana kısımdan oluşur.İlk kısım projemizin olduğu ve değişikliklerin herhangi bir VCS(Version Control System git,cvs ...vb) tarafından kontrol edilen depomuz. 2.kısım Build Master bütün konfigürasyon ayarlarımızın yapıldığı bölüm. 3. kısım Slave yani build master komutlarının işleneceği bölüm. 4. ve son kısım ise işlenen komutların durumları ile ilgili bilgi veren Notifier kısmı. Buildbot sistem yapısı bu dört ana temel üzerine kurulmuştur.Şimdi tek tek bunları inceleyelim.

BUILDBOT KONSEPT

VCS changes:Her reponun bir vcs tarafından kontrol edildiğini zaten belirtmiştik.BU şekilde repolarımızı otomatik olarak pull,merge vb.. edebilir.İstediğimiz branchleri filtreleyebiliriz.Hangi dosyalarda değişiklik olduğunu buildbot'un web arayüzünden erişebiliriz.(Github'ta commitlerin gösterildiği gibi)

Schedulers: Schedulers(zamanlayıcılar) build ve builder'ları çalıştıran zamanlayıcılardır.Her zamanlayıcı benzersiz bir isme sahiptir ve çalıştıracakları builder isimlerini barındırırlar.Zamanlayıcılar bize çom çeiştli imkânlar sunar, Örneğin istediğimiz projeleri filtreleyebilir ve aynı anda birden fazla repo çalıştırabiliriz.Buildbot bize çeşitli scheduler tanımlamaları sunar.

SingleBranchScheduler:Adından da anlaşılacağı gibi tek bir branch için çalışır.

AnyBranchScheduler: Her branch için çalışır.

PeriodicScheduler: Peirodic olarak belirlenen zaman aralığında düzenli olarak çalışır

NightlyScheduler: Günlük, gecelik, haftalık aylık, haftanın herhangi günleri veya ayın herhangi haftalarında düzenli olarak çalışır.

TryScheduler: Geliştirecilerin kodlarını commit etmeden önce ne olacağını görmelerini sağlamak için kullanılır.

TriggerableScheduler:Bir testin çalışması diğer testin bitmesine bağlı olduğu gibi durumlarda kulanılır. Zamanlayıcılar biribirini tetikleyerek builder'ların çalışmasını sağlar.

Builders: Her builder kendi içinde tanımlanmış bir build factory ve adımlardan oluşur.Oluşturulan builder'lar belirtilen slave'lerde çalıştırılır.

BuildFactories: BuildFactories'ler builder içinde tanımlanır. Her buildin biribirini takip edeceği adımlar tanımlanır.

BuildSteps: BuildFactory objesinin adaımlarını oluşturur. (Build Steps)

StatusTargets:Build'ler tamamlandığı zaman sonuçları görebilmemizi sağlar.En çok kullanılan WebStatus ve MailNotifier'dir

WebStatus: Buildmaster içinde web server olarak çalışır. Tarayıcından bilgileri görebilirsin.

MailNotifier: Sonuçları mail olarak gönderir.

Ayrıntılı olarak bakmak için Manuel Configuration bakabilirsiniz.

BUILDBOT İLK KURULUM

Buildbot python tabanlı bir sistemdir.Kurulumdan önce gerekli paketler python, Venv(VirtualEnvironment), pip, Git.

``` {.sourceCode .bash} $ cd ~

$ mkdir -p ~/buildbot

$ cd buildbot

$ virtualenv --no-site-packages buildbot

$ source buildbot/bin/activate

$ pip install sqlalchemy==0.7.10

$ pip install buildbot

*Not*: Kurulum python2.7 destekler yani eğer buildbotu python3 paketi
içine kurmak isterseniz hata verecektir.Ancak kurulumdan sonra
konfigürasyon ayarları hem python2 hem python3 uyumludur.

Buildmaster kurulumunu yapıyoruz

``` {.sourceCode .bash}
(buildbot)user@ubuntu:~/buildbot$ buildbot create-master master

(buildbot)user@ubuntu:~/buildbot$ mv master/master.cfg.sample master/master.cfg

Master'ı başlatıp log dosyasında çalışıp çalışmadığını kontrol edelim

``` {.sourceCode .bash} (buildbot)user@mubuntu:~/buildbot\( buildbot start master (buildbot)user@ubuntu:~/buildbot\) tail -f master/twistd.log

Slave oluştutalım

``` {.sourceCode .bash}
(buildbot)user@ubuntu:~/buildbot$ pip install buildslave
(buildbot)user@ubuntu:~/buildbot$ tail -f master/twistd.log
(buildbot)user@ubuntu:~/buildbot$ buildslave create-slave slave localhost:9989 your_slave_name our_passwd

Slave'i başlatalım

{.sourceCode .bash} (buildbot)user@ubuntu:~/buildbot$ buildslave start slave

Tarayıcıdan http://localhost:8010 yazarak her şeyin düzgün olarak çalıştığını görebilirsiniz. Daha ayrıntılı kurulum için http://docs.buildbot.net/current/tutorial/firstrun.html bakabilirsiniz.

BUILDBOT SONUÇLAR

Buildbotun genel çalışması bu şekildedir.Proje reposu VCS ile kontrol ediilr.Buildmaster'da konfigurasyon dosyası hazırlanır.Hazırlanan buildler slave'lerde çalıştırılır.Sonuçlar Notifier'lar sayesinde elde edilir

Buildbot gelişmiş bir web arayüzüne sahiptir.Şİmdi web arayüzünde bizi neler bekliyor biraz ondan bahsedelim.

Örnek buildbot web arayüzü için http://www.tddft.org/programs/APE/buildbot/ bakabilirsiniz

Waterfall Display: Bu bölüm bize çalışan builder'ların sonuçlarının listelendiği kısımdır. Bize çalışan testleri, test sonuçlarını, hangi builderda çalıştığını, testlerin geçip geçmediği gibi sonuçları görmemeizi sağlar.

Grid:Bize son çalışan builder'ları ve sonuçlarını listeler.

Console: Yine burada yapılan commitleri ve test sonuçları görülebilir.Test sonuçları testin başarılı olup olmamasına göre değişiklik gösterir.Örneğin test başarılıysa yeşil değilse kırmızı test daha başlamamışsa sarı renktedir.Bu renkleri ve anlamlarını yine konsol kısmından görebiliriz.

Builders: BUrada son çalışan builder'ları ve sonuçlarını görebiliriz.

Recent Builds: Çalışan son 20 buildi ayrıntılı olarak listeler.

Buildslave: Slave'leri listeler.

ChangeSources:Takip edilen proje repolarını izler.

JSON API: Buildbot bize yukarıda söylediğimiz bilgileri detaylı olarak çekebileceğimiz bir api sunar.Bu apiyi kullanarak bilgileri çekebilir ve istediğimiz gibi kullanabiliriz.



Comments !