Ubuntu’ya Jenkins Kurulumu: Adım Adım Rehber
Jenkins, yazılım geliştirme süreçlerini otomatikleştiren, sürekli entegrasyon (CI) ve sürekli teslimat (CD) için vazgeçilmez bir araçtır. Bu kapsamlı rehberde, Ubuntu işletim sistemine Jenkins’i adım adım nasıl kuracağınızı, temel yapılandırmaları nasıl yapacağınızı ve hatta ileri düzey ipuçlarını öğreneceksiniz. Modern yazılım geliştirme pratiklerinin merkezinde yer alan Jenkins, projelerinizin kalitesini artırırken geliştirme döngülerini hızlandırmanıza olanak tanır.
Jenkins Nedir ve Neden Kullanılır? CI/CD Kavramları Nelerdir?
Günümüzün hızla değişen teknoloji dünyasında, yazılım projeleri giderek daha karmaşık hale gelmekte ve teslimat süreleri kısalmaktadır. Bu dinamik ortamda, geliştirme ekiplerinin verimliliğini artırmak ve yazılım kalitesini sürekli kılmak için otomasyon kritik bir rol oynamaktadır. İşte tam da bu noktada Jenkins devreye giriyor. Jenkins, açık kaynak kodlu, Java tabanlı bir otomasyon sunucusudur ve özellikle sürekli entegrasyon (CI) ve sürekli teslimat (CD) süreçlerinin orkestrasyonu için tasarlanmıştır. Peki, bu “sürekli” kavramlar ne anlama geliyor ve Jenkins neden bu kadar önemli?
Sürekli Entegrasyon (CI), geliştiricilerin kod değişikliklerini ana kod tabanına düzenli olarak, genellikle günde birkaç kez entegre etme pratiğidir. Her entegrasyon, otomatik bir derleme ve test süreci tarafından doğrulanır. Bu yaklaşım, entegrasyon sorunlarını erken aşamada tespit etmeye yardımcı olur, böylece sorunlar büyümeden ve çözümü zorlaşmadan önce ele alınabilir. Geliştiriciler küçük, artımlı değişiklikler üzerinde çalıştıkça, kod tabanı her zaman kararlı ve dağıtıma hazır kalır. Jenkins, bu otomatik derleme ve test adımlarını tetiklemek, çalıştırmak ve sonuçlarını raporlamak için mükemmel bir platform sunar. Örneğin, bir geliştirici yeni bir özellik eklediğinde veya bir hatayı giderdiğinde, kodunu versiyon kontrol sistemine (örneğin Git) gönderir. Jenkins, bu değişikliği algılar, projenin en son halini çeker, kodu derler ve tanımlanmış tüm birim ve entegrasyon testlerini çalıştırır. Herhangi bir hata durumunda, ilgili geliştiriciye ve ekibe anında bildirim gönderilir. Bu, sorunların hızla çözülmesini sağlar ve geliştirme sürecindeki “entegrasyon cehennemi” olarak bilinen durumu ortadan kaldırır.
Sürekli Teslimat (CD) ise CI’nın bir uzantısıdır. Başarılı bir şekilde entegre edilmiş ve test edilmiş kodun, otomatik olarak bir depoya (örneğin, bir artefakt deposu) dağıtıma hazır hale getirilmesi sürecidir. Bu, yazılımın her an üretime alınabilecek durumda olmasını sağlar, ancak dağıtım kararı manuel olarak verilir. Sürekli Dağıtım (Continuous Deployment) ise CD’nin daha ileri bir adımıdır; burada başarılı bir şekilde test edilmiş her değişiklik, insan müdahalesi olmadan otomatik olarak üretime dağıtılır. Jenkins, bu dağıtım adımlarını da otomatikleştirmek için kullanılabilir. Örneğin, testleri başarıyla geçen bir uygulama otomatik olarak bir test ortamına veya hatta üretim ortamına dağıtılabilir. Bu, manuel hataları azaltır, dağıtım süreçlerini hızlandırır ve yazılımın müşterilere daha hızlı ulaşmasını sağlar. Jenkins’in sunduğu geniş eklenti ekosistemi sayesinde, neredeyse her türlü dağıtım hedefine (Docker konteynerleri, Kubernetes kümeleri, bulut platformları vb.) entegre olmak mümkündür.
Jenkins’in kullanımının temel faydaları şunlardır:
* Hata Tespiti ve Çözümü: Entegrasyon sorunları erken aşamada yakalanır, bu da hata ayıklama süresini ve maliyetini azaltır.
* Geliştirici Verimliliği: Otomatik süreçler sayesinde geliştiriciler manuel görevlerle uğraşmak yerine kod yazmaya odaklanabilirler.
* Daha Hızlı Geri Bildirim: Geliştiriciler, kod değişikliklerinin etkileri hakkında anında geri bildirim alırlar.
* Yazılım Kalitesi: Düzenli testler ve entegrasyonlar sayesinde yazılımın genel kalitesi artar.
* Daha Hızlı Teslimat: Otomatik derleme, test ve dağıtım süreçleri, yazılımın müşterilere daha hızlı ulaşmasını sağlar.
* Şeffaflık: Tüm süreçler izlenebilir ve raporlanabilir, bu da proje durumu hakkında net bir görünüm sunar.
Özetle, Jenkins, modern DevOps pratiklerinin temel taşıdır. Projelerinizin yaşam döngüsünü otomatikleştirerek, ekiplerin daha hızlı, daha güvenilir ve daha kaliteli yazılımlar sunmasına olanak tanır. Bu nedenle, Jenkins’i öğrenmek ve projelerinize entegre etmek, rekabetçi kalmak isteyen her yazılım ekibi için hayati öneme sahiptir.
Ubuntu’da Jenkins Kurulumu İçin Ön Hazırlıklar Nelerdir?
Jenkins’i Ubuntu sunucunuza kurmadan önce, sorunsuz bir kurulum ve çalışma deneyimi sağlamak için bazı ön hazırlık adımlarını tamamlamanız gerekmektedir. Bu adımlar, sistem gereksinimlerini kontrol etmekten, gerekli bağımlılıkları yüklemeye kadar uzanır. Bu bölüm, kurulum sürecine başlamadan önce dikkat etmeniz gereken kritik noktaları detaylandıracaktır.
Öncelikle, Jenkins bir Java uygulamasıdır, dolayısıyla sisteminizde bir Java Geliştirme Kiti (JDK) kurulu olması şarttır. Jenkins’in güncel sürümleri genellikle Java 11 veya üstünü gerektirir. OpenJDK, Ubuntu’da yaygın olarak kullanılan ve önerilen Java dağıtımıdır. Kurulumdan önce Java sürümünüzü kontrol etmek veya kurmak için aşağıdaki adımları izleyebilirsiniz. Ayrıca, Jenkins’in düzgün çalışabilmesi için yeterli sistem kaynaklarına sahip bir sunucuya ihtiyacınız olacaktır. Minimum gereksinimler genellikle 256 MB RAM ve 1 GB depolama alanı olarak belirtilse de, gerçek dünya senaryolarında bu değerler çok yetersiz kalacaktır. Özellikle birden fazla eşzamanlı derleme çalıştıracaksanız veya büyük projelerle uğraşıyorsanız, daha fazla RAM (en az 4 GB önerilir) ve işlemci gücü (2 CPU çekirdeği veya üzeri) sağlamak performansı önemli ölçüde artıracaktır. Depolama alanı açısından da, derleme artefaktları, loglar ve eklentiler zamanla yer kaplayacağından, en az 10-20 GB boş disk alanı ayırmak akıllıca olacaktır.
Şimdi Java kurulumuna geçelim. Ubuntu sisteminizde halihazırda bir Java sürümü kurulu olup olmadığını kontrol etmek için terminalde şu komutu çalıştırabilirsiniz:
java -version
Eğer Java kurulu değilse veya Jenkins’in gerektirdiği sürümden daha eski bir sürümse, OpenJDK 11’i kurmanız gerekecektir. Ubuntu’da paket yöneticisi (APT) aracılığıyla Java’yı kurmak oldukça basittir. İlk olarak, sisteminizin paket listesini güncelleyin:
sudo apt update
sudo apt upgrade -y
Ardından, OpenJDK 11’i kurun:
sudo apt install openjdk-11-jdk -y
Kurulum tamamlandıktan sonra, Java sürümünü tekrar kontrol ederek doğru sürümün etkin olduğundan emin olabilirsiniz:
java -version
javac -version
Bu komutlar size Java çalışma zamanı ve derleyici sürümünü göstermelidir. Çıktıda “openjdk version “11.0.x”” gibi bir ifade görmelisiniz.
Bir diğer önemli ön hazırlık adımı, sisteminizin güncel olmasıdır. sudo apt update ve sudo apt upgrade -y komutlarını çalıştırmak, mevcut paketlerinizi en son sürümlerine günceller ve olası güvenlik açıklarını kapatır. Bu, hem genel sistem kararlılığı hem de Jenkins’in bağımlılıklarının doğru bir şekilde karşılanması açısından önemlidir.
Son olarak, güvenlik duvarı ayarlarınızı kontrol etmeniz gerekebilir. Jenkins varsayılan olarak 8080 portunu kullanır. Eğer sunucunuzda bir güvenlik duvarı (örneğin UFW) etkinse, Jenkins arayüzüne dışarıdan erişebilmek için bu portu açmanız gerekecektir. Portu açmak için aşağıdaki komutu kullanabilirsiniz:
sudo ufw allow 8080
sudo ufw enable
sudo ufw status
Bu komutlar, 8080 portunu açar ve güvenlik duvarının etkin olduğundan emin olur. ufw status komutu, portun başarıyla açılıp açılmadığını doğrulamanıza yardımcı olacaktır. Bu ön hazırlık adımlarını tamamladıktan sonra, Jenkins kurulumuna geçmeye hazırsınız demektir. Bu adımlar, sadece kurulumun kendisi için değil, aynı zamanda Jenkins’in gelecekteki performans ve güvenliği için de temel oluşturur.
Jenkins’i Ubuntu’ya Adım Adım Nasıl Kurarız?
Ön hazırlıklarımızı tamamladığımıza göre, şimdi Jenkins’in Ubuntu sistemimize kurulumuna geçebiliriz. Bu süreç, Jenkins’in resmi APT deposunu sistemimize eklemek, anahtarını doğrulamak ve ardından paketi yüklemekten oluşur. Adımları dikkatlice takip ederek, Jenkins’i sorunsuz bir şekilde kurabilirsiniz.
Öncelikle, Jenkins’in APT deposunu sistemimize eklememiz gerekiyor. Bu, gelecekte Jenkins güncellemelerini sistemimizin diğer paketleriyle birlikte kolayca alabilmemizi sağlar. Jenkins, paket bütünlüğünü sağlamak için bir GPG anahtarı kullanır. Bu anahtarı indirip sistemimize ekleyerek, indirdiğimiz paketlerin gerçekten Jenkins tarafından sağlandığını doğrularız.
İlk adım olarak, Jenkins’in GPG anahtarını sistemimize indirip ekleyelim:
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
Bu komut, Jenkins GPG anahtarını /usr/share/keyrings/jenkins-keyring.asc yoluna kaydeder. sudo tee komutu, indirilen içeriği hem standart çıktıya yazarken hem de belirtilen dosyaya kaydeder. > /dev/null kısmı ise standart çıktıyı görmezden gelerek sadece dosyaya yazılmasını sağlar.
Anahtarı ekledikten sonra, Jenkins APT deposunu sistemimizin kaynak listesine eklememiz gerekiyor. Bu, APT paket yöneticisinin Jenkins paketlerini nereden indireceğini bilmesini sağlar.
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
Bu komut, Jenkins deposunun adresini ve GPG anahtarının konumunu içeren yeni bir dosya (jenkins.list) oluşturur ve /etc/apt/sources.list.d/ dizinine yerleştirir. signed-by parametresi, APT’ye bu depodan gelen paketlerin belirtilen anahtar ile imzalanması gerektiğini söyler, böylece güvenlik sağlanır.
Depoyu ekledikten sonra, APT paket listemizi güncellememiz gerekiyor ki yeni eklenen Jenkins deposundaki paketler hakkında bilgi edinebilsin:
sudo apt update
Bu komut, tüm depolarınızdaki paket bilgilerini yeniler. Artık sistemimiz Jenkins paketini indirmeye hazırdır. Şimdi Jenkins’i kurabiliriz:
sudo apt install jenkins -y
Bu komut, Jenkins paketini ve onunla birlikte gelen tüm bağımlılıkları sisteminize yükler. -y bayrağı, kurulum sırasında çıkan onay sorularına otomatik olarak “evet” yanıtı vermenizi sağlar. Kurulum süresi internet hızınıza ve sisteminizin performansına bağlı olarak değişiklik gösterebilir.
Kurulum tamamlandıktan sonra, Jenkins servisi otomatik olarak başlatılmalıdır. Ancak, servisin durumunu kontrol etmek ve çalıştığından emin olmak her zaman iyi bir uygulamadır:
sudo systemctl status jenkins
Bu komutun çıktısı, Jenkins servisinin aktif (running) olduğunu göstermelidir. Eğer servis aktif değilse veya bir hata oluştuysa, aşağıdaki komutlarla servisi başlatabilir ve sistem başlangıcında otomatik olarak başlamasını sağlayabilirsiniz:
sudo systemctl start jenkins
sudo systemctl enable jenkins
Artık Jenkins sunucunuz Ubuntu üzerinde çalışıyor olmalı. Bir sonraki adım, Jenkins web arayüzüne erişmek ve ilk yapılandırmayı tamamlamaktır. Güvenlik duvarınızı daha önce yapılandırdığınızdan emin olun (varsayılan olarak 8080 portu).
sudo journalctl -fu jenkins
Bu komut, Jenkins servisinin canlı loglarını gösterir ve hataları anında tespit etmenizi sağlar.
Bu adımlarla Jenkins’i Ubuntu sisteminize başarıyla kurmuş olmalısınız. Şimdi sıra, web arayüzüne erişip Jenkins’i projeniz için yapılandırmaya geldi.
Jenkins Arayüzüne İlk Erişim ve Temel Yapılandırma Nasıl Yapılır?
Jenkins kurulumunu başarıyla tamamladıktan sonra, web tarayıcınız aracılığıyla Jenkins arayüzüne erişmeniz ve ilk yapılandırma adımlarını tamamlamanız gerekmektedir. Bu ilk yapılandırma, Jenkins’in güvenliğini sağlamak, gerekli eklentileri yüklemek ve yönetici kullanıcı oluşturmak için kritik öneme sahiptir. Bu bölüm, bu adımları detaylı bir şekilde açıklayacaktır.
Jenkins web arayüzüne erişmek için, web tarayıcınızı açın ve sunucunuzun IP adresini veya alan adını, Jenkins’in varsayılan olarak kullandığı 8080 portuyla birlikte yazın. Örneğin, eğer sunucunuzun IP adresi 192.168.1.100 ise, tarayıcınızda http://192.168.1.100:8080 adresine gidin. Eğer Jenkins’i yerel makinenize kurduysanız, http://localhost:8080 adresini kullanabilirsiniz.
Bu adrese gittiğinizde, Jenkins’in sizi bir “Unlock Jenkins” (Jenkins’in Kilidini Açın) ekranıyla karşıladığını göreceksiniz. Bu, ilk kurulum sırasında Jenkins’in güvenliğini sağlamak için kullanılan bir güvenlik mekanizmasıdır. Jenkins, ilk yönetici parolasını sunucudaki belirli bir dosyaya yazar. Bu parolayı bulup girmeniz gerekmektedir.
Ekrandaki talimatlarda, parolanın bulunduğu dosyanın yolu belirtilecektir. Genellikle bu yol /var/lib/jenkins/secrets/initialAdminPassword şeklindedir. Bu parolayı almak için sunucunuzun terminaline dönün ve aşağıdaki komutu çalıştırın:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Bu komutun çıktısı, 32 karakterlik alfanümerik bir parola olacaktır. Bu parolayı kopyalayın ve Jenkins web arayüzündeki “Administrator password” (Yönetici parolası) alanına yapıştırın. Ardından “Continue” (Devam) butonuna tıklayın.
Parolayı girdikten sonra, Jenkins sizi “Customize Jenkins” (Jenkins’i Özelleştirin) ekranına yönlendirecektir. Burada, Jenkins’in temel işlevselliğini genişleten eklentileri yüklemeniz istenir. İki seçenek sunulur:
1. Install suggested plugins (Önerilen eklentileri yükle): Bu seçenek, Jenkins topluluğu tarafından en yaygın kullanılan ve önerilen eklentileri otomatik olarak kurar. Çoğu kullanıcı için bu en iyi seçenektir, çünkü bu eklentiler genellikle versiyon kontrol sistemleri (Git), derleme araçları (Maven, Gradle) ve temel bildirim mekanizmaları gibi kritik işlevselliği sağlar.
2. Select plugins to install (Yüklenecek eklentileri seç): Bu seçenek, hangi eklentilerin yükleneceğini manuel olarak seçmenize olanak tanır. Eğer belirli ihtiyaçlarınız varsa veya sadece minimum eklenti setini kurmak istiyorsanız bu seçeneği kullanabilirsiniz. Ancak, başlangıçta önerilen eklentileri yüklemek genellikle daha iyi bir başlangıç noktasıdır.
“Install suggested plugins” seçeneğini tıklayın. Jenkins, seçilen eklentileri indirmeye ve kurmaya başlayacaktır. Bu işlem, internet hızınıza ve sunucunuzun performansına bağlı olarak birkaç dakika sürebilir. Kurulum sırasında ilerlemeyi ekranda göreceksiniz.
Eklenti kurulumu tamamlandıktan sonra, Jenkins sizden bir yönetici kullanıcısı oluşturmanızı isteyecektir. Bu, gelecekte Jenkins’e giriş yapmak için kullanacağınız ana hesaptır. Aşağıdaki bilgileri doldurun:
* Username (Kullanıcı Adı): Güvenli ve hatırlaması kolay bir kullanıcı adı seçin (örneğin, admin veya jenkins_admin).
* Password (Parola): Güçlü bir parola belirleyin.
* Confirm password (Parolayı Onayla): Parolayı tekrar girin.
* Full name (Tam Adı): Adınızı ve soyadınızı girin.
* E-mail address (E-posta Adresi): Geçerli bir e-posta adresi girin. Bu, bildirimler ve parola sıfırlama işlemleri için kullanılabilir.
Bilgileri doldurduktan sonra “Save and Continue” (Kaydet ve Devam Et) butonuna tıklayın.
Bir sonraki adım, “Jenkins URL” (Jenkins URL’si) yapılandırmasıdır. Jenkins, projelerinizdeki derleme sonuçları veya bildirimler için bu URL’yi kullanır. Genellikle varsayılan olarak sunucunuzun IP adresi ve portu ile doğru bir şekilde ayarlanmış olacaktır. Eğer bir alan adı kullanıyorsanız veya bir ters proxy arkasında çalışıyorsanız, bu URL’yi buna göre ayarlamanız gerekebilir. Doğru URL’nin ayarlandığından emin olduktan sonra “Save and Finish” (Kaydet ve Bitir) butonuna tıklayın.
Tebrikler! Jenkins kurulumunuz ve temel yapılandırmanız tamamlandı. Şimdi “Start using Jenkins” (Jenkins’i kullanmaya başla) butonuna tıklayarak Jenkins paneline erişebilirsiniz. Bu, Jenkins’in ana çalışma alanıdır ve buradan yeni işler oluşturmaya, eklentileri yönetmeye ve sistem ayarlarını yapılandırmaya başlayabilirsiniz.
Bu ilk yapılandırma adımları, Jenkins’i güvenli ve kullanıma hazır hale getirmenin temelini oluşturur. Artık CI/CD süreçlerinizi otomatikleştirmek için Jenkins’i kullanmaya başlayabilirsiniz.
Jenkins ile CI/CD Süreçlerini Nasıl Başlatırız? (Vaka Analizi Dahil)
Jenkins’i kurup temel yapılandırmasını tamamladıktan sonra, şimdi asıl amacına, yani sürekli entegrasyon ve sürekli teslimat (CI/CD) süreçlerini otomatikleştirmeye geçebiliriz. Bu bölüm, Jenkins’te basit bir pipeline (işlem hattı) oluşturarak, bir Git deposundaki kod değişikliklerini nasıl izleyeceğinizi, otomatik derleme ve test işlemlerini nasıl tetikleyeceğinizi bir vaka analizi üzerinden gösterecektir.
Vaka Analizi: Basit Bir Java Uygulaması için CI/CD Pipeline’ı
Senaryomuzda, bir Java Spring Boot uygulamamız olduğunu ve bu uygulamanın kodunun bir Git deposunda (örneğin GitHub veya GitLab) tutulduğunu varsayalım. Amacımız, her kod değişikliğinde (push) Jenkins’in bu değişikliği algılaması, uygulamayı Maven ile derlemesi ve temel testleri çalıştırmasıdır.
Adım 1: Yeni Bir Jenkins İşlem Hattı (Pipeline) Oluşturma
Jenkins paneline giriş yaptıktan sonra, sol menüden “New Item” (Yeni Öğe) seçeneğine tıklayın.
* Item Name (Öğe Adı): Uygulamanıza uygun bir isim verin, örneğin SpringBoot-CI-Pipeline.
* Select a project type (Proje türü seçin): “Pipeline” seçeneğini seçin.
* “OK” butonuna tıklayın.
Adım 2: Pipeline Yapılandırması
Açılan yapılandırma sayfasında, birçok seçenek göreceksiniz. Şimdilik en önemli kısımlara odaklanalım:
1. General (Genel):
* İsteğe bağlı olarak bir açıklama ekleyebilirsiniz.
2. Build Triggers (Derleme Tetikleyicileri):
* Burada Jenkins’in derlemeleri ne zaman tetikleyeceğini belirleriz. CI için en yaygın tetikleyici, versiyon kontrol sistemindeki (Git) bir değişikliktir.
* “SCM polling” (SCM yoklama) veya “GitHub hook trigger for GITScm polling” (GitHub kancası tetikleyicisi) seçeneklerinden birini işaretleyebilirsiniz. Eğer GitHub kullanıyorsanız ve webhook kurmak istiyorsanız ikincisi daha verimlidir. SCM polling seçeneğini işaretlerseniz, “Schedule” (Program) alanına H/5 * * * * gibi bir değer girerek Jenkins’in her 5 dakikada bir Git deposunu kontrol etmesini sağlayabilirsiniz.
3. Pipeline (İşlem Hattı):
* Bu bölüm, işlem hattının (pipeline) kodunu tanımladığımız yerdir. Jenkins Pipeline, Groovy tabanlı bir DSL (Domain Specific Language) kullanır ve bu kod genellikle bir Jenkinsfile içinde tutulur. Bu, işlem hattının versiyon kontrolü altında olmasını sağlar.
* Definition (Tanım): “Pipeline script from SCM” (SCM’den Pipeline betiği) seçeneğini seçin. Bu, Jenkins’in Jenkinsfile dosyasını doğrudan Git deponuzdan okuyacağı anlamına gelir.
* SCM: “Git” seçeneğini seçin.
* Repository URL (Depo URL’si): Git deponuzun URL’sini girin (örn. https://github.com/kullanici/repo.git).
* Credentials (Kimlik Bilgileri): Eğer deponuz herkese açık değilse, buraya Git kimlik bilgilerinizi eklemeniz gerekir. “Add” -> “Jenkins” butonuna tıklayarak kullanıcı adı/parola veya SSH anahtarı ekleyebilirsiniz.
* Branches to build (Derlenecek dallar): Genellikle */main veya */master olarak ayarlanır.
* Script Path (Betiğin Yolu): Varsayılan olarak Jenkinsfile‘dır. Eğer dosyanız farklı bir isimdeyse veya farklı bir dizindeyse burayı güncelleyin.
Yapılandırmayı tamamladıktan sonra “Save” (Kaydet) butonuna tıklayın.
Adım 3: Jenkinsfile Oluşturma
Şimdi, Git deponuzun kök dizinine Jenkinsfile adında bir dosya oluşturmanız ve içine pipeline kodunu yazmanız gerekiyor. İşte basit bir Java/Maven projesi için örnek bir Jenkinsfile:
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/kullanici/repo.git' // Depo URL'nizi buraya yazın
}
}
stage('Build') {
steps {
// Maven ile uygulamayı derle
sh 'mvn clean install -DskipTests'
}
}
stage('Test') {
steps {
// Maven ile testleri çalıştır
sh 'mvn test'
}
}
stage('Archive Artifacts') {
steps {
// Oluşan JAR dosyasını arşivle
archiveArtifacts artifacts: 'target/*.jar', fingerprint: true
}
}
}
post {
always {
echo 'Pipeline finished.'
}
success {
echo 'Build successful!'
}
failure {
echo 'Build failed!'
}
}
}
Bu Jenkinsfile aşağıdaki adımları tanımlar:
* agent any: Herhangi bir Jenkins agent’ında çalış.
* Checkout: Git deposundan kodu çeker.
* Build: Maven kullanarak projeyi derler. -DskipTests bayrağı, derleme sırasında testlerin atlanmasını sağlar, böylece derleme ve test aşamalarını ayırabiliriz.
* Test: Maven kullanarak testleri çalıştırır.
* Archive Artifacts: Derleme sonucunda oluşan .jar dosyasını Jenkins’in arşivine kaydeder.
* post bloğu: Pipeline’ın sonucuna göre (başarılı, başarısız, her zaman) belirli eylemleri gerçekleştirir.
Bu Jenkinsfile‘ı Git deponuza ekleyin ve değişiklikleri push edin.
Adım 4: Pipeline’ı Çalıştırma ve İzleme
Jenkins ana paneline geri dönün ve oluşturduğunuz SpringBoot-CI-Pipeline işine tıklayın. Sol menüden “Build Now” (Şimdi Derle) butonuna tıklayarak pipeline’ı manuel olarak tetikleyebilirsiniz. Eğer Git webhook’u kurduysanız veya SCM polling ayarladıysanız, Git deponuza bir değişiklik gönderdiğinizde pipeline otomatik olarak tetiklenecektir.
Derleme başladıktan sonra, “Build History” (Derleme Geçmişi) bölümünde yeni bir derleme kaydının oluştuğunu göreceksiniz. Bu kayda tıklayarak ve ardından sol menüden “Console Output” (Konsol Çıktısı) seçeneğini seçerek derlemenin ilerleyişini ve loglarını canlı olarak izleyebilirsiniz. Burada, Git checkout, Maven derleme ve test adımlarının çıktısını göreceksiniz. Herhangi bir hata durumunda, hatanın nedenini buradan tespit edebilirsiniz.
Bu vaka analizi, Jenkins ile temel bir CI/CD pipeline’ını nasıl kuracağınızı göstermektedir. Gerçek dünya senaryolarında, bu pipeline’a daha fazla adım eklenebilir:
* Statik Kod Analizi: SonarQube gibi araçlarla kod kalitesi kontrolü.
* Güvenlik Tarama: Güvenlik açıklarını tespit etmek için araçlar çalıştırma.
* Docker İmajı Oluşturma: Uygulamayı bir Docker konteynerine paketleme.
* Dağıtım: Test ortamına veya üretim ortamına otomatik dağıtım.
* Bildirimler: Slack, E-posta veya Microsoft Teams’e derleme sonuçlarını gönderme.
Jenkins’in gücü, bu tür otomasyonları esnek bir şekilde tanımlayabilme ve geniş bir eklenti ekosistemiyle neredeyse her türlü geliştirme aracına entegre olabilme yeteneğinden gelir. Bu temel pipeline ile başlayarak, projelerinizin ihtiyaçlarına göre daha karmaşık ve kapsamlı CI/CD süreçleri oluşturabilirsiniz.
İleri Düzey Jenkins Kullanımı ve Optimizasyon İpuçları
Jenkins’in temel kurulumu ve bir CI/CD pipeline’ı oluşturma adımlarını tamamladığımıza göre, şimdi daha deneyimli kullanıcılar için Jenkins’ten en iyi şekilde yararlanmalarını sağlayacak ileri düzey ipuçlarına ve optimizasyon stratejilerine odaklanalım. Bu bölüm, güvenlik, performans, ölçeklenebilirlik ve mobil uyumluluk gibi kritik konuları ele alacaktır.
Jenkins Güvenliğini Nasıl Sağlarız?
Jenkins, projelerinizin kaynak koduna ve dağıtım süreçlerine erişim sağladığı için güvenlik en önemli önceliklerden biridir. İşte bazı ileri düzey güvenlik ipuçları:
* Ters Proxy ve SSL/TLS: Jenkins’i doğrudan 8080 portu üzerinden internete açmak yerine, Nginx veya Apache gibi bir ters proxy sunucusu arkasında çalıştırmak şiddetle tavsiye edilir. Bu, SSL/TLS şifrelemesi (HTTPS) kullanarak tüm trafiği şifrelemenize, kimlik doğrulama katmanları eklemenize ve potansiyel güvenlik açıklarını azaltmanıza olanak tanır. Örneğin, Nginx için basit bir yapılandırma şöyle olabilir:
server {
listen 80;
server_name jenkins.alanadiniz.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name jenkins.alanadiniz.com;
ssl_certificate /etc/letsencrypt/live/jenkins.alanadiniz.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/jenkins.alanadiniz.com/privkey.pem;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 90;
# Diğer proxy ayarları
}
}
Bu örnek, Nginx’in 80 portundan gelen tüm HTTP isteklerini 443 portundaki HTTPS’e yönlendirdiğini ve 443 portunda Jenkins’e bir ters proxy görevi gördüğünü göstermektedir. SSL sertifikaları için Let’s Encrypt gibi ücretsiz çözümler kullanabilirsiniz.
* Kullanıcı ve Rol Yönetimi: Jenkins’in kendi dahili kullanıcı veritabanını kullanmak yerine, LDAP, Active Directory veya OAuth gibi harici kimlik doğrulama sistemleriyle entegre olun. Bu, kullanıcı yönetimini merkezileştirir ve güvenlik politikalarınızı daha tutarlı hale getirir. Ayrıca, “Role-based Authorization Strategy” eklentisini kullanarak kullanıcılara ve gruplara hassas yetkilendirmeler atayın. Herkesin her şeye erişimi olmamalıdır.
* Güvenlik Güncellemeleri: Jenkins çekirdeğini ve eklentilerini düzenli olarak güncelleyin. Jenkins projesi, güvenlik açıklarını hızla yamalar ve güncellemeler genellikle kritik düzeltmeler içerir.
* Bağımlılık Taraması: Güvenlik tarama eklentileri (örneğin OWASP Dependency-Check) kullanarak projelerinizin bağımlılıklarındaki bilinen güvenlik açıklarını tarayın.
Performans ve Ölçeklenebilirlik Optimizasyonu Nasıl Yapılır?
Büyüyen projeler ve ekiplerle birlikte Jenkins sunucunuzun performansını ve ölçeklenebilirliğini sağlamak önemlidir.
* Jenkins Master-Agent Mimarisi: Tek bir Jenkins master sunucusu, derleme görevlerini yürütmek için yeterli olmayabilir. Master sunucunun ana görevi, işleri zamanlamak, kullanıcı arayüzünü sunmak ve agent’ları yönetmektir. Gerçek derleme ve test işlemleri için “Jenkins Agent” (eski adıyla “Slave”) kullanın. Agent’lar, farklı işletim sistemlerinde (Linux, Windows, macOS) veya farklı ortamlarda (Docker, Kubernetes) çalışabilir. Bu, iş yükünü dağıtır, kaynak kullanımını optimize eder ve farklı derleme ortamları sağlamanıza olanak tanır.
* Kaynak Tahsisi: Jenkins master sunucunuza yeterli CPU, RAM ve hızlı depolama (SSD) sağlayın. Yoğun I/O gerektiren derlemeler için hızlı diskler kritik öneme sahiptir. Java Sanal Makinesi (JVM) için uygun bellek ayarları (örneğin, -Xmx ve -Xms parametreleri) Jenkins’in kararlı çalışmasını sağlar.
* Derleme Geçmişini Yönetme: Eski derleme geçmişleri ve artefaktlar zamanla disk alanını doldurabilir ve Jenkins’in performansını düşürebilir. İş yapılandırmanızda “Discard old builds” (Eski derlemeleri at) seçeneğini kullanarak belirli bir sayıdan veya süreden sonra eski derlemeleri otomatik olarak silebilirsiniz.
* Paralel Pipeline Aşamaları: Jenkins Pipeline’larda parallel aşamalarını kullanarak aynı anda birden fazla görevi çalıştırın. Örneğin, farklı test tiplerini (birim, entegrasyon, UI) eş zamanlı olarak çalıştırarak derleme süresini önemli ölçüde kısaltabilirsiniz.
stage('Parallel Tests') {
parallel {
stage('Unit Tests') {
steps {
sh 'mvn test -Dtest=UnitTests'
}
}
stage('Integration Tests') {
steps {
sh 'mvn test -Dtest=IntegrationTests'
}
}
}
}
* Docker ve Kubernetes Entegrasyonu: Jenkins’i Docker konteynerlerinde çalıştırmak ve Kubernetes ile entegre etmek, ölçeklenebilirliği ve kaynak yönetimini büyük ölçüde artırır. Kubernetes’te Jenkins agent’ları dinamik olarak başlatılabilir ve iş bittiğinde otomatik olarak kapatılabilir, bu da kaynak kullanımını optimize eder.
Mobil Uyumluluk ve Kullanıcı Arayüzü İpuçları
Jenkins’in varsayılan web arayüzü genellikle masaüstü kullanım için optimize edilmiştir. Ancak, mobil cihazlardan erişim veya özel dashboard’lar oluşturma ihtiyacı doğabilir.
* Jenkins Mobil Uygulamaları: Üçüncü taraf Jenkins mobil uygulamaları (iOS ve Android için) mevcuttur. Bu uygulamalar, derleme durumunu kontrol etmek, işleri tetiklemek ve logları görüntülemek için daha mobil uyumlu bir arayüz sunar.
* Özel Dashboard’lar ve API Kullanımı: Jenkins’in güçlü bir REST API’si vardır. Bu API’yi kullanarak kendi özel mobil uyumlu dashboard’larınızı veya uygulamalarınızı geliştirebilirsiniz. Örneğin, React veya Vue.js ile bir ön uç uygulaması yazarak Jenkins API’sından veri çekip mobil cihazlara uygun bir şekilde sunabilirsiniz. Bu tür bir uygulamayı geliştirirken, responsive tasarım prensiplerini ve CSS media query’lerini kullanmak esastır.
/* Mobil cihazlar için stil tanımlamaları */
@media only screen and (max-width: 600px) {
body {
font-size: 14px;
}
.container {
width: 100%;
padding: 10px;
}
.card {
flex-direction: column;
}
}
/* Tabletler için stil tanımlamaları */
@media only screen and (min-width: 601px) and (max-width: 1024px) {
.container {
width: 90%;
}
}
Bu CSS kodu, ekran genişliğine göre farklı stil kuralları uygulayarak içeriğin mobil cihazlarda daha iyi görünmesini sağlar. Bu, bir Jenkins eklentisi veya harici bir uygulama geliştirirken kullanılabilir.
* Temalar ve Eklentiler: Jenkins arayüzünü özelleştirmek için temalar veya UI eklentileri (örneğin “Simple Theme Plugin”) kullanabilirsiniz. Bu, arayüzü markanıza veya tercihlerinize göre ayarlamanıza yardımcı olabilir.
Bu ileri düzey ipuçları ve optimizasyon stratejileri, Jenkins kurulumunuzu daha güvenli, daha performanslı ve ölçeklenebilir hale getirmenize yardımcı olacaktır. Jenkins’in sunduğu esneklik ve geniş eklenti ekosistemi sayesinde, her türlü CI/CD ihtiyacınıza uygun çözümler geliştirebilirsiniz.
Yaygın Jenkins Kurulum ve Yapılandırma Sorunları Nelerdir?
Jenkins kurulumu ve yapılandırması genellikle sorunsuz ilerlese de, zaman zaman çeşitli problemlerle karşılaşmak mümkündür. Bu bölümde, sıkça karşılaşılan Jenkins sorunlarını, olası nedenlerini ve çözüm yollarını ele alacağız. Sorun giderme yeteneği, bir DevOps mühendisi veya sistem yöneticisi için temel bir beceridir.
1. Jenkins Servisi Başlamıyor veya Erişilemiyor
Bu, en yaygın sorunlardan biridir. Jenkins’in web arayüzüne tarayıcıdan erişemiyorsanız veya servis başlatma hatası alıyorsanız:
* Nedenler:
* Java Yüklü Değil veya Yanlış Sürüm: Jenkins’in çalışması için doğru Java sürümünün (genellikle OpenJDK 11 veya üstü) kurulu olması gerekir.
* Port Çakışması: Jenkins’in varsayılan 8080 portu başka bir uygulama tarafından kullanılıyor olabilir.
* Yetersiz Kaynaklar: Sunucuda yeterli RAM veya disk alanı olmayabilir.
* Güvenlik Duvarı: 8080 portu güvenlik duvarı tarafından engelleniyor olabilir.
* Hatalı Yapılandırma: Jenkins yapılandırma dosyalarında (örneğin /etc/default/jenkins veya /etc/systemd/system/jenkins.service.d/override.conf) yapılan hatalı değişiklikler.
* Çözümler:
1. Servis Durumunu Kontrol Edin:
sudo systemctl status jenkins
Hata mesajlarına dikkat edin.
2. Jenkins Loglarını İnceleyin:
sudo journalctl -fu jenkins
Bu, Jenkins’in neden başlamadığına dair detaylı bilgi verecektir. Özellikle Java ile ilgili hatalara veya port çakışmalarına bakın.
3. Java Sürümünü Doğrulayın:
java -version
Çıktının Jenkins’in gerektirdiği sürüm olduğundan emin olun. Gerekirse sudo update-alternatives --config java ile doğru sürümü seçin.
4. Port Kullanımını Kontrol Edin:
sudo netstat -tulnp | grep 8080
Eğer 8080 portu başka bir PID tarafından kullanılıyorsa, o servisi durdurmanız veya Jenkins’in portunu değiştirmeniz gerekebilir. Jenkins portunu /etc/default/jenkins dosyasındaki HTTP_PORT değerini düzenleyerek değiştirebilirsiniz.
5. Güvenlik Duvarını Kontrol Edin:
sudo ufw status
8080 portunun açık olduğundan emin olun. Gerekirse sudo ufw allow 8080 komutunu kullanın.
6. Disk Alanını Kontrol Edin:
df -h
/var/lib/jenkins dizininin bulunduğu bölümde yeterli boş alan olduğundan emin olun.
2. Eklenti Kurulumu Başarısız Oluyor veya Eklentiler Çalışmıyor
Jenkins’in gücü eklentilerinden gelir, ancak bazen eklenti kurulumları sorun çıkarabilir.
* Nedenler:
* Ağ Bağlantı Sorunları: Jenkins’in eklenti sunucularına erişememesi.
* Proxy Ayarları: Şirket ağlarında proxy sunucusu kullanılıyorsa Jenkins’in proxy ayarları doğru yapılmamış olabilir.
* Uyumluluk Sorunları: Eklentinin Jenkins çekirdek sürümü veya diğer eklentilerle uyumsuz olması.
* Yetersiz Bellek: Eklenti kurulumu sırasında Jenkins’in belleği yetersiz kalabilir.
* Çözümler:
1. Ağ Bağlantısını Kontrol Edin: Jenkins sunucusundan ping updates.jenkins.io gibi bir komutla internet bağlantısını kontrol edin.
2. Proxy Ayarlarını Yapılandırın: Jenkins arayüzünde “Manage Jenkins” -> “Manage Plugins” -> “Advanced” sekmesine gidin. Burada “Proxy Configuration” bölümünden proxy ayarlarınızı girin.
3. Jenkins Loglarını Kontrol Edin: Eklenti kurulumu sırasında oluşan hatalar genellikle Jenkins loglarında detaylı olarak belirtilir.
4. Manuel Eklenti Kurulumu: Gerekirse .hpi veya .jpi uzantılı eklenti dosyasını manuel olarak indirip “Manage Plugins” -> “Advanced” sekmesindeki “Upload Plugin” seçeneğini kullanarak kurmayı deneyin.
3. Git/SCM Entegrasyonu Sorunları
Pipeline’ların en temel adımı olan kod çekme (checkout) aşamasında sıkça sorunlar yaşanabilir.
* Nedenler:
* Yanlış Git URL’si: Depo URL’si hatalı yazılmış olabilir.
* Kimlik Doğrulama Sorunları: Jenkins’in Git deposuna erişmek için gerekli kimlik bilgilerine (kullanıcı adı/parola, SSH anahtarı) sahip olmaması veya yanlış olması.
* SSH Anahtarı İzinleri: SSH anahtarı kullanılıyorsa, Jenkins kullanıcısının anahtar dosyasına erişim izinlerinin doğru ayarlanmaması.
* Güvenlik Duvarı/Proxy: Git sunucusuna erişim engelleniyor olabilir.
* Çözümler:
1. Git URL’sini Doğrulayın: Depo URL’sinin doğru olduğundan emin olun.
2. Jenkins Kimlik Bilgilerini Kontrol Edin: Jenkins arayüzünde “Manage Jenkins” -> “Manage Credentials” bölümünden Git deposu için doğru kimlik bilgilerinin tanımlandığından ve işe atandığından emin olun.
3. SSH Anahtarı İzinleri: Eğer SSH kullanıyorsanız, Jenkins kullanıcısının (jenkins) .ssh dizinindeki anahtar dosyalarına (örneğin id_rsa, id_rsa.pub) doğru okuma izinlerine sahip olduğundan emin olun.
sudo su - jenkins
ls -l ~/.ssh/
4. Git Kurulumunu Kontrol Edin: Jenkins sunucusunda git komutunun kurulu ve çalışır durumda olduğundan emin olun.
git --version
4. Derleme Başarısızlıkları ve Hata Ayıklama
Pipeline’lar çalışırken derleme veya test aşamalarında hatalar almak doğaldır.
* Nedenler:
* Kod Hataları: En yaygın neden, çekilen kodda derleme veya test hatalarının olmasıdır.
* Ortam Değişkenleri: Derleme ortamında gerekli PATH değişkenlerinin veya diğer ortam değişkenlerinin eksik olması.
* Bağımlılık Sorunları: Maven veya Gradle gibi araçların gerekli bağımlılıkları indirememesi.
* Yetersiz Bellek: Özellikle Java projelerinde derleme sırasında JVM’in belleği yetersiz kalabilir.
* Çözümler:
1. Konsol Çıktısını İnceleyin: Her derlemenin “Console Output” bölümü, hatanın nedenini anlamak için en önemli kaynaktır. Hata mesajlarını dikkatlice okuyun.
2. Yerel Olarak Tekrar Üretin: Jenkins’in yaptığı derleme komutunu (örneğin mvn clean install) manuel olarak Jenkins sunucusunda jenkins kullanıcısı ile çalıştırmayı deneyin. Bu, ortam kaynaklı sorunları tespit etmenize yardımcı olabilir.
sudo su - jenkins
cd /var/lib/jenkins/workspace/YourProjectName
mvn clean install
3. Bellek Ayarlarını Kontrol Edin: Eğer OutOfMemoryError gibi Java bellek hataları alıyorsanız, Jenkins’in JVM bellek ayarlarını artırmanız gerekebilir. Bu genellikle /etc/default/jenkins dosyasındaki JAVA_ARGS parametresini düzenleyerek yapılır.
4. Eklenti Güncellemeleri: Bazen bir eklentinin eski bir sürümü, derleme aracınızın yeni bir sürümüyle uyumsuz olabilir. İlgili eklentileri güncellemeyi deneyin.
Bu yaygın sorunlar ve çözüm yolları, Jenkins kurulumunuzu ve CI/CD süreçlerinizi daha kararlı hale getirmenize yardımcı olacaktır. Unutmayın ki her hata bir öğrenme fırsatıdır!
Sonuç ve Sıkça Sorulan Sorular
Bu kapsamlı rehber boyunca, Jenkins’in ne olduğundan, Ubuntu üzerine adım adım nasıl kurulacağına, temel yapılandırmalarından, bir CI/CD pipeline’ı oluşturmaya ve hatta ileri düzey optimizasyon ipuçlarına kadar birçok konuyu ele aldık. Jenkins, modern yazılım geliştirme dünyasında sürekli entegrasyon ve sürekli teslimat süreçlerinin vazgeçilmez bir aracıdır. Otomasyon yetenekleri sayesinde, yazılım ekipleri daha hızlı, daha güvenilir ve daha kaliteli ürünler sunabilirler. Kurulumun ve ilk yapılandırmanın ardından, projelerinize özel pipeline’lar oluşturarak geliştirme süreçlerinizi tamamen otomatikleştirebilirsiniz. Unutmayın ki Jenkins’in gücü, geniş eklenti ekosisteminde ve esnek yapılandırma seçeneklerinde yatmaktadır. Güvenlik, performans ve ölçeklenebilirlik konularına dikkat ederek Jenkins kurulumunuzdan maksimum verim alabilirsiniz.
Jenkins ile yolculuğunuz, basit bir derleme otomasyonundan, karmaşık mikroservis mimarilerinin sürekli dağıtımına kadar uzanabilir. Bu makale, size bu yolculukta sağlam bir başlangıç noktası sunmayı amaçlamıştır. Öğrendiğiniz bilgileri kendi projelerinizde uygulayarak ve Jenkins’in sunduğu olanakları keşfederek yeteneklerinizi geliştirmeye devam etmelisiniz.
Sıkça Sorulan Sorular (SSS)
Soru 1: Jenkins için neden Ubuntu tercih edilmeli?
Cevap 1: Ubuntu, geniş bir kullanıcı tabanına, zengin bir paket deposuna ve güçlü bir topluluk desteğine sahip popüler bir Linux dağıtımıdır. Kurulumu kolaydır, kararlıdır ve sunucu ortamları için iyi belgelenmiştir. Bu özellikler, Jenkins gibi bir otomasyon sunucusunu barındırmak için ideal bir platform olmasını sağlar. Ayrıca, birçok geliştirici ve sistem yöneticisi Ubuntu’ya aşina olduğu için sorun giderme ve yönetim süreçleri daha kolay olabilir.
Soru 2: Jenkins’i kurduktan sonra hangi eklentileri ilk olarak yüklemeliyim?
Cevap 2: İlk kurulumda “Install suggested plugins” (Önerilen eklentileri yükle) seçeneğini tercih etmek en iyisidir. Bu, Git, Pipeline, Maven Integration, Credentials, Timestamper gibi temel ve yaygın olarak kullanılan eklentileri otomatik olarak kurar. Daha sonra projenizin ihtiyaçlarına göre (örneğin Docker, Kubernetes, Slack Notifier, SonarQube Scanner gibi) ek eklentiler yükleyebilirsiniz. “Manage Jenkins” -> “Manage Plugins” bölümünden eklentileri arayabilir ve kurabilirsiniz.
Soru 3: Jenkins’in varsayılan 8080 portunu nasıl değiştirebilirim?
Cevap 3: Jenkins’in varsayılan portunu değiştirmek için Ubuntu’da /etc/default/jenkins dosyasını düzenlemeniz gerekir. Bu dosyada HTTP_PORT=8080 satırını bulup istediğiniz port numarasıyla (örneğin HTTP_PORT=9090) değiştirin. Değişikliği kaydettikten sonra Jenkins servisini yeniden başlatmanız gerekmektedir:
sudo systemctl restart jenkins
Eğer bir ters proxy (Nginx/Apache) kullanıyorsanız, proxy yapılandırmanızı da yeni porta göre güncellemeniz gerekecektir.
Soru 4: Jenkins sunucumu nasıl yedekleyebilirim?
Cevap 4: Jenkins yapılandırması ve tüm verileri /var/lib/jenkins dizininde saklanır. Bu dizinin düzenli olarak yedeklenmesi kritik öneme sahiptir. Yedekleme için Jenkins servisini durdurup bu dizini sıkıştırıp güvenli bir konuma kopyalayabilirsiniz:
sudo systemctl stop jenkins
sudo tar -cvzf jenkins_yedek_$(date +%Y%m%d%H%M%S).tar.gz /var/lib/jenkins
sudo systemctl start jenkins
Bu yedekleme dosyasını bulut depolama veya başka bir harici depolama birimine taşımak, veri kaybı riskini azaltacaktır. Ayrıca, “Backup Plugin” gibi eklentileri kullanarak daha otomatik yedekleme çözümleri de uygulayabilirsiniz.
Soru 5: Jenkins’te bir pipeline’ı tetiklemek için Git webhook’unu nasıl kurarım?
Cevap 5: Git webhook’u kurmak, Jenkins’in Git deponuzdaki kod değişikliklerini anında algılamasını sağlar ve SCM polling’e göre daha verimlidir. Adımlar genellikle şunlardır:
1. Jenkins tarafında, pipeline yapılandırmanızda “Build Triggers” altında “GitHub hook trigger for GITScm polling” veya “Generic Webhook Trigger” seçeneğini işaretleyin.
2. Jenkins URL’nizin dışarıdan erişilebilir olduğundan emin olun (ters proxy ve güvenlik duvarı ayarları dahil).
3. Git deponuzun (örneğin GitHub veya GitLab) ayarlarına gidin. “Webhooks” veya “Integrations” bölümünü bulun.
4. Yeni bir webhook ekleyin. “Payload URL” olarak Jenkins sunucunuzun URL’sini ve genellikle /github-webhook/ veya /generic-webhook-trigger/invoke gibi bir yolu belirtin (örneğin http://jenkins.alanadiniz.com/github-webhook/).
5. Webhook’un hangi olaylarda tetikleneceğini seçin (genellikle “push” olayları).
6. Webhook’u kaydedin. Artık Git deponuza her kod gönderdiğinizde, Jenkins otomatik olarak pipeline’ınızı tetikleyecektir.