Jenkins Nedir?

Reşit Demir
4 min readJan 6, 2021

--

Yazılım Geliştirme Şirketinde yaşadığımız proje süreçlerindeki uzunluk, testlerimizdeki sancılı süreci bir nebze olsun rahatlatmak amacıyla bir CI/CD aracı seçerek devam etmek istedim. Araç olarak Jenkins’ i seçtim. Jenkins, açık kaynak kodlu bir otomasyon sunucusu ve Java ile geliştirilmiş bir entegrasyon aracıdır. Jenkins yazılım geliştirme sürecinin parçalarını otomatikleştirmeye yardımcı oluyor. Jenkins yazılımı, geliştiricilerin bir kod tabanındaki kusurları hızlı bir şekilde bulmalarını, çözmelerini ve testlerini otomatikleştirmeyi sağlıyor. İlk olarak biraz Jenkins’den bahsedip sonra da projemde uygulamaya çalışacağım.

Jenkins

Jenkins Avantajları:
• Ücretsizdir, kolay kurulum.
• Topluluk desteği ile açık kaynak kodlu bir araçtır
• İşleri kolaylaştırmak için 1000+ eklentiye sahiptir. Aranan eklenti yoksa, oluşturularak toplulukla paylaşılabilir.
• Java ile geliştirildiği için tüm platformlarda çalışabilir.

Jenkins ile Continuous Integration (Sürekli Entegrasyon)
• İlk olarak, bir geliştirici yaptığı değişikliği git deposuna gönderirir. Bu arada, Jenkins değişiklikleri algılamak için düzenli olarak git deposunu kontrol eder.
• Jenkins değişiklikleri algıladıktan sonra değişiklikleri çekecek ve build sürecini başlatacak.
• İşlem başarısız olursa değişikliği yapan geliştirici bilgilendirilecek.
• Eğer bir sorun olmamışsa, o zaman Jenkins gerekli testleri başlatır.
• Test edildikten sonra, Jenkins bir geri bildirim üretir ve daha sonra test sonuçları hakkında geliştiricileri bilgilendirir.
• Bu süreç her değişiklik için tekrarlanır.

Jenkins’den önce
Tüm kaynak kod oluşturulur ve daha sonra test edilirdi. Oluşturulma ve test başarısızlığı durumunda hataları bulma ve düzeltme zor ve uzun bir süreçti. Geliştiriciler test sonuçlarını beklemek zorundaydı. Tüm süreç manueldi.

Jenkins’den sonra
Kaynak kodda yapılan her değişiklik build edilmiş ve test edilmiştir. Bu nedenle bir sorun olduğunda ilgili geliştirici kendi kodunu kontrol eder. Geliştiriciler, yapılan her değişikliğin test sonucunu bilirler. Sadece kodu değiştirmeniz yeterli, Jenkins tüm süreci üstlenir. Geliştirme-Development yapan herkesin kullanabileceği bir yapı Sorunlara daha hızlı çözümler

Jenkins’in Mimarisi :
Jenkins’teki farklı öğeler arasındaki etkileşimi özetleyen adımlar:
• Projemi Gite attıktan sonra derleme sunucusu, kodla bir derleme gerçekleştirir ve derleme işlemi başarılı olursa bir yürütülebilir dosya oluşturulur. Bir derleme hatası durumunda, geliştiriciye günlükler ve diğer yapı yapıları oluşturmak için bir bağlantı içeren otomatik bir e-posta gönderilir.
• Başarılı bir derleme durumunda, yerleşik uygulama (veya yürütülebilir) test sunucusuna dağıtılır. Bu adım, yeni oluşturulan yürütülebilir dosyanın bir dizi otomatik testten geçtiği sürekli testlerin gerçekleştirilmesine yardımcı olur. Değişikliklerin işlevsellikte herhangi bir kesintiye neden olması durumunda geliştiriciler uyarılır.
• Teslim edilen kodla ilgili herhangi bir derleme, entegrasyon ve test sorunu yoksa değişiklikler ve test edilen uygulama otomatik olarak Üretim / Üretim sunucusuna dağıtılır .

Jenkins Dağıtık Mimari

Örnek bir Jenkins yapısı yukarıda gösterildiği gibidir. Bu tek Jenkins sunucusu, aşağıdaki gibi gereksinimleri karşılayacak yeterliliğe sahip değildi. • Bazı durumlarda, yapılarınızı test etmek için birkaç farklı ortama ihtiyacınız olabilir. Bu ihtiyacı tek Jenkins sunucusu ile karşılayamazsınız.
• Çok büyük projeler her commit için build edildiğinde tek sunucu tüm yükü idare edemez. Yukarıdaki belirtilen ihtiyaçları karşılamak için Jenkins dağıtık mimari ortaya çıkmıştır.

Jenkins Pipeline Oluşturmak

İlk olarak Jenkins’i resmi sitesinden indirmek için “https://www.jenkins.io/download/” adresine gittim ve yüklemelerimi yaptım. Projem için windows kullandım, platforma uygun işletim sistemi de seçilebilir. Kurulum bittikten sonra localhost:8080 portu üzerinden Jenkins yapılandırmalarını yaptım. Sonraki adımda yeni user oluşturulabilir veya admin olarak devam edilebiliriz. Bu işlemlerin ardından Jenkins ana sayfasından new item diyerek yeni bir Job Oluşturma için ilk olarak ana sayfada New Item‘e tıkladım.

Ben kendi git depomdan proje çekeceğim için Jenkins’ de desteklediği ve kullanım kolaylığı git ‘in avantajlarından da yararlanmak için projemizi git (versiyon kontrol sistemi) e yükledim. Sonrasında olarak proje ismi verdim herhangi bir isim verebiliriz ve freestyle project seçtim, ardından ok’a bastım.(Git Hesabım : https://github.com/resitdemir )

Açıklama olarak projemi betimleyici şeyler yazdıktan sonra testin çalışacağı node belirledim. Jenkins sonraki aşamada benden gitteki projemin adresini istedi. Credentials : add‘a tıklayarak git kullanıcı adı ve şifre girdim. Testi işlemlerini otomatik olarak istenen zamanda çalıştırmak için istenilen parametreyi seçebiliriz. Sonrasında build adımı eklenir. Ben Windows için ayarladım. Farklı işletim sistemleri için de yapabiliriz.

Testleri çalıştırmak için mvn test komutunu kullanabiliriz. Eğer istersek e-mail konfigürasyonu da yapabiliriz. Ben Editable e-mail notification seçtim. Receipt list’e mail atılacak adresler girilir. Content type ‘html’ seçildikten sonra subject ve content girilir. Attachments kısmında node’daki build sonrası oluşan report’un yolu verilir. Trigers eklenir. Always seçerseniz mail gönderilecek adresler (recipient list) seçildikten sonra her build sonrası mail gönderilir.

Özet olarak artık işlemlerimizi tamamladığımıza göre testlerimizi manuel olarak da gerçekleştirebiliriz. Son olarak şunları eklemek istiyorum özet maiyetinde, Jenkins CI/CD entegrasyonu için gerçekleştirdiğimiz işlemlerin, sadece birkaç yazılım aracını kullanmaktan ibaret olmadığını tekrar belirtmek istiyorum. CI/CD, DevOps sürecinin yalnızca bir parçasını oluşturmaktadır. Temel amaç , sistem geliştirmede yaşam döngüsünü kısaltmayı ve yüksek yazılım kalitesiyle sürekli teslimat sağlamayı amaçlamaktır.

--

--

No responses yet