Takip et

FreeBSD Üzerinde Buildbot Kurulumu ve Yapılandırması: Kapsamlı Bir Rehber

FreeBSD Üzerinde Buildbot Kurulumu ve Yapılandırması: Kapsamlı Bir Rehber Giriş Günümüzün hızlı yazılım geliştirme dünyasında, süre

FreeBSD Üzerinde Buildbot Kurulumu ve Yapılandırması: Kapsamlı Bir Rehber

Giriş

Günümüzün hızlı yazılım geliştirme dünyasında, sürekli entegrasyon (CI) ve sürekli dağıtım (CD) pratikleri, projelerin başarısı için vazgeçilmez hale gelmiştir. Bu pratikler, kod değişikliklerinin düzenli olarak entegre edilmesini, otomatik testlerden geçirilmesini ve dağıtıma hazır hale getirilmesini sağlayarak, hataları erken aşamada tespit etmeye, geliştirme süreçlerini hızlandırmaya ve ürün kalitesini artırmaya yardımcı olur. Buildbot, bu tür otomasyon süreçlerini yönetmek için tasarlanmış güçlü, esnek ve açık kaynaklı bir çerçevedir. Python ile yazılmış olması, genişletilebilirliğini ve özelleştirilebilirliğini artırır.

Sürekli Entegrasyon ve Dağıtımın Önemi

Sürekli entegrasyon, geliştiricilerin kodlarını günde birkaç kez ana depoya entegre etmeleri ve her entegrasyonun otomatik bir derleme ve test süreciyle doğrulanması prensibine dayanır. Bu, entegrasyon sorunlarının erken aşamada fark edilmesini ve çözülmesini sağlar. Sürekli dağıtım ise, bu entegre edilmiş ve test edilmiş kodun otomatik olarak üretim ortamına veya bir ara aşamaya dağıtılması sürecidir. Bu iki pratik, yazılım geliştirme yaşam döngüsünü otomatikleştirerek insan hatasını azaltır, teslimat sürelerini kısaltır ve ekiplerin daha verimli çalışmasına olanak tanır. Buildbot gibi araçlar, bu karmaşık süreçleri yönetmek için merkezi bir platform sunar.

FreeBSD’nin Rolü

FreeBSD, güçlü ağ yetenekleri, üstün güvenlik özellikleri ve kararlılığı ile sunucu ortamları için popüler bir işletim sistemidir. Buildbot gibi kritik bir sürekli entegrasyon sistemini barındırmak için mükemmel bir temel sağlar. FreeBSD’nin ports ve packages sistemi, yazılımların kolayca kurulmasına ve yönetilmesine olanak tanırken, rc.d altyapısı servislerin güvenilir bir şekilde başlatılmasını ve durdurulmasını sağlar. Bu makalede, Buildbot’un FreeBSD üzerinde nasıl kurulacağını, yapılandırılacağını ve yönetileceğini adım adım inceleyeceğiz.

Buildbot Nedir ve Neden Kullanılır?

Buildbot, yazılım derleme, test ve dağıtım süreçlerini otomatikleştirmek için tasarlanmış, dağıtık bir sürekli entegrasyon sistemidir. Çok çeşitli platformlarda çalışabilir ve farklı kaynak kontrol sistemleri, derleme araçları ve test çerçeveleriyle entegre olabilir. Esnekliği sayesinde, basit projelerden karmaşık, çok aşamalı derleme boru hatlarına kadar her türlü ihtiyaca cevap verebilir.

Temel Bileşenler

Buildbot sistemi temel olarak üç ana bileşenden oluşur:
* Buildbot Master (Ana Sunucu): Tüm derleme süreçlerini koordine eden merkezi bir sunucudur. Yapılandırma dosyalarını (Python kodu olarak yazılır), derleme kuyruklarını, planlayıcıları ve raporlama mekanizmalarını barındırır. Web arayüzü aracılığıyla kullanıcı etkileşimini sağlar.
* Buildbot Worker (İşçi Sunucu): Master’dan derleme işlerini alan ve bunları yerel olarak yürüten bağımsız bir sunucudur. Kaynak kodu çeker, derlemeleri çalıştırır, testleri yapar ve sonuçları Master’a geri gönderir. Bir Master birden fazla Worker ile çalışabilir ve bu Worker’lar farklı işletim sistemlerinde bile olabilir.
* Scheduler (Planlayıcı): Hangi koşullar altında hangi derlemelerin başlatılacağını belirler. Zamanlanmış derlemeler, kod deposundaki değişiklikler üzerine tetiklenen derlemeler veya manuel olarak başlatılan derlemeler gibi çeşitli planlama stratejileri sunar.

Avantajları

Buildbot’un tercih edilmesinin başlıca nedenleri şunlardır:
* Esneklik: Python tabanlı yapılandırması sayesinde, neredeyse her türlü derleme veya test senaryosunu otomatikleştirmek mümkündür.
* Dağıtık Mimari: İş yükünü birden fazla Worker’a dağıtarak ölçeklenebilirlik ve performans sağlar.
* Çoklu Platform Desteği: Worker’lar farklı işletim sistemlerinde çalışabilir, bu da platformlar arası test ve derleme için idealdir.
* Genişletilebilirlik: Eklentiler (plugins) ve özel komut dosyaları aracılığıyla kolayca genişletilebilir.
* Açık Kaynak: Topluluk desteği ve sürekli geliştirme ile desteklenen ücretsiz bir çözümdür.

Ön Gereksinimler

Buildbot kurulumuna başlamadan önce, FreeBSD sistemimizde bazı temel gereksinimleri karşılamamız gerekmektedir.

Sistem Gereksinimleri

* İşletim Sistemi: FreeBSD 13.x veya daha yeni bir sürüm tavsiye edilir.
* RAM: En az 2 GB RAM, derleme işlemlerinin karmaşıklığına göre daha fazlası gerekebilir.
* Disk Alanı: İşletim sistemi, Buildbot ve derlenecek projeler için yeterli disk alanı (en az 20 GB).
* CPU: En az 2 çekirdekli bir işlemci.

Gerekli Paketler

FreeBSD’nin pkg paket yöneticisini kullanarak gerekli yazılımları kuracağız.

Python ve pip

Buildbot Python ile yazıldığı için, Python’ın sistemde kurulu olması zorunludur. Genellikle FreeBSD’de varsayılan olarak Python’ın eski bir sürümü bulunabilir, ancak Buildbot için daha yeni bir sürüm (Python 3.8 veya üzeri) ve pip paket yöneticisi önerilir.

sudo pkg install python3 py38-pip

Git

Kaynak kodunu depolardan çekmek için Git gereklidir.

sudo pkg install git

PostgreSQL veya SQLite (Veritabanı)

Buildbot, derleme geçmişi ve diğer meta verileri depolamak için bir veritabanı kullanır. Küçük ve orta ölçekli kurulumlar için SQLite yeterli olabilirken, büyük ölçekli ve üretim ortamları için PostgreSQL veya MySQL gibi harici bir veritabanı sunucusu önerilir. Bu rehberde SQLite ile başlayacak, ancak PostgreSQL kurulumunu da kısaca değineceğiz.

* SQLite için: Genellikle Python ile birlikte gelir veya py38-sqlite3 paketi ile kurulabilir.
* PostgreSQL için:

sudo pkg install postgresql13-server py38-psycopg2
    sudo sysrc postgresql_enable="YES"
    sudo service postgresql initdb
    sudo service postgresql start
    # PostgreSQL kullanıcı ve veritabanı oluşturma adımları ayrıca yapılmalıdır.
    # Örneğin: sudo -u postgres createuser --pwprompt buildbot
    #          sudo -u postgres createdb -O buildbot buildbotdb

Diğer Bağımlılıklar

Derlenecek projenin ihtiyaç duyduğu derleyiciler (GCC, Clang), make araçları veya diğer kütüphaneler (örneğin, Node.js, Java Development Kit) de kurulu olmalıdır. Bunlar Buildbot Worker üzerinde bulunmalıdır.

sudo pkg install gmake gcc

Buildbot Kurulumu

Buildbot’u kurmadan önce, sistemimizde izole bir Python ortamı oluşturmak en iyi uygulamadır. Bu, Buildbot’un bağımlılıklarının sistem genelindeki diğer Python uygulamalarıyla çakışmasını önler.

Python Ortamının Hazırlanması

Buildbot ve bağımlılıklarını izole etmek için virtualenv kullanacağız. Öncelikle, virtualenv paketini kuralım:

sudo pip install virtualenv

Şimdi Buildbot için bir kullanıcı oluşturalım ve bu kullanıcının ev dizininde bir virtualenv ortamı oluşturalım. Güvenlik ve düzen açısından Buildbot’u ayrı bir kullanıcı altında çalıştırmak önerilir.

sudo adduser

Kullanıcı adı: buildbot

Shell: /bin/sh (veya tercih ettiğiniz bir shell)

Diğer seçenekleri varsayılan bırakabilirsiniz.

sudo su - buildbot mkdir ~/buildbot_env virtualenv ~/buildbot_env source ~/buildbot_env/bin/activate

source ~/buildbot_env/bin/activate komutu, Buildbot sanal ortamını etkinleştirir. Bundan sonra çalıştıracağınız pip komutları, paketleri bu sanal ortama kuracaktır. Ortamdan çıkmak için deactivate komutunu kullanabilirsiniz.

Buildbot Paketlerinin Kurulumu

Sanal ortamımız etkinleştirildikten sonra, Buildbot Master ve Worker paketlerini kurabiliriz. Bu rehberde Master ve Worker’ı aynı FreeBSD sunucusunda kuracağız, ancak farklı sunucularda da olabilirler.

# Sanal ortam etkinleştirilmişken (source ~/buildbot_env/bin/activate)
pip install 'buildbot[sqlite]'
pip install buildbot-worker

buildbot[sqlite] ifadesi, Buildbot’u SQLite veritabanı desteğiyle kurar. Eğer PostgreSQL kullanacaksanız, pip install 'buildbot[postgres]' kullanmalısınız.

Buildbot Yapılandırması

Buildbot kurulumu tamamlandıktan sonra, sistemimizi çalıştırmak için yapılandırmamız gerekir. Yapılandırma, Buildbot Master’ın nasıl davranacağını, hangi Worker’ları kullanacağını, hangi projeleri derleyeceğini ve nasıl raporlama yapacağını belirler.

Genel Bakış

Buildbot Master’ın yapılandırması, bir Python dosyası olan master.cfg üzerinden yapılır. Bu dosya, Buildbot’un tüm davranışlarını tanımlayan bir dizi Python nesnesi içerir.

Dizin Yapısı

Buildbot için düzenli bir dizin yapısı oluşturmak, yönetimi kolaylaştırır. buildbot kullanıcısının ev dizininde master ve worker dizinleri oluşturalım.

# buildbot kullanıcısı olarak
cd ~
mkdir master
mkdir worker

Buildbot Master Yapılandırması

Master’ı başlatmadan önce, temel bir yapılandırma dosyası oluşturmamız gerekiyor.

Master Oluşturma

buildbot create-master komutu, master dizini içinde temel bir master.cfg dosyası ve diğer gerekli dosyaları oluşturur.

# buildbot kullanıcısı, sanal ortam etkinleştirilmişken
cd ~/master
buildbot create-master .

Bu komut, geçerli dizinde bir Buildbot Master örneği oluşturur. .env ve master.cfg.sample gibi dosyalar oluşacaktır. master.cfg.sample dosyasını master.cfg olarak kopyalayarak düzenlemeye başlayacağız.

cp master.cfg.sample master.cfg

master.cfg Dosyasının Düzenlenmesi

master.cfg dosyası, Buildbot’un kalbidir. Bu dosya, Python sözdizimini kullanarak Buildbot’un tüm yönlerini tanımlar. Bir metin düzenleyici ile ~/master/master.cfg dosyasını açın.

# nano veya vi kullanabilirsiniz
nano ~/master/master.cfg

İşte temel bir master.cfg dosyasında bulunması gereken bazı önemli bölümler ve örnek yapılandırmalar:

Workers Tanımlama

Master, derleme işlerini Worker’lara atar. Her Worker’ın benzersiz bir adı ve Master ile iletişim kurmak için kullanılan bir şifresi olmalıdır.

# master.cfg içinde bir yere ekleyin
from buildbot.worker import Worker
c['workers'] = [
    Worker("freebsd-worker-1", "sifrenizburaya")
]

Burada “freebsd-worker-1”, Worker’ın adı, “sifrenizburaya” ise Master ile Worker arasında paylaşılan gizli şifredir.

Schedulers Tanımlama

Schedulers, derlemelerin ne zaman ve hangi koşullar altında başlatılacağını belirler. En yaygın olanları ForceScheduler (manuel tetikleme), SingleBranchScheduler (belirli bir daldaki kod değişiklikleri) ve Nightly (zamanlanmış) planlayıcılardır.

# master.cfg içinde bir yere ekleyin
from buildbot.schedulers.basic import SingleBranchScheduler
from buildbot.schedulers.forcesched import ForceScheduler
from buildbot.changes.gitpoller import GitPoller
from buildbot.www.hooks.github import GitHubEventHandler

c['schedulers'] = [
    SingleBranchScheduler(
        name="main_branch_build",
        change_filter=util.ChangeFilter(branch='main'),
        treeStableTimer=None, # Değişiklik geldiği anda tetikle
        builderNames=["freebsd-project-builder"]
    ),
    ForceScheduler(
        name="force_build",
        builderNames=["freebsd-project-builder"]
    )
]

GitHub entegrasyonu için (opsiyonel)

c['www'].update({

'change_hook_dialects': {

'github': {

'secret': 'YOUR_GITHUB_WEBHOOK_SECRET'

}

}

})

c['services'].append(GitHubEventHandler(

master=c,

secret='YOUR_GITHUB_WEBHOOK_SECRET',

builderNames=['freebsd-project-builder']

))

Git deposunu düzenli aralıklarla kontrol etmek için (alternatif)

c['services'].append(GitPoller( 'https://github.com/buildbot/hello-world.git', # Kendi depo URL'nizi girin pollinterval=300, # 5 dakikada bir kontrol et branches=['main'], project='HelloWorld', # username='git_user', # Özel depolar için # password='git_password', # Özel depolar için # buildbotURL='http://localhost:8010/', # Webhook için gerekli olabilir ))

SingleBranchScheduler, main dalındaki değişiklikleri izlerken, ForceScheduler web arayüzünden manuel tetiklemeye izin verir. GitPoller ise belirli aralıklarla Git deposunu kontrol ederek değişiklikleri algılar.

Builders Tanımlama

Builders, Master’ın Worker’lara atayacağı gerçek derleme işlerini tanımlar. Her Builder, bir veya daha fazla Worker üzerinde çalışabilir ve bir dizi “step” (adım) içerir.

# master.cfg içinde bir yere ekleyin
from buildbot.config import BuilderConfig
from buildbot.steps.source.git import Git
from buildbot.steps.shell import ShellCommand
from buildbot.steps.worker import SetPropertyFromWorker

c['builders'] = [
    util.BuilderConfig(
        name="freebsd-project-builder",
        workerNames=["freebsd-worker-1"],
        factory=util.BuildFactory([
            Git(repourl='https://github.com/buildbot/hello-world.git', branch='main'),
            ShellCommand(command=["ls", "-la"]),
            ShellCommand(command=["python3", "setup.py", "test"]),
            ShellCommand(command=["python3", "setup.py", "install"]),
            # Örnek bir derleme adımı:
            # ShellCommand(command=["make"]),
            # ShellCommand(command=["make", "test"]),
            # ShellCommand(command=["make", "install"]),
        ])
    )
]

Bu örnekte, freebsd-project-builder adında bir Builder tanımlanmıştır. Bu Builder, freebsd-worker-1 üzerinde çalışacak ve önce Git deposundan kodu çekecek, ardından ls -la komutunu çalıştıracak, sonra setup.py test ve setup.py install komutlarını çalıştıracaktır.

Reporters (Bildirimciler)

Derleme sonuçlarını e-posta, Slack veya diğer hizmetlere bildirmek için Reporters kullanılır.

# master.cfg içinde bir yere ekleyin
from buildbot.reporters.mail import MailNotifier
from buildbot.reporters.base import ReporterBase
from buildbot.reporters.github import GitHubStatusPush

E-posta bildirimi (örnek)

c['services'].append(MailNotifier(

fromaddr="buildbot@example.com",

sendto=["devteam@example.com"],

mode="failing", # Sadece başarısız derlemelerde bildirim gönder

smtp_host="localhost",

smtp_port=25,

# smtp_user="user",

# smtp_password="password",

# use_tls=True

))

GitHub durum bildirimi (opsiyonel)

c['services'].append(GitHubStatusPush(

oauth_token="YOUR_GITHUB_OAUTH_TOKEN", # GitHub'dan alınacak kişisel erişim jetonu

context="Buildbot CI",

verbose=True

))

Kimlik Doğrulama ve Yetkilendirme

Web arayüzüne erişimi kısıtlamak için kimlik doğrulama ve yetkilendirme yapılandırılabilir.

# master.cfg içinde bir yere ekleyin
from buildbot.www.auth import LocalAuth
from buildbot.www.authz import Authz

c['www']['auth'] = LocalAuth([
    ('admin', 'adminpassword') # Kullanıcı adı ve şifre
])

c['www']['authz'] = Authz(
    allowRules=[
        util.AnyEndpointMatcher(role="admin"),
        util.AnyControlEndpointMatcher(role="admin"),
        util.AnyViewEndpointMatcher(role="admin"),
        util.AnyEndpointMatcher(role="users"),
        util.AnyControlEndpointMatcher(role="users"),
        util.AnyViewEndpointMatcher(role="users"),
    ],
    roleMatchers=[
        util.RolesFromUsername(roles=['admin'], usernames=['admin']),
        util.RolesFromUsername(roles=['users'], usernames=['guest']),
    ]
)

Veritabanı Yapılandırması

master.cfg dosyasının en başında veya uygun bir yerde veritabanı yapılandırması bulunur. SQLite için varsayılan olarak sqlite:///state.sqlite kullanılır. PostgreSQL için şöyle bir yapılandırma gereklidir:

# master.cfg içinde c['db'] = ... satırını düzenleyin

SQLite için:

c['db'] = { 'db_url': "sqlite:///state.sqlite", }

PostgreSQL için (örnek):

c['db'] = {

'db_url': "postgresql://buildbot:sifreniz@localhost/buildbotdb",

}

master.cfg dosyasını kaydettikten sonra, yapılandırma dosyasında bir hata olup olmadığını kontrol etmek iyi bir uygulamadır:

# buildbot kullanıcısı, sanal ortam etkinleştirilmişken
cd ~/master
buildbot checkconfig .

Eğer çıktı Configuration OK ise, yapılandırmanız doğru demektir.

Master’ı Başlatma ve Yönetme

Master’ı manuel olarak başlatabiliriz:

# buildbot kullanıcısı, sanal ortam etkinleştirilmişken
cd ~/master
buildbot start .

Master’ı durdurmak için:

cd ~/master
buildbot stop .

Master’ın durumunu kontrol etmek için:

cd ~/master
buildbot status .

Servis Olarak Çalıştırma (rc.d script)

Üretim ortamında Buildbot Master’ı bir servis olarak çalıştırmak esastır. FreeBSD’nin rc.d sistemi bunun için idealdir.
Öncelikle, buildbot kullanıcısı için sanal ortam yolunu içeren bir buildbot_master_wrapper.sh dosyası oluşturalım:

# root olarak veya sudo ile
sudo nano /usr/local/etc/rc.d/buildbot_master

İçeriği aşağıdaki gibi düzenleyin:

#!/bin/sh

PROVIDE: buildbot_master

REQUIRE: DAEMON

KEYWORD: shutdown

. /etc/rc.subr name="buildbot_master" rcvar="buildbot_master_enable" buildbot_user="buildbot" buildbot_home="/home/buildbot" buildbot_master_dir="${buildbot_home}/master" buildbot_env="${buildbot_home}/buildbot_env" command="/usr/bin/env" command_args="BUILDMASTER_CONFIG=${buildbot_master_dir}/master.cfg ${buildbot_env}/bin/buildbot" pidfile="${buildbot_master_dir}/twistd.pid" extra_commands="reload" load_rc_config $name buildbot_master_enable=${buildbot_master_enable:-"NO"} start_cmd="${command} ${command_args} start --nodaemon --logfile=${buildbot_master_dir}/twistd.log --pidfile=${pidfile}" stop_cmd="${command} ${command_args} stop --pidfile=${pidfile}" status_cmd="${command} ${command_args} status --pidfile=${pidfile}" reload_cmd="${command} ${command_args} reconfig --config=${buildbot_master_dir}/master.cfg" run_rc_command "$@"

Dosyayı kaydedin ve çalıştırılabilir yapın:

sudo chmod +x /usr/local/etc/rc.d/buildbot_master

rc.conf dosyasına Buildbot Master’ı etkinleştirmek için bir satır ekleyin:

sudo sysrc buildbot_master_enable="YES"

Şimdi Master’ı başlatabilirsiniz:

sudo service buildbot_master start

Bu, Buildbot Master’ı sistem başlangıcında otomatik olarak başlatılacak şekilde ayarlar.

Buildbot Worker Yapılandırması

Buildbot Worker, Master’dan aldığı derleme görevlerini çalıştıran bağımsız bir süreçtir.

Worker Oluşturma

Worker’ı oluşturmak için buildbot-worker create-worker komutunu kullanırız.

# buildbot kullanıcısı, sanal ortam etkinleştirilmişken
cd ~/worker
buildbot-worker create-worker . localhost:9989 freebsd-worker-1 sifrenizburaya

Burada:
* .: Worker dizini.
* localhost:9989: Master’ın adresi ve portu (varsayılan Buildbot portu 9989’dur). Eğer Master farklı bir sunucuda ise, master_ip_adresi:9989 şeklinde belirtmelisiniz.
* freebsd-worker-1: Worker’ın adı. Bu, master.cfg dosyasında tanımladığınız Worker adı ile eşleşmelidir.
* sifrenizburaya: Master ile Worker arasında paylaşılan şifre. Bu da master.cfg dosyasındaki şifre ile aynı olmalıdır.

Bu komut, Worker dizini içinde buildbot.tac gibi gerekli dosyaları oluşturur.

Worker’ı Başlatma ve Yönetme

Worker’ı manuel olarak başlatmak için:

# buildbot kullanıcısı, sanal ortam etkinleştirilmişken
cd ~/worker
buildbot-worker start .

Worker’ı durdurmak için:

cd ~/worker
buildbot-worker stop .

Worker’ın durumunu kontrol etmek için:

cd ~/worker
buildbot-worker status .

Servis Olarak Çalıştırma (rc.d script)

Buildbot Worker’ı da Master gibi bir rc.d servisi olarak çalıştırmak iyi bir uygulamadır.

# root olarak veya sudo ile
sudo nano /usr/local/etc/rc.d/buildbot_worker

İçeriği aşağıdaki gibi düzenleyin:

#!/bin/sh

PROVIDE: buildbot_worker

REQUIRE: DAEMON

KEYWORD: shutdown

. /etc/rc.subr name="buildbot_worker" rcvar="buildbot_worker_enable" buildbot_user="buildbot" buildbot_home="/home/buildbot" buildbot_worker_dir="${buildbot_home}/worker" buildbot_env="${buildbot_home}/buildbot_env" command="/usr/bin/env" command_args="${buildbot_env}/bin/buildbot-worker" pidfile="${buildbot_worker_dir}/twistd.pid" load_rc_config $name buildbot_worker_enable=${buildbot_worker_enable:-"NO"} start_cmd="${command} ${command_args} start --nodaemon --logfile=${buildbot_worker_dir}/twistd.log --pidfile=${pidfile} ${buildbot_worker_dir}" stop_cmd="${command} ${command_args} stop --pidfile=${pidfile} ${buildbot_worker_dir}" status_cmd="${command} ${command_args} status --pidfile=${pidfile} ${buildbot_worker_dir}" run_rc_command "$@"

Dosyayı kaydedin ve çalıştırılabilir yapın:

sudo chmod +x /usr/local/etc/rc.d/buildbot_worker

rc.conf dosyasına Buildbot Worker’ı etkinleştirmek için bir satır ekleyin:

sudo sysrc buildbot_worker_enable="YES"

Şimdi Worker’ı başlatabilirsiniz:

sudo service buildbot_worker start

Buildbot Arayüzü ve Kullanımı

Buildbot Master başarılı bir şekilde başlatıldıktan sonra, web arayüzüne erişebilirsiniz.

Web Arayüzüne Erişim

Varsayılan olarak, Buildbot web arayüzü 8010 portundan yayın yapar. Tarayıcınızdan http://:8010 adresine giderek erişebilirsiniz. Eğer master.cfg dosyasında kimlik doğrulama yapılandırdıysanız, giriş yapmanız istenecektir.

Web arayüzü, çalışan derlemeleri, geçmiş derlemeleri, Worker durumlarını, planlayıcıları ve genel sistem durumunu gösteren kapsamlı bir görünüm sunar.

Yapılandırma Değişiklikleri ve Yeniden Yükleme

master.cfg dosyasında herhangi bir değişiklik yaptığınızda, Master’ı yeniden başlatmak yerine reconfig komutunu kullanarak yapılandırmayı yeniden yükleyebilirsiniz. Bu, çalışan derlemelerin kesintiye uğramamasını sağlar.

# buildbot kullanıcısı, sanal ortam etkinleştirilmişken
cd ~/master
buildbot reconfig .

Eğer Master’ı rc.d servisi olarak çalıştırıyorsanız:

sudo service buildbot_master reload

Derleme Süreçlerini İzleme

Web arayüzünde “Builders” sekmesi altında tanımladığınız Builder’ları göreceksiniz. Bir Builder’a tıklayarak o Builder’ın geçmiş derlemelerini ve mevcut durumunu inceleyebilirsiniz. Her derleme için ayrıntılı loglar, hangi adımların başarıyla tamamlandığı veya nerede hata oluştuğu gibi bilgiler sunulur.

Kullanıcı ve Rol Yönetimi

master.cfg dosyasında tanımladığınız LocalAuth ve Authz ayarları ile web arayüzüne kimlerin erişebileceğini ve hangi işlemleri yapabileceğini kontrol edebilirsiniz. Daha gelişmiş senaryolar için LDAP veya OAuth gibi harici kimlik doğrulama sağlayıcılarıyla entegrasyon mümkündür.

Gelişmiş Yapılandırma ve Entegrasyonlar

Buildbot’un gücü, esnek yapılandırma seçeneklerinde ve diğer araçlarla entegrasyon yeteneğinde yatar.

Kaynak Kontrol Sistemleri (Source Control Systems)

Buildbot, Git, Subversion (SVN), Mercurial ve Perforce gibi popüler VCS’lerle entegre olabilir. GitPoller veya GitHubEventHandler gibi servisler aracılığıyla kod değişikliklerini otomatik olarak algılayabilir ve derlemeleri tetikleyebilir.

Test Çerçeveleri

Buildbot, Python’ın unittest, pytest, Java’nın JUnit, JavaScript’in Jest gibi çeşitli test çerçevelerinin çıktılarını işleyebilir. Test sonuçlarını web arayüzünde göstererek geliştiricilere hızlı geri bildirim sağlar. ShellCommand adımları arasına test komutlarınızı ekleyerek bu entegrasyonu sağlayabilirsiniz.

Bildirimler

MailNotifier ile e-posta bildirimleri gönderebilirsiniz. Ayrıca, buildbot-slack eklentisi ile Slack’e, buildbot-telegram ile Telegram’a bildirim göndermek de mümkündür. GitHub’a derleme durumu göndermek için GitHubStatusPush kullanılmıştır.

Paralel Derlemeler

Birden fazla Worker’a sahipseniz, Buildbot farklı Builder’ları veya aynı Builder’ın farklı derlemelerini aynı anda farklı Worker’lar üzerinde çalıştırarak paralel derlemeleri destekler. Bu, derleme sürelerini önemli ölçüde kısaltabilir.

Sorun Giderme ve İpuçları

Herhangi bir karmaşık sistemde olduğu gibi, Buildbot kurulumunda da sorunlarla karşılaşabilirsiniz. İşte bazı yaygın sorun giderme yöntemleri ve ipuçları:

Log Dosyaları

Buildbot Master ve Worker’ın log dosyaları, sorun gidermenin ilk adımıdır.
* Master Logları: ~/master/twistd.log
* Worker Logları: ~/worker/twistd.log
Bu log dosyaları, hataların nedenlerini ve derleme süreçlerinin ayrıntılarını içerir.

Yaygın Hatalar

* Worker Bağlantı Sorunları: Master ve Worker arasındaki şifrenin eşleştiğinden emin olun. Master’ın IP adresi ve portunun doğru olduğundan emin olun. Güvenlik duvarı (firewall) ayarlarını kontrol edin (9989 portu açık olmalı).
* Yapılandırma Hataları (master.cfg): buildbot checkconfig . komutunu kullanarak yapılandırma dosyasındaki sözdizimi hatalarını kontrol edin.
* Bağımlılık Eksiklikleri: Worker üzerinde derleme adımlarının gerektirdiği tüm yazılımların (derleyiciler, kütüphaneler, Python paketleri vb.) kurulu olduğundan emin olun.
* İzin Sorunları: Buildbot kullanıcısının gerekli dosya ve dizinlere yazma/okuma izinlerine sahip olduğundan emin olun. Özellikle Worker’ın kaynak kodunu çekmek veya derleme çıktılarını yazmak için izinlere ihtiyacı vardır.
* Sanal Ortam Sorunları: buildbot veya buildbot-worker komutlarını çalıştırmadan önce sanal ortamın etkinleştirildiğinden (source ~/buildbot_env/bin/activate) emin olun.

Performans Optimizasyonu

* Yeterli Kaynaklar: Master ve Worker sunucularına yeterli CPU, RAM ve disk alanı tahsis edin.
* Paralel Worker’lar: İş yükünüz arttıkça birden fazla Worker kullanarak derlemeleri paralelleştirin.
* Gereksiz Adımları Kaldırma: Derleme adımlarını optimize edin ve gereksiz komutları kaldırın.
* Önbellekleme: Derleme süreçlerinde sık kullanılan bağımlılıkları veya derleme çıktılarını önbelleğe alarak derleme sürelerini kısaltabilirsiniz.

Sonuç

Bu kapsamlı rehberde, FreeBSD işletim sistemi üzerinde Buildbot sürekli entegrasyon sisteminin nasıl kurulacağını ve yapılandırılacağını adım adım inceledik. Buildbot Master ve Worker bileşenlerinin kurulumundan, temel master.cfg yapılandırmasına, rc.d servisleri aracılığıyla sistem başlangıcında otomatik çalıştırmaya kadar birçok konuya değindik.

Özet

Buildbot, yazılım geliştirme süreçlerinizi otomatikleştirmek için son derece esnek ve güçlü bir araçtır. FreeBSD’nin kararlılığı ve güvenilirliği ile birleştiğinde, projeleriniz için sağlam bir sürekli entegrasyon ve dağıtım platformu sunar. Doğru yapılandırma ve yönetimle, Buildbot geliştirme ekiplerinizin verimliliğini artırabilir, hataları erken aşamada yakalayabilir ve yazılım teslimat süreçlerinizi hızlandırabilir.

Gelecek Perspektifleri

Kurulumu tamamladıktan sonra, Buildbot’u projenizin özel ihtiyaçlarına göre daha da özelleştirebilirsiniz. Daha karmaşık derleme boru hatları oluşturabilir, farklı test çerçevelerini entegre edebilir, özel bildirimler kurabilir ve güvenlik ayarlarınızı güçlendirebilirsiniz. Buildbot’un geniş eklenti ekosistemi ve Python tabanlı yapısı, neredeyse sınırsız özelleştirme ve entegrasyon olanakları sunar. Sürekli entegrasyon ve dağıtım yolculuğunuzda Buildbot, size güçlü bir müttefik olacaktır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.