1. Hata: "java.lang.NullPointerException"
Bu hata, Jenkins’in beklediği bir objeyi bulamaması nedeniyle ortaya çıkar. Hata mesajını okuduğunuzda, hatanın kaynaklandığı yeri kolayca bulabilirsiniz, ancak asıl mesele, pipeline’ın doğru şekilde konfigüre edilmemiş olmasıdır. Eğer doğru bir şekilde parametre göndermediyseniz, Jenkins bu parametreyi “null” kabul eder ve işte bu da NullPointerException’a yol açar.
Çözüm:
Pipeline script’inizi gözden geçirin ve gerekli parametrelerin doğru şekilde tanımlandığından emin olun. Parametrelerin doğru şekilde alındığını ve kullanıldığını kontrol etmek için aşağıdaki kodu deneyebilirsiniz:
pipeline {
agent any
parameters {
string(name: 'MyParam', defaultValue: '', description: 'Bir parametre')
}
stages {
stage('Check Param') {
steps {
script {
if (params.MyParam == '') {
error 'Parametre boş! Lütfen parametreyi doldurun.'
} else {
echo "Parametre: ${params.MyParam}"
}
}
}
}
}
}
Eğer parametre gerçekten null değilse, hata başka bir yerde olabilir. O yüzden pipeline konfigürasyonunuzu yeniden gözden geçirin.
2. Hata: "Failed to connect to repository"
Bu hata, Jenkins’in kaynak kodunu almak için yapılandırdığı repository’ye bağlanamamasından kaynaklanır. Genellikle Git bağlantısı veya SSH anahtarı ile ilgili bir sorun olabilir.
Çözüm:
İlk olarak, repository URL’sinin doğru olup olmadığını kontrol edin. Eğer SSH anahtarıyla bağlanıyorsanız, anahtarın doğru şekilde ayarlandığından emin olun. Jenkins’in SSH anahtarı kullanarak bağlanabilmesi için aşağıdaki adımları izleyin:
git credentialsId: 'your-ssh-key', url: 'git@github.com:your-repo.git'
Bu şekilde bağlantı sağlanmalıdır. Hala sorun yaşıyorsanız, Git’in doğru şekilde kurulu olup olmadığını ve ağ bağlantılarınızı gözden geçirmeyi unutmayın.
3. Hata: "Pipeline script not found"
Pipeline’ınızı çalıştırırken bu hata ile karşılaşırsanız, Jenkins'in belirtilen pipeline script’ini bulamadığı anlamına gelir. Bu, genellikle Jenkinsfile’ınızın yanlış yerde olması nedeniyle gerçekleşir.
Çözüm:
Jenkinsfile dosyasının doğru dizinde bulunduğundan emin olun. Genellikle repository kök dizininde yer alır ve Jenkins, bu dosyayı burada arar. Eğer farklı bir yerdeyse, Jenkins’in doğru yolu bulması için dosya yolunu belirtmeniz gerekebilir. Aşağıdaki gibi bir yapı kullanabilirsiniz:
pipeline {
agent any
stages {
stage('Build') {
steps {
checkout scm
sh 'ls -al'
}
}
}
}
Bu yapı, Jenkinsfile’ın doğru yere yerleştirildiğini doğrulamanıza yardımcı olacaktır.
4. Hata: "Permission Denied"
Bu hata genellikle dosya izinleriyle ilgilidir. Özellikle build işlerini çalıştırırken gerekli dosyaların ve klasörlerin doğru izinlere sahip olup olmadığını kontrol etmeniz gerekir.
Çözüm:
İzinlerle ilgili sorunları çözmek için, dosyaların ve dizinlerin doğru kullanıcıya ve gruba ait olduğundan emin olun. Linux’ta izinleri düzenlemek için şu komutları kullanabilirsiniz:
chmod +x script.sh
chown jenkins:jenkins script.sh
Bu komutlar, Jenkins’in doğru şekilde dosyayı çalıştırabilmesini sağlar.
5. Hata: "Timeout during execution"
Bu hata, Jenkins pipeline’ınızın belirli bir süre zarfında tamamlanamadığı anlamına gelir. Genellikle uzun süren işlemler veya sistem kaynaklarının tükenmesi nedeniyle meydana gelir.
Çözüm:
Pipeline’a belirli bir zaman aşımı eklemek, bu hatayı çözmeye yardımcı olabilir. Aşağıdaki örnek, pipeline’a bir zaman aşımı limiti ekler:
pipeline {
agent any
options {
timeout(time: 30, unit: 'MINUTES')
}
stages {
stage('Long Process') {
steps {
sh 'sleep 1800'
}
}
}
}
Bu çözüm, işlem belirlediğiniz süreyi aşarsa otomatik olarak zaman aşımına uğrar ve hatayı engeller.
Sonuç
Jenkins ile çalışan her geliştirici, pipeline hatalarını anlamalı ve bunlara hızlıca çözüm üretebilmelidir. Bu yazıda, Linux üzerinde sık karşılaşılan Jenkins pipeline hatalarını ve pratik çözümlerini ele aldık. Unutmayın, her hata bir öğretidir ve çözümü bulduğunuzda bir sonraki projede daha güçlü olacaksınız.