Ana içeriğe geç

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:
  1. Settings → Developer settings → Personal access tokens

  2. Token oluştururken şu izinleri verin:


  1. repo:status

  2. repo:public_repo

  3. admin:org_hook

  4. 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:
  1. Manage Jenkins → Manage Credentials → (global) → Add Credentials

Alanları şu şekilde doldurun:

  1. Kind: Secret text

  2. Secret: GitHub token

  3. Description: GitHub CI Token

Kaydedin.


Ardından:

  1. Manage Jenkins → Configure System → GitHub

  2. Yeni GitHub Server ekleyin

  3. Credential olarak token’ı seçin

  4. Test connection ile doğrulayın


  1. Ö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ı:
  1. Testleri Docker içinde çalıştırır

  2. Jenkins ana sunucusunu izole eder

  3. CI standartlarına uygundur


6. Jenkins Pipeline Oluşturma

  1. Jenkins ana ekranında:
  • New Item → Pipeline

Ayarlar:

  1. GitHub project: Repo URL

  2. Build Trigger GitHub hook trigger

  3. Pipeline Definition: Pipeline script from SCM

  4. SCM: Git

  5. Repository URL: Fork edilen repo

  6. 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 🚀