Jenkins Nedir?
Jenkins; yazılım projeleri için otomatikleştirilmiş build, test ve deployment süreçlerini yöneten açık kaynak bir CI/CD otomasyon sunucusudur. Esnek pipeline yapısı ve geniş plugin ekosistemi sayesinde farklı dil, platform ve bulut sağlayıcıları ile bütünleşik çalışır.
NUVIA olarak Jenkins’i; versiyon kontrol sistemleriyle (Git), kapsayıcı ortamlarla (Docker/Kubernetes) ve bulut servisleriyle (AWS, Azure, GCP) birlikte, ölçeklenebilir ve izlenebilir teslimat hatları kurmak için kullanırız.
Avantajları
- Açık kaynak ve geniş topluluk: Sürekli güncellenen eklentiler, kapsamlı belge ve topluluk desteği.
- Esnek pipeline modeli: Declarative ve Scripted Pipeline desteği.
- Yatay ölçeklenme: Master/Controller + Agent mimarisi ile paralel işler.
- Uçtan uca entegrasyon: SCM, artefact depoları, güvenlik taramaları, test ve bildirim araçlarıyla uyum.
- Gözlemlenebilirlik: Build geçmişi, metrikler ve ayrıntılı loglar.
Mimari & Temel Kavramlar
- Controller (eski adıyla Master): Web arayüzü, job/pipeline yönetimi ve orkestrasyon.
- Agent (Node): İşlerin çalıştığı yürütme ortamları. Etiketlerle (labels) hedef seçimi yapılır.
- Job / Pipeline: Build adımlarının tanımı;
Jenkinsfile
ile versiyonlanır. - Credentials: Güvenli değişken ve kimlik bilgisi yönetimi.
- Shared Libraries: Kurumsal pipeline adımlarını tekrar kullanılabilir hale getirir.
Declarative Pipeline Örneği
pipeline {
agent any
options { timestamps() }
stages {
stage('Checkout') {
steps { checkout scm }
}
stage('Build') {
steps { sh 'npm ci && npm run build' }
}
stage('Test') {
steps { sh 'npm test -- --ci' }
}
stage('Dockerize') {
steps { sh 'docker build -t registry.example/app:$BUILD_NUMBER .' }
}
stage('Deploy') {
when { branch 'main' }
steps { sh 'kubectl rollout restart deployment app' }
}
}
post {
always { junit 'reports/junit/*.xml' }
failure { mail to: 'devops@nuvia.example', subject: 'Build Failed', body: "Job: ${env.JOB_NAME} - #${env.BUILD_NUMBER}" }
}
}
Kurumsal projelerde Shared Libraries ile tekrar eden adımlar soyutlanarak standardizasyon sağlanır.
Güvenlik & En İyi Uygulamalar
- RBAC ve Matrix-based security ile yetkilendirme; kimlik federasyonu (OIDC/SAML) entegrasyonu.
- Agent izolasyonu: Konteyner tabanlı ajanlar ve imaj sabitleme (pinning).
- Gizli bilgilerin Credentials ile güvenli yönetimi; gizli değişkenleri loglarda maskeleme.
- Pipeline’larda
withCredentials
, imza gerektiren komutlar ve least privilege prensibi. - Yedekleme, audit log ve eklenti güncelleme politikaları.
Entegrasyonlar & Eklentiler
- Kaynak kontrol: Git, GitHub, GitLab, Bitbucket.
- Artefact depoları: Nexus, Artifactory, GitHub Packages.
- Test & kalite: JUnit, JaCoCo, SonarQube.
- Bildirim: Slack/Teams, e-posta, Webhook.
- Dağıtım: Docker, Kubernetes, Helm, Terraform.
Resmî Kaynaklar & Referanslar
- Jenkins resmi dokümantasyon: https://www.jenkins.io/doc/
- Pipeline Syntax: Declarative Pipeline
- Plugin Index: https://plugins.jenkins.io/
Sık Sorulanlar
Not: Bu sayfa bilgilendirme amaçlıdır; kurumunuza özel ihtiyaçlar için mimari değerlendirme önerilir.