Ubuntu 20.04 Üzerinde Jenkins ile Sürekli Entegrasyon (CI) Pipeline Kurulumu
Modern yazılım geliştirmede hız ve güvenilirlik kritiktir.
Bu rehberde, Ubuntu 20.04 sunucunuzda çalışan Jenkins’i GitHub ile entegre ederek her kod gönderiminde otomatik test çalışan bir CI hattı kuracaksınız.
Docker konteynerleri sayesinde testler izole çalışır ve ortam farkları ortadan kalkar.
Bu Rehberde Ne Öğreneceksiniz?
- Jenkins sunucusuna Docker yetkisi vermeyi
- GitHub ile Jenkins arasında Token ve Webhook kurmayı
- Jenkinsfile ile CI sürecini kod olarak tanımlamayı
- GitHub push işlemleriyle otomatik test tetiklemeyi
Ön Gereksinimler
Başlamadan önce aşağıdakiler hazır olmalıdır:
- Sunucu: Ubuntu 20.04, en az 1 GB RAM (örn: Rabisu VDS)
- Yazılım: Jenkins (SSL yapılandırılmış), Nginx ve Docker
- Hesap: GitHub hesabı
1. Jenkins Kullanıcısına Docker Yetkisi Verme
Jenkins’in Docker konteynerleri çalıştırabilmesi için yetki vermeliyiz.
sudo usermod -aG docker jenkins
- Bu komut Jenkins kullanıcısını Docker grubuna ekler.
Yetkiyi doğrulayın:
grep docker /etc/group
- Değişikliklerin aktif olması için Jenkins’i yeniden başlatın:
sudo systemctl restart jenkins
Not: Jenkins panelinden Manage Jenkins → Manage Plugins bölümünde
- Docker ve Docker Pipeline eklentilerinin kurulu olduğundan emin olun.
2. GitHub Personal Access Token (PAT) Oluşturma
Jenkins’in GitHub deponuzu izleyebilmesi için bir erişim anahtarı gerekir.
- GitHub’da şu yolu izleyin:
-
Settings → Developer settings → Personal access tokens
-
Token oluştururken şu izinleri verin:
-
repo:status
-
repo:public_repo
-
admin:org_hook
-
Token’ı oluşturduğunuz anda kopyalayın. Sonradan görüntülenemez.
3. GitHub Token’ını Jenkins’e Tanımlama
- Jenkins panelinde şu yolu izleyin:
- Manage Jenkins → Manage Credentials → (global) → Add Credentials
Alanları şu şekilde doldurun:
-
Kind: Secret text
-
Secret: GitHub token
-
Description: GitHub CI Token
Kaydedin.
Ardından:
-
Manage Jenkins → Configure System → GitHub
-
Yeni GitHub Server ekleyin
-
Credential olarak token’ı seçin
-
Test connection ile doğrulayın
- Örnek Projeyi Hazırlama
-
CI sürecini test etmek için hazır bir Node.js projesi kullanıyoruz.
-
Aşağıdaki projeyi kendi GitHub hesabınıza Fork edin:
http//github.com/content-demo/hello-hapi
- Bu proje bir Jenkinsfile içerir.
5. Jenkinsfile Yapısı
pipeline {
agent {
docker {
image 'node'
args '-u root'
}
}
stages {
stage('Build') {
steps {
sh 'npm install'
}
}
stage('Test') {
steps {
sh 'npm test'
}
}
}
}
- Bu yapı:
-
Testleri Docker içinde çalıştırır
-
Jenkins ana sunucusunu izole eder
-
CI standartlarına uygundur
6. Jenkins Pipeline Oluşturma
- Jenkins ana ekranında:
- New Item → Pipeline
Ayarlar:
-
GitHub project: Repo URL
-
Build Trigger GitHub hook trigger
-
Pipeline Definition: Pipeline script from SCM
-
SCM: Git
-
Repository URL: Fork edilen repo
-
Kaydedin.
7. İlk Build ve Webhook Oluşturma
Webhook’un otomatik eklenmesi için ilk build manuel başlatılır.
Pipeline ekranında:
- Build Now
Build tamamlandıktan sonra GitHub → Settings → Webhooks bölümünde
Jenkins webhook’unun oluştuğunu göreceksiniz.
8. Otomatik Tetiklemeyi Test Etme
-
GitHub reposunda küçük bir değişiklik yapıp commit atın.
-
Jenkins panelinde yeni bir build’in otomatik başladığını göreceksiniz.
-
CI hattınız artık aktif 🎉
Sıkça Sorulan Sorular (SSS)
1. Neden Docker agent kullanıyoruz? Testlerin izole ve temiz ortamda çalışmasını sağlar.
2. Webhook oluşmazsa ne yapmalıyım? GitHub repo ayarlarından manuel webhook ekleyebilirsiniz.
3. Jenkinsfile kullanmak şart mı? Hayır, ama “Pipeline as Code” endüstri standardıdır.
Sonuç
Ubuntu 20.04 üzerinde GitHub entegre, Docker tabanlı modern bir Jenkins CI pipeline kurdunuz. Artık her commit otomatik test edilir ve hatalar erkenden yakalanır.
Bu yapıyı Rabisu Bulut altyapısında çalıştırarak CI/CD süreçlerinizi güvenle ölçekleyebilirsiniz 🚀