🔧 Jenkins CI/CD

Jenkins, yazılım geliştirme sürecinde build, test ve deploy adımlarını otomatikleştiren açık kaynaklı bir CI/CD (Sürekli Entegrasyon/Sürekli Dağıtım) aracıdır. Bir Jenkinsfile ile tanımlanan pipeline, her commit'te otomatik olarak Selenium, Playwright veya pytest testlerini çalıştırabilir ve sonucu ekibe raporlayabilir. QA mühendisi için en yaygın kullanım alanı, test paketini her pull request'te otomatik koşturup regresyon hatalarını merge öncesinde yakalamaktır.

Jenkins nedir, QA otomasyonunda pipeline nasıl yazılır? Build aşamaları, test raporları, Docker agent kullanımı, paralel koşum ve hata giderme.

Jenkins'i sıfırdan mülakat seviyesine taşı. Her commit'te build'leri otomatikleştir, QA araçlarınla entegre et ve yazılımı daha hızlı ve güvenle teslim et.

Bu sayfada neler öğreneceksin

  • 🎯 Jenkins ve CI/CD Nedir? — Jenkins, ekipteki yorulmaz bir robot asistan gibidir: bir developer kod push'ladığında otomatik olarak build eder, her testi çalıştırır ve bir şey bozulduysa söyler — kimsenin butona basmasına gerek kalmadan, 7/24, hiçbir adımı atlamadan. Peki neden developer'
  • ⚙️ Jenkins Kurulumu — Jenkins kurmak, robot asistanın için özel bir çalışma alanı hazırlamak gibidir — bir kez kurarsın, sonrasında tüm otomasyonunu buradan yönetir. Üç seçenek: doğrudan işletim sistemine kur, Docker ile çalıştır (en hızlı) veya cloud kullan. Peki Docker yolu neden
  • 🔁 İlk Jenkinsfile — Jenkins Pipeline bir fabrika montaj hattıdır: her "stage" bir iş istasyonudur (Build, Test, Deploy), parçalar sırayla geçer, bir istasyon başarısız olursa hattın tamamı durur ve ekip uyarılır. Bu montaj hattını Jenkinsfile adlı bir dosyada kod olarak
  • 🔐 Environment & Credentials — Bir Jenkins `environment` bloğu, bir kuryeye verilmiş mühürlü bir zarf gibidir: kurye (pipeline) zarfın içindekini — bir şifre, bir API token'ı — teslimatı tamamlamak için kullanabilir, ama zarfı açıp içeriğini yüksek sesle okuyamaz, çünkü Jenkins bir credenti
  • 🧪 pytest & JMeter in Jenkins — QA entegrasyonu, Jenkins'in sadece testleri çalıştırmasından ibaret değildir — raporu yayınlar ve doğru kişileri bilgilendirir. Her commit test suite'ini tetikler; bir şey bozulursa Jenkins, kimse fark etmeden önce başarısız rapora link içeren bir Slack mesajı
  • 🎭 Playwright in Jenkins — Jenkins içinde Playwright'i düz bir Linux agent üzerinde çalıştırmak, bir kurye şoförüne her tek teslimattan önce kamyonu, lastikleri ve yakıtı bizzat üretmesini istemek gibidir — teknik olarak mümkündür ama kırılgandır ve yavaştır; bir browser sürümü Playwrig
  • 📢 Slack & QA Reporting — Test çalıştıran ama sonucu kimseye söylemeyen bir Jenkins pipeline'ı, pili çıkarılmış bir duman dedektörü gibidir — teknik olarak oradadır, teknik olarak "çalışır" çünkü biri tam o an durup izliyorsa dumanı algılayabilir, ama kimse bakmıyorsa tamamen
  • 🚀 İleri Seviye Jenkins — İleri seviye Jenkins, daha hızlı, akıllı ve güvenilir pipeline'lar demektir: paralellikle 500 testi 2 saat yerine 10 dakikada çalıştır, mükemmel izolasyon için Docker kullan, polling yerine GitHub webhook'larıyla build'leri otomatik tetikle ve flaky testlerle

Sık Sorulan Sorular

Jenkins nedir?

Jenkins, yazılım geliştirme sürecinde build, test ve deploy adımlarını otomatikleştiren açık kaynaklı bir CI/CD aracıdır. Bir Jenkinsfile ile tanımlanan pipeline, her commit'te testleri otomatik çalıştırabilir.

Jenkins ile GitHub Actions arasındaki fark nedir?

Jenkins kendi sunucunda barındırılır (self-hosted) ve tamamen özelleştirilebilir; GitHub Actions ise GitHub'a entegre, bulut tabanlı bir hizmettir ve kurulum gerektirmez. Jenkins daha fazla kontrol, GitHub Actions daha hızlı başlangıç sunar.

Jenkins öğrenmek ne kadar sürer?

İlk pipeline'ını birkaç saatte kurabilirsin. Jenkinsfile yazımı, credential yönetimi ve Selenium/pytest entegrasyonu dahil mülakat seviyesine gelmek genelde 2-3 hafta düzenli pratik gerektirir.

Jenkins ücretsiz mi?

Evet, Jenkins tamamen ücretsiz ve açık kaynaklıdır (MIT lisansı). Kendi sunucunda barındırdığın için ödediğin tek maliyet o sunucunun kendisidir.

Jenkinsfile nedir?

Jenkinsfile, bir pipeline'ın adımlarını (build, test, deploy) kod olarak tanımlayan bir metin dosyasıdır. Projenin kendisiyle birlikte versiyon kontrolünde (Git) tutulur, böylece pipeline değişiklikleri de kod incelemesinden geçer.

En sık karşılaşılan Jenkins hatası nedir?

"Permission denied" veya credential hataları — pipeline'ın erişmeye çalıştığı bir kaynak (Git repo, Docker registry, cloud servis) için doğru credential Jenkins'e tanımlanmamıştır. Çözüm, Jenkins Credentials Manager'da doğru anahtarı eklemektir.