Ana içeriğe geç

FreeBSD Paket Derleme ve Dağıtımı: Poudriere ve Buildbot ile Otomatik CI/CD

Bu rehberde ne öğreneceksiniz?

Bu rehberde FreeBSD sunucular için merkezi ve otomatik bir paket üretim altyapısı kurulacaktır.
Manuel derleme süreçlerinden kaynaklanan tutarsızlıklar ortadan kaldırılacaktır.
Tüm sunucular aynı, imzalı ve güvenli paketleri kullanır hale gelecektir.


Ön Hazırlıklar

Kuruluma başlamadan önce aşağıdakiler hazır olmalıdır:

  • FreeBSD 11.2 veya üzeri çalışan bir sunucu
  • En az 10 GB boş disk alanı
  • Kurulu Buildbot Master ve Worker yapısı
  • Paketleri kullanacak ikinci bir FreeBSD sunucu

1. Poudriere Kurulumu (Worker Jail)

Paketler izole ortamlarda derlenir.

sudo jexec buildbot-worker0 csh
pkg install poudriere
  • Bu komut Poudriere aracını Buildbot worker jail içine kurar.

2. Paket İmzalama Anahtarı Oluşturma (Önerilir)

  1. Bu adım paket bütünlüğünü garanti eder..

openssl genrsa -out /usr/local/etc/poudriere.key 4096
chmod 0600 /usr/local/etc/poudriere.key
openssl rsa -in /usr/local/etc/poudriere.key -pubout -out /tmp/poudriere.pub
  • Bu anahtar istemci sunucuların paket doğrulamasında kullanılır.

3. ZFS Yapılandırması (Opsiyonel)

  1. ZFS kullanımı derleme süresini önemli ölçüde azaltır.

sudo zfs create zroot/pdr
sudo zfs create zroot/pdr/w0
sudo zfs set jailed=on zroot/pdr/w0
  • Bu yapı snapshot ve hızlı jail yönetimi sağlar.

4. Poudriere ve Jail Yapılandırması

  1. Poudriere’nin jailed ortamda çalışabilmesi için yapılandırma yapılır.

FREEBSD_HOST=https://download.FreeBSD.org
BASEFS=/pdr
PKG_REPO_SIGNING_KEY=/usr/local/etc/poudriere.key
CCACHE_DIR=/var/cache/ccache
NOLINUX=yes
LOIP4=127.0.0.3
  • Bu ayarlar build ortamını stabilize eder.

5. Build Jail ve Ports Ağacı Oluşturma

  1. Derleme ortamı hazırlanır.

poudriere jail -c -j 112amd64 -v 11.2-RELEASE -a amd64
poudriere ports -c -p 2019Q2 -m svn+https -B branches/2019Q2
  • Bu işlem FreeBSD tabanı ve ports ağacını indirir.

6. İlk Manuel Test Derlemesi

  1. Sistemin doğru çalıştığı doğrulanır.

poudriere bulk -j 112amd64 -p 2019Q2 ports-mgmt/pkg
  • Başarılı olduğunda paketler otomatik olarak depoya eklenir.

7. Nginx ile Paket Deposu Yayınlama

  1. Paketler ve derleme logları web üzerinden erişilebilir hale getirilir.

location /packages/ {
alias /usr/jails/buildbot-worker0/pdr/data/packages;
autoindex on;
}

location /logs/ {
alias /usr/jails/buildbot-worker0/pdr/data/logs/bulk;
autoindex on;
}
  • Bu yapı merkezi paket erişimini sağlar.

8. Buildbot ile Otomatik Derleme (CI)

  1. Ports ağacı değiştiğinde otomatik derleme tetiklenir.

steps.ShellCommand(
command=['sudo','poudriere','bulk','-j','112amd64','-p','2019Q2','shells/bash']
)
  • Buildbot bu süreci merkezi olarak yönetir.

9. İstemci Sunucu Yapılandırması

  1. Sunucular paketleri yalnızca merkezi depodan alır.

ci: {
url: "https://alan-adiniz.com/packages/112amd64-2019Q2",
signature_type: "pubkey",
pubkey: "/usr/local/etc/pkg/repos/ci.pub",
enabled: yes
}
  • Bu yapı resmi FreeBSD deposunun yerini alır.

Sıkça Sorulan Sorular (SSS)

  1. ZFS kullanımı zorunlu mudur? Hayır, ancak performans açısından önerilir.

  2. Neden tek bir paket deposu kullanılır? Paket uyumsuzluklarını önlemek için.

  3. Production ortamı için uygun mudur? Evet, imzalı paketler güvenli dağıtım sağlar.


Sonuç

Bu rehber ile FreeBSD sunucular için otomatik, güvenli ve merkezi bir paket üretim hattı kurulmuştur. Sürüm kontrolü, tutarlılık ve güvenlik tek noktadan yönetilebilir hale gelmiştir.

Bu altyapı yüksek performanslı FreeBSD sunucular üzerinde Rabisu Bulut ortamında kullanılabilirsiniz.