Bamboo ile Sürekli Bütünleştirme

Bamboo, yazılım uygulamaları için sürüm yönetimini otomatikleştirmekte kullanılan, Atlassian tarafından geliştirilmiş bir sürekli bütünleştirme (continuous integration) sunucusudur.
Peki nedir bu sürekli bütünleştirme?
Sürekli bütünleştirme, her yapılan değişikliğin sistemde sınanması olayıdır. Yazılım sürecinde geliştirilen farklı modüllerin en az sorunla bir araya getirilmesi amaçlanmaktadır.
- Sürekli bütünleştirme projeler için oluşacak riskleri azaltır.
- Sürekli tekrarlayan manuel kontrol edilen süreçleri indirger.
- Alınan geri bildirimlerle kaliteyi artırır.
- Normalde ayrı modülleri geliştiren geliştiriciler için takım olarak hızlı geliştirmeyi sağlar.
Sürekli bütünleştirme ile ilgili birçok araç bulunur:
- Bamboo, sürekli bütünleştirme sunucusu olarak görev yapan araçlardan biridir.
- Bamboo, birçok sürüm kontrol sistemini desteklemesi bilgilendirme sisteminin çeşitli olması ve daha birçok özelliğiyle önemli sürekli bütünleştirme araçlarından biridir.
- Bamboo’nun yanı sıra Java ile yazılmış özgür yazılım olan Jenkins de kullanılabilir.

Bamboo’da İş Akışı Organizasyonu
Bamboo’da çalışma şeklinde proje, plan, aşama, iş ve görev kavramlarını kullanır.
- Proje
Bir veya daha fazla planları vardır. Projedeki planlar için raporlama sağlar. Diğer uygulamalara olan bağlantıyı sağlar.
- Plan
Varsayılan depoyu belirtir. Bamboo içinde kullanılacak plan değişkenlerinin tanımı sağlar. İnşa sonuçlarını belirtir.
- Aşama
Bir veya birden fazla iş içerebilir. İşleri çok ajanlı olarak paralel bir şekilde işler. Sonraki aşamadan önce o aşamada bütün işler başarıyla tamamlanmış olmalı.
- İş
Aynı ajan üzerinde bir yada daha fazla görevleri sıralı işler. Hangi görevler yerine getirildiğini kontrol eder. Sadece önceki aşamada üretilen veriler kullanılabilir. İnşa sonucunu veya inşa verilerini etiketlemek için etiket belirtilir.
- Görev
Küçük bir birimdir. Kaynak kodu alır betikleri çalıştırır veya test sonuçlarını ayrıştırır. Bamboo’nun çalışma dizinindeki işleri sıralı olarak çalıştırır.
Bamboo uygulamaların inşasını ve testini koordine eder ve zamanlar. Böylece kurulumlar ve testler otomatikleştirilmiş olur. Bu nedenle bamboo için aşağıdakilere ihtiyaç vardır:
- Projenin bulunduğu kod deposu
- İnşa betikleri
- Testler
Bamboo’da yetkili birisi proje açma görevini yapar ve proje için kaynak kodların bulunduğu depoyu belirtir. Projeye ait testler için test görevleri eklenmelidir. Görevler eklendikten sonra periyodik olarak veya manuel olarak herhangi bir zamanda çalıştırılabilir. Ayrıca tetikleyici ile kodların bulunduğu merkez depoda yeni bir commit olması halinde çalışacak görevler arasında kuyruğa ekler.

Bamboo, inşa ve test sürecini genel olarak yürütür. Yerel bir ortama bağlı değildir. İnşa ve bütünleştirme testleri geliştiricinin kodu commit etmesiyle otomatik olarak tetiklenir. Tetiklenen bu süreçte kod merkez depodan çekilir. Yazılan betik ile kodlar kurulum dosyasına dönüşür. Bunun sonunda Bamboo kurulum dosyası ve betiğini kurulum yapılacak makinaya gönderir ve makina kurulum betiğini çalıştırarak kurulumu gerçekleştirir. Kurulumdan sonra yürütülecek jmeter ve selenium testleri bamboo üzerinde yürütülmüş olur.