DevOps süreçlerinde başrol oynayan Jenkins uygulaması hakkında bu yazımda sizlere her Deployment (Build & Release) sonrası otomatik gelen e-posta ayarlarından, Branch bazlı Credentials bilgisi eklenmesinden ve son Jenkins güncellemesi ile birlikte yürürlükten kalkan Pipeline: Deprecated Groovy Libraries eklentisinden bahsedeceğim. Bildiğiniz gibi Jenkins'deki Pipeline yapısında her kurumun Development yani geliştirme ve test ortamları için Branch yapıları vardır. Bunların içerisinde ise projeler ve onlara ait paketler vardır. Branch yapıları genelde Dev, Test, UAT ve Preprod olarak genel anlamda isimlendirebiliriz. Özellikle Pipeline yapısından Groovy dili ile yazılacak Custom kodlar önce DEV ortamında yazıları ve test edilir sonrasında Jenkins'deki diğer Test ortamlarına ilgili kod aktarılır. Bazı kurumlarda Dev ve Test Jenkins ortamları ayrı sunucularda olabilir veya aynı sunularda tek panel üzerinden yönetiliyor da olabilir. Ayrı sunucularda olan Jenkins ortamlar için Dev sonrası Test ortama kod aktarımı gerçekleştirilir. Genel olarak Jenkins'de kurumsal şirketlerdeki Pipeline yapısından bahsettim. Credentials ise her Branch için ayrı ayrı gireceğiniz bir konfigürasyon panelidir diyebilirim. Jenkins ile başka uygulamaların entegrasyon safhasında örneğin Oracle WebLogic gibi Credentials alanlarına girilecek kullanıcı ve parola bilgileri ile bu ayarlar sağlanmaktadır.
1) Jenkins'de E-Posta Notifications Ayarları
Sırasıyla ilk olarak Jenkins üzerinde anlatacağım E-Posta Notifications ayarlarının nasıl yapılacağına geçebiliriz. Jenkins'de bir paket Deployment sonrası yani her (Build & Release) işlemi bitince belirlenen e-posta adresine otomatik bir mesaj gitmektedir. Bu mesajda ilgili paket Success (Başarılı) veya Failed (Başarısız) olarak Build olma sonucuna göre bilgi dönmektedir. Bu dönen e-posta içerisinde Deploy işlemini yapan kişi yani sicil bilgisi, paket adı, Deploy saati hatta kullandığınız eklentiye göre Deploy ile ilgili detaylı görselleri e-posta içerisinde görebilirsiniz. Bu ayarı yapmanın iki yolu vardır. İlki Email Extension (email-ext) ve Email Extension Template (emailext-template) Plugin yüklü olması gereklidir. Bu iki eklentiyi kurmanız gerekmektedir. Bu eklentileri kurduktan sonra gerekli ayarları Jenkins'i Yönet kısmında bulunan Uncategorized altındaki Editable Email Extension Template kısmından yapabilirsiniz. Detaylı Guide dökümanını internet üzerinden "Configuring Email Notifications in Jenkins" olarak aratıp inceleyebilirsiniz. Bu eklenti ile yapacağınız tüm ayarlar panel üzerinden yapılmaktadır ve Custom kod yazmanıza gerek kalmamaktadır.
İkinci bir yöntem ise Plugin kullanmadan Pipeline yapısında yazdığınız Groovy kodunda yapacağınız Custom değişiklikler ile bunu yapmanız mümkündür. Örneğin aşağıdaki kod parçacığında BUILD yapan kişinin LDAP sicil bilgisini e-posta içeriğine gelecek şekilde eklenmiştir. Siz de BUILD_USER_ID, BUILD_USER_NAME ve gerekli olursa BUILD_USER_GROUPS, BUILD_USER_EMAIL gibi parametreleri de ekleyebilirsiniz.
@NonCPS
def getBuildUserId() {
try {
return currentBuild.rawBuild.getCause(Cause.UserIdCause).getUserId()
} catch(err1) {
try {
echo 'Err1 : ' + err1.toString()
return getUpstreamUserInfo()?.getUserId()
}
catch(err2) {
echo 'Err2 : ' + err2.toString()
return "not found"
}
}
// def causes = currentBuild.getBuildCauses()
// def specificCause = currentBuild.getBuildCauses('hudson.model.Cause$UserIdCause')
// def upstream = currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause)
// echo upstream?.shortDescription
}
@NonCPS
def getBuildUserName() {
try {
return currentBuild.rawBuild.getCause(Cause.UserIdCause).getUserName()
} catch(err1) {
try {
echo 'Err1 : ' + err1.toString()
return getUpstreamUserInfo()?.getUserName()
}
catch(err2) {
echo 'Err2 : ' + err2.toString()
return "not found"
}
}
}
def X_BUILD_USER_ID =getBuildUserId()
def X_BUILD_USER_NAME =getBuildUserName()
Yazının başında da bahsettiğim gibi Dev ve Test ortamlarında yukarıdaki gibi yapacağınız ayarlar için Build User Vars Plugin (build-user-vars-plugin) eklentisi kurulu olması gerekmektedir.
2) Jenkins'de Credentials Ayarları
Jenkins'de bazı uygulamaların kullanıcı adı, parola ve benzeri bilgilerini girmeniz gereken ekran Credentials paneli olup Jenkins ile entegre olan bazı Third Party uygulamaların konfigürasyonel bilgileri bu alanda girilmektedir. Her Branch yani (Job) altında ayrı ayrı Credentials ayarı girmeniz mümkündür. Örneğin job/test/credentials Test ortamı iken job/preprod/credentials Preprod ortamıdır. Jenkins'i Yönet sekmesi altındaki Manage Credentials kısmından tüm ayarları yönetebilir veya yeni bir Credential girebilirsiniz. Yeni bir Credential girmek için resimdeki gibi Domain sütunu altındaki Global kısmına tıklayıp Add Credentials demeniz yeterlidir. Çıkan ekranda Username, Password, ID ve Description (Açıklama) gibi alanlara bilgileri girmeniz yeterli olacaktır.
Credentials ayarı girerken veya güncelleme yaparken genelde Parola bilgisi açık olarak görünmeyip Secret alanı içerisine yazılarak kaydedilmektedir. Örneğin ayar olarak gireceğiniz uygulama Oracle WebLogic olsun diyelim ki. Siz Jenkins ve Oracle WebLogic Server uygulamasının konuşmasını istiyorsanız Credentials alanına ekleme yapmalısınız. Ekleme yaptıktan sonra WebLogic adres bilgisini yeni eklediğiniz Credentials içerisindeki ID kısmına örneğin "weblogic.url" olarak yazabilirsiniz. Secret kısmı ise Concealed alan olup Change Password diyerek buraya da URL bilgisini yazabilirsiniz. SSL tipte bir URL bilgisi ise t3://11.12.13.14:1071 şeklinde bir adres olacaktır. Bu adresi ilgili Concealed yani Gizli alana girip kaydetmeniz yeterlidir. Örnekler ile aşağıda anlatacak olursam;
* https://jenkins.domain:8443/credentials (Manage Credentials Ana Ekranı)
* https://jenkins.domain:8443/job/preprod/credentials (Preprod Ortamı Credentials Ayarları)
Açılan ekranda Stores Scoped kısmındaki Domains altındaki Global ikonuna tıklayıp Add Credentials diyerek yeni bir konfigürasyon ekleyebilirsiniz. Stores Scoped yanında Preprod şeklinde bağlı olduğunuz Branch adı da yazacaktır.
3) Jenkins'de Pipeline: Deprecated Groovy Libraries Eklentisinin İptali
Jenkins'de yayınlanan son kararlı sürüm olan 2.332.3 sonrası tüm Jenkins yöneticileri aşağıdaki resimdeki gibi Pipeline: Deprecated Groovy Libraries bildirimini almıştır. Açıklamada ilgili eklentinin artık eski olduğunu ve geliştirilmeyeceği söylenirken çalışmayacağı için kaldırılması gerektiği de dile getirilmiştir.
"In general, this means that these plugins are either obsolete, no longer being developed, or may no longer work. See the linked web pages for further information about the cause for the deprecation, and suggestions on how to proceed."
Eklentiyi kaldırmak için Jenkins'i Yönet kısmından Eklentileri Yönet (Plugin Manager) ekranına geliniz. Yüklenmiş sekmesi altında Pipeline: Deprecated Groovy Libraries (workflow-cps-global-lib) eklentisini aratın ve ilk olarak devre dışı bırakın sonrasında yanındaki sil ikonuna tıklayıp Jenkins Safe Restart yapınız. Güvenli Restart sonrası Jenkins yeniden başlatıldığında ilgili bildirimin gittiğini göreceksiniz. Sonrasında genel Pipeline kontrolü ve test için bir Build işlemi yapabilirsiniz. Yukarıdaki uyarı başka eklentiler içinde verebilir ve Jenkins bildirim kısmında uyarı olarak gözükebilir. Aynı şekilde geliştirmesi ve desteği artık devam etmeyecek bu gibi eklentiler için aynı eklenti kaldırma işlemini Plugin Manager ekranından Installed Plugins kısmından kaldırabilirsiniz.
Bazı Plugin güncellemelerinde "This plugin is up for adoption! We are looking for new maintainers. Visit our Adopt a Plugin initiative for more information." mesajı gelir. Bu uyarı mesajı olan eklentiyi güncellemenizde bir zarar yoktur. Eklenti yeni geliştiriciler aradığı için ve geliştirme sürecine destek sağlamanız için yapılan bir bildirim mesajıdır. Sonuç olarak bu makalemde Jenkins'de üç ayrı konuya değinmiş bulunmaktayım. Başka makalelerimde DevOps ve Jenkins konularında edindiğim yeni bilgileri sizlerle paylaşmaya devam edeceğim.
Burak AVCI - Update: 06.02.2023
Hiç yorum yok:
Yorum Gönder
Makaleye Yorum ve Sorularınızı Bırakabilirsiniz.