Jenkins ile Maven Job Oluşturma

Gökhan Ağar
5 min readMar 3, 2023

--

Bu yazımda sizlere Jenkins Maven entegrasyonundan bahsedeceğim. Jenkins Maven sayesinde maven proje yapılandırma (job) oluşturacağız, maven testlerimizi derleme (build) işleminden önce çalıştırabiliyor ve proje derleme (build) işlemini otomatikleştirmiş olacağız. Maven POM(project object model) konfigürasyon dosyasına göre build alan, bağımlılıkları yöneten bir derleme aracıdır. İlk olarak eklentiyi Jenkins’i Yönet (Manage Jenkins) > Eklentileri Yönet (Manage Plugins) > Maven Integration yazarak yükleyebilirsiniz.

Maven Entegrasyonu Ayarları

Yükleme işleminin ardından maven kurulumunu tamamlamanız gerekmektedir. Jenkins’i Yönet (Manage Jenkins) > Global Tool Configuration > Maven’a gidelim.

Öncelikle maven ismi vermelisiniz sonrasında Install automatically butonuna tıklayın ve Install from Apache seçeneği ile sürümünüzü seçin. Kaydet’e basarak maven için ayarı tamamlamış olacaksınız. Aynı sayfada yer alan jdk ve git ayarlarını aynı şekilde yapabilirsiniz. Maven proje yapılandırmasından önce bu sayfada yer alan bu üç ayarı yapmamız gerekmektedir. Eğer otomatik olarak indirmeyi deneyip hata alırsanız bilgisayarınızda yer alan uzantıları JAVA_HOME, Path to Git executable ve MAVEN_Home kısmına yazmanız gerekmektedir. Eğer sayfanızda jdk ve git bölümleri yer almıyorsa eklenti (plugin) olarak eklemeniz gerekmektedir. Genellikle kurulumda tavsiye edilen bölümüne tıklayarak kurulum yaptıysanız bunlar yüklü olarak karşınızda çıkacaktır. Yoksa yukarıda bahsettiğim eklentiler sayfasından jdk’yı yükleyebilirsiniz. Git jenkins ile entegre bir şekilde gelmektedir.

Jenkins Maven Proje Tanımlama

Ayarlamalarımızı tamamladıktan kontrol merkezinden (dashboard) yeni öğeye (new item) tıklayın. Bir isim verin ve Maven projesi yapılandıra (Maven project) tıklayın. Sonrasında ok tuşuna basarak sayfayı açabilirsiniz.

Projemizi yapılandırırken aynı zamanda jenkinsi sürekli kullanırken yaşayabileceğiniz sorunlardan da bahsetmek istiyorum.

  1. Eski yapılandırmalardan kurtul (Discard old builds)

Uzak sunucunuzda veya lokalinizde testlerinizin yapılandırmalarının kaydedilebilecek bir alana sahip olmazsa hata vermektedir. Bu yüzden bu alanı kullanmanız faydalı olacaktır. Yapılandırmaların geriye dönük saklanacağı gün sayısı (Days to keep builds) ve maksimum saklanacak yapılandırma sayısını(Max # of builds to keep) kapasitesiye göre ayarlayabilirsiniz.

2.Depolama servisinizi seçmeniz gerekmektedir. Ben kodlarımı GitLabte tutuyorum. GitLab seçeneğini tıkladım. Örneğin kodlarınızın GitHubta yer aldığını varsayalım. GitHub seçeneğine tıklayın ve proje url’ini yazın. GitLab kullanıyorsanız aşağıdaki linke tıklayarak makalemde yer alan GitLab entegrasyonunuzu sağlayabilirsiniz.

Link: https://medium.com/@gokhanagar1/jenkins-ile-gitlab-entegrasyonu-60a48ac469cc

3. Kaynak kodu yönetimi bölümünde Git’e tıklayın. GitLab veya GitHubta yer alan reponuzun url’ini buraya yazın. Eğer reponuz private ise 128 hatası alırsınız. Credentials bölümünden token eklemeniz gerekir. Bu token’ı depolama servisinizden (GitHub veya GitLab) almanız gerekir. Eğer 500 hatası alırsanız ve jdk otomatik indiriyorsanız oracle sayfasına üye girişi yapmanız gerekir ya da bilgisayarınızda olan dosya uzantısını jdk kısmına girmeniz gerekmektedir. Error performing git command: git.exe ls-remote-h hatası alırsanız git jenkinste kurulu olmayabilir veya git kısmında otomatik yükleme yerine bilgisayarınızda yer alan uzantıyı vermeniz gerekir.

4. Derlenecek dal(Branches to build) Main veya Master olarak seçilmesi gerekir.

5. Yapılandırma tetikleyiciler (Build Triggers) reponuzun nasıl tetikleneceği bölümüdür. Ben periyodik olarak tetiklemeyi tercih ediyorum. Periyodik ayarlamaların nasıl yapılacağını örnekleri aşağıdaki sitede bulabilirsiniz. Webhookda yaygın kullanılan yöntemler arasındadır.

Link: https://crontab.guru/

6.Pre Step kısmında derleme (build) işlemi gerçekleşmeden önce maven testinizi çalıştırabilirsiniz.

7. Yapılandırma kısmında Root POM bölümüne pom.xml Goals and options bölümüne clean install yazıyoruz.

8. Post Step kısmında run only if build succeeds seçebilirsiniz. Sadece başarılı olduğunda çalıştırmasını öneririm.

9.Add post-build step bölümünde en üst seviye maven hedefleri çalıştır’a tıklayın. Maven versiyonunu seçeriz (daha önceden isim ve uzantısını eklemiştik) ve hangi class’ı, testi veya methodu çalıştıracağımıza burada giriyoruz.

TestNG framework’ünü kullanıyorum ve genelde classları çalıştırmayı tercih ediyorum. Ör. clean test -Dtest= class ismi

10.Yapılandırma Ayarları (Build Settings) bölümünden mail gönderme işlemi yapacağız.

Link: https://medium.com/@gokhanagar1/jenkins-ile-mail-g%C3%B6nderme-cb0fa269615d

11.Yapılandırma sonrası aksiyonlar (Add post-build action) bu bölümde raporlamalarımızı ekliyoruz. Ben allure-raporlamayı tercih ediyorum. Extent ve Cucumber raporlamalarıda yaygın olarak kullanılmaktadır. Yazdığım raporlar ücretsiz olup ücretli kullanabileceğiniz Testrail gibi raporlamalarda mevcuttur. Aşağıdaki linkten allure raporlama makaleme ulaşabilirsiniz.

Link: https://medium.com/@gokhanagar1/allure-report-ile-selenium-testng-ve-jenkins-ile-entegrasyonu-647977f023e0

Kaydet’e basarak işlemenizi tamamlayabilirsiniz.

Ayrıca buraya küçük bir not bırakmak istiyorum.

Makalemi yazarken jenkinste dil seçeneğinin olmadığını bunun için locale eklentisinin kullanıldığını farkettim. Bu eklentiyi dili değiştirmek isteyen arkadaşlar kullanabilir (Jenkins’i Yönet > Eklentileri Yönet > Kullanılabilir). Ekledikten sonra Jenkins’i Yönet > Sistem konfigurasyonunu Değiştir > Locale bölümüne gidin. Bu kısımda Locale ile belirtilen bölüme ör. en-US formatında language code yazıyoruz. Ek olarak Ignore browser preference and force this language to all users seçeneceğinide seçmemiz gerekiyor. Ayarları yaptıktan sonra KAYDET butonuna tıkladığımızda tüm sayfaları ingilizce kullanmaya başlayabiliriz.

Link: https://plugins.jenkins.io/locale/

--

--