Jenkins
- Okunuşu
- cenkins
Kısaca
Jenkins, yazılımı pipeline'larla derleyen, test eden ve dağıtan açık kaynaklı bir otomasyon sunucusudur; en eski ve en yaygın CI/CD araçlarından biridir.
Jenkins nedir?
Jenkins, Kohsuke Kawaguchi'nin Sun Microsystems'de geliştirdiği bir derleme sunucusu olan Hudson'dan doğdu ve projenin yönü konusundaki bir anlaşmazlığın ardından 2011'de bugünkü adını aldı. Kendi sunucularınızda çalışır, kaynak depolarını izler ve kod değiştiğinde, bir zamanlamaya göre ya da biri bir düğmeye bastığında işleri çalıştırır.
Modern Jenkins işleri, depoda saklanan bir Jenkinsfile içinde tanımlanan pipeline'lardır; build, test ve deploy gibi aşamalarla, Groovy tabanlı bir sözdizimiyle yazılır. Bir controller işi zamanlar, makine, container ya da Kubernetes pod'u olabilen agent'lar da adımları çalıştırır; böylece birçok derleme paralel yürüyebilir.
Gücü esnekliğidir: eklentiler onu neredeyse her sürüm kontrol sistemiyle, derleme aracıyla, test framework'üyle, bulutla ve sohbet uygulamasıyla entegre eder ve CI'ın çok ötesindeki işleri otomatikleştirebilir. Bu esnekliğin bir bedeli vardır; ekiplerin Jenkins'i kendilerinin barındırması, güvenceye alması, güncellemesi ve yedeklemesi, eklentilerini de uyumlu tutması gerekir.
Sık yapılan bir yanlış, Jenkins'in tek ciddi CI/CD seçeneği olduğunu düşünmektir. GitHub Actions, GitLab CI ve CircleCI gibi barındırılan servisler sunucu gerektirmez ve pipeline dosyalarını kodun yanında tutar; bu yüzden birçok yeni proje onları seçer. Jenkins, mevcut kurulumları ya da şirket içi (on-premises) özel gereksinimleri olan büyük şirketlerde yaygın olmaya devam ediyor.
Önemli noktalar
- Jenkins, CI/CD için kendi sunucunuzda çalışan açık kaynaklı bir otomasyon sunucusudur.
- Hudson'dan ayrıldı ve adını 2011'de aldı.
- Pipeline'lar build, test ve deploy aşamalarıyla bir Jenkinsfile içinde tanımlanır.
- Bir controller işleri zamanlar, agent'lar çalıştırır; çoğu zaman paralel olarak.
- Eklentiler onu esnek yapar, ama ekiplerin bakımını ve güvenliğini üstlenmesi gerekir.
Örnek
pipeline {
agent { docker { image 'node:22' } }
stages {
stage('Install') {
steps { sh 'npm ci' }
}
stage('Test') {
steps { sh 'npm test' }
}
stage('Deploy') {
when { branch 'main' }
steps { sh './deploy.sh production' }
}
}
post {
failure { echo 'Build failed: notify the team' }
}
}Sık sorulan sorular
Jenkins ile GitHub Actions arasındaki fark nedir?
Jenkins, Jenkinsfile'lar ve eklentilerle yapılandırılan, kurup bakımını yaptığınız bir sunucudur. GitHub Actions ise GitHub'a yerleşik, iş akışları YAML ile yazılan ve runner'ları sizin için sağlanan barındırılan bir servistir. Jenkins daha fazla kontrol, Actions daha az bakım sunar.
Jenkinsfile nedir?
Bir Jenkins pipeline'ını aşamaları ve adımlarıyla birlikte kod olarak tanımlayan, depodaki bir metin dosyasıdır. Onu kodla birlikte tutmak, pipeline'ın da her şey gibi incelenip sürümlenmesi demektir.
Jenkins ücretsiz mi?
Evet. Jenkins MIT lisanslı açık kaynaktır. Maliyetleri, üzerinde çalıştığı sunucular ve işletmek için harcanan zamandır.
İlgili sayfalar
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- GitHub ActionsDevOps ve Bulut, s. 19GitHub Actions, GitHub'ın yerleşik otomasyon platformudur; depodaki YAML iş akışları push ya da pull request olduğunda test, derleme ve dağıtım çalıştırır.
- DevOpsDevOps ve Bulut, s. 13DevOps, yazılım geliştirme ile BT operasyonlarını birleştirerek yazılımın daha hızlı ve güvenilir sunulmasını sağlayan bir kültür ve pratikler bütünüdür.
- DockerDevOps ve Bulut, s. 15Docker, bir uygulamayı ve ihtiyaç duyduğu her şeyi, her makinede aynı şekilde çalışan bir konteyner içinde paketlemeye yarayan açık kaynaklı bir platformdur.
- KubernetesDevOps ve Bulut, s. 30Kubernetes, konteynerli uygulamaların bir makine kümesi üzerinde dağıtılmasını, ölçeklenmesini ve yönetilmesini otomatikleştiren açık kaynaklı bir sistemdir.
- Test OtomasyonuTest ve Kalite, s. 32Test otomasyonu, testleri kodla çalıştırıp sonuçları denetlemektir; böylece aynı kontroller elle değil, her değişiklikte hızlı ve tutarlı biçimde tekrarlanır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin