Ana içeriğe geç

Ubuntu 22.04 Jenkins CI Pipeline Kurulumu (GitHub & Docker)

Ubuntu 22.04 Üzerinde Jenkins ile Sürekli Entegrasyon (CI) Pipeline Kurulumu

Yazılım geliştirmede hız ve güven kritik.
Bu rehberde,

oaicite:0
ile
oaicite:1
entegrasyonu kurarak,
her kod gönderiminde otomatik test çalışan modern bir CI pipeline oluşturacağız.

Testler

oaicite:2
konteynerleri içinde çalışır.
Sistem temiz kalır, sürpriz hata çıkmaz. Mis 👌


Bu Rehberde Ne Öğreneceksiniz?

  • Jenkins’i Docker çalıştırabilecek şekilde yapılandırmayı
  • GitHub ile Jenkins arasında güvenli Token & Webhook bağlantısı kurmayı
  • Jenkinsfile ile kod tabanlı CI senaryosu yazmayı
  • Push ile otomatik tetiklenen CI hattını devreye almayı

Teknik Özet

Konu: Jenkins ile Sürekli Entegrasyon (CI)
Problem: Manuel test ve derleme süreçleri
Çözüm: GitHub push olaylarıyla tetiklenen, Docker izole test hattı

Bu yapı:

  • Daha hızlı geri bildirim sağlar
  • Hataları erken yakalar
  • Geliştirme kalitesini artırır

Ön Hazırlıklar

Başlamadan önce şunlar hazır olmalı:

  • oaicite:3
    22.04
    yüklü sunucu
  • En az 1 GB RAM
  • Jenkins, Nginx ve Docker kurulu
  • Jenkins için atanmış bir domain (örn: ci.rabisu.cloud)
  • GitHub hesabı ve örnek bir proje

Adım 1: Jenkins Kullanıcısına Docker Yetkisi Verme

Jenkins’in Docker kullanabilmesi için yetki vermeliyiz.

sudo usermod -aG docker jenkins
  • Bu komut Jenkins kullanıcısını docker grubuna ekler.

Kontrol edin:


grep docker /etc/group

  • Değişikliğin aktif olması için Jenkins’i yeniden başlatın:

sudo systemctl restart jenkins

Not: Manage Jenkins → Manage Plugins yolundan

  • Docker ve Docker Pipeline eklentilerinin yüklü olduğundan emin olun.

Adım 2: GitHub Personal Access Token (PAT) Oluşturma

  1. Jenkins’in GitHub’ı izleyebilmesi için bir token gerekir.
  • GitHub’da:

Settings → Developer settings → Personal access tokens

Generate new token

  • Yetkiler:
  1. repo:status

  2. repo:public_repo (private repo için repo)

  3. admin:org_hook

  • Token’ı oluşturur oluşturmaz kopyalayın. Sonra görünmez.

Adım 3: Token’ı Jenkins’e Tanımlama

  1. Jenkins panelinde:
  • Sağ üstten kullanıcı adına tıklayın

  • Credentials → (global) → Add Credentials


Ayarlar:

Kind: Secret text

Secret: GitHub token

Description: GitHub CI Token


  • Ardından:

Manage Jenkins → Configure System → GitHub

  • Token’ı seçin

  • Test connection deyin

  • Başarılıysa Save


Adım 4: Örnek Proje ve Jenkinsfile

  • Test için örnek bir Node.js projesi kullanabilirsiniz:

https://github.com/content-demo/hello-hapi

  • Repo kök dizininde Jenkinsfile bulunur:

pipeline {
agent {
docker {
image 'node'
args '-u root'
}
}
stages {
stage('Derleme') {
steps {
sh 'npm install'
}
}
stage('Test') {
steps {
sh 'npm test'
}
}
}
}

  • Bu pipeline:

Node Docker imajı başlatır

  • Bağımlılıkları kurar

  • Testleri çalıştırır


Adım 5: Jenkins Pipeline Oluşturma

  1. Jenkins ana ekranda:
  • New Item

İsim ver (örn: NodeJS-CI-Test)

  • Pipeline seç → OK

Ayarlar:

  1. GitHub project: Repo URL

  2. Build Triggers: GitHub hook trigger

  3. Pipeline: Pipeline script from SCM


  1. SCM: Git

  2. Script Path: Jenkinsfile

  3. Save ile çıkın.


Adım 6: İlk Build ve Webhook Oluşturma

  1. Webhook’un otomatik oluşması için ilk build gerekir.

  2. Build Now butonuna basın

  3. Build tamamlanınca Configure → Save yapın

  4. GitHub → Settings → Webhooks bölümünde Jenkins görünmelidir.


Test

  1. Repo’da küçük bir değişiklik yapıp commit atın.

  2. Jenkins otomatik build başlatır 🚀


Sıkça Sorulan Sorular (SSS)

  1. Neden Docker kullanıyoruz? Test ortamı izole olur, bağımlılık çakışmaz.

  2. Webhook oluşmazsa ne yapmalıyım? GitHub’dan manuel ekleyebilirsiniz.

  3. Jenkinsfile zorunlu mu? Pipeline from SCM için evet.

  4. Private repo desteklenir mi? Evet, token yeterlidir.


Sonuç

Bu rehberle:

Jenkins + GitHub entegrasyonu kurdunuz Docker içinde otomatik test hattı oluşturdunuz Modern bir CI sürecini canlıya aldınız

Bu yapıyı stabil ve güçlü bir ortamda çalıştırmak için Rabisu Bulut VDS altyapısını gönül rahatlığıyla kullanabilirsiniz 🚀