Jenkins nedir? Neden Sürekli Entegrasyon (CI) Aracını Kullanmalı?
Jenkins nedir?
Jenkins ile yazılmış açık kaynaklı bir Sürekli Entegrasyon sunucusudur. Java Sürekli Entegrasyon sürecini otomatikleştirilmiş bir şekilde gerçekleştirmek için bir eylem zincirini düzenlemek için. Jenkins, yazılımın oluşturulması, test edilmesi, belgelenmesi, dağıtılması ve yazılım geliştirme yaşam döngüsünün diğer aşamalarına kadar yazılımın tüm geliştirme yaşam döngüsünü destekler.
Jenkins, dünya çapında yaygın olarak kullanılan ve yaklaşık 300 bin kuruluma sahip ve her geçen gün büyüyen bir uygulamadır. Jenkins'i kullanarak, yazılım şirketleri yazılım geliştirme süreçlerini hızlandırabilir, çünkü Jenkins derleme ve testi hızlı bir oranda otomatikleştirebilir.
Sunucu tabanlı bir uygulamadır ve Apache Tomcat gibi bir web sunucusu gerektirir. Jenkins yazılımının bu kadar popüler olmasının nedeni, bir projenin geliştirilmesi sırasında ortaya çıkan tekrarlanan görevlerin izlenmesidir. Örneğin, ekibiniz bir proje geliştiriyorsa Jenkins, proje yapılarınızı sürekli olarak test edecek ve geliştirmenizin ilk aşamalarında size hataları gösterecektir.
Sürekli Entegrasyon Nedir?
Sürekli Entegrasyon birden fazla geliştiricinin kod değişikliklerini tek bir projede birçok kez entegre etme işlemidir. Yazılım, kod işlemeden hemen sonra test edilir. Her kod taahhüdüyle kod oluşturulur ve test edilir. Test başarılı olursa, yapı dağıtım için test edilir. Dağıtım başarılı olursa kod üretime aktarılır.
Bu taahhüt etme, oluşturma, test etme ve dağıtma sürekli bir süreçtir ve dolayısıyla sürekli entegrasyon/dağıtım adıdır.
Jenkins nasıl çalışır?
Jenkins sunucu tabanlı bir uygulamadır ve Apache Tomcat gibi bir web sunucusunun çeşitli platformlarda çalışmasını gerektirir. WindowsLinux macOS, Unix, vb. Jenkins'i kullanmak için, bir Jenkins sunucusunun gerçekleştireceği bir dizi adım olan işlem hatları oluşturmanız gerekir. Jenkins Sürekli Entegrasyon Boru Hattı, aşağıdakileri gerçekleştirmek için tasarlanmış bir dizi araçtan oluşan güçlü bir araçtır: ev sahibi, izlemek, derlemek ve test kod veya kod değişiklikleri, örneğin:
- Sürekli Entegrasyon Sunucusu (Jenkins, Bamboo, CruiseControl, TeamCity, ve diğerleri)
- Kaynak Kontrol Aracı (örneğin CVS, SVN, GIT, Mercurial, Perforce, ClearCase ve diğerleri)
- Oluşturma aracı (Make, ANT, Maven, Ivy, Gradle, ve diğerleri)
- Otomasyon test çerçevesi (Selenium, Appium, TestComplete, UFT ve diğerleri)
Jenkin'in Tarihi
- Kohsuke Kawaguchi, Java SUN Microsystems'te çalışan geliştirici, kodu oluşturmaktan ve hataları tekrar tekrar düzeltmekten yorulmuştu. 2004 yılında, oluşturma ve test görevlerini otomatikleştiren Hudson adında bir otomasyon sunucusu oluşturdu.
- 2011 olarak, Oracle Sun Microsystems'in sahibi Hudson açık kaynak topluluğuyla bir anlaşmazlık yaşadı, bu yüzden Hudson'ı çatalladılar ve onu Jenkins olarak yeniden adlandırdılar.
- Hem Hudson hem de Jenkins bağımsız olarak çalışmaya devam etti. Ancak kısa sürede Jenkins çok sayıda proje ve katkıda bulunan kişi edinirken, Hudson yalnızca 32 projeyle kaldı. Zamanla Jenkins daha popüler hale geldi ve Hudson artık korunmuyor.
Neden Jenkins ile Sürekli Entegrasyon kullanılmalı?
Bazı insanlar yazılımı geliştirmenin eski moda yolunun daha iyi bir yol olduğunu düşünebilir. Jenkins ile CI'ın avantajlarını aşağıdaki örnekle anlayalım
Bir proje üzerinde çalışan yaklaşık 10 geliştiricinin olduğunu hayal edelim. paylaşılan depo. Bazı geliştiriciler görevlerini 25 günde tamamlarken bazıları 30 günde tamamlıyor.
Jenkins'ten önce | Jenkins'ten sonra |
---|---|
Tüm Geliştiriciler kendilerine atanan kodlama görevlerini tamamladıktan sonra kodlarını aynı anda işlemeye başlarlardı. Later, Derleme test edilir ve dağıtılır.
Kod taahhüdü oluşturuldu ve test döngüsü çok nadirdi ve günler sonra tek bir derleme yapıldı. |
Geliştirici kodu kabul ettiği anda kod oluşturulur ve test edilir. Jenkin gün içinde birçok kez kod oluşturup test edecek
Derleme başarılı olursa Jenkins, kaynağı test sunucusuna dağıtacak ve dağıtım ekibini bilgilendirecektir. Derleme başarısız olursa Jenkins, hataları geliştirici ekibine bildirecektir. |
Kodun tamamı bir kerede oluşturulduğundan, bazı geliştiricilerin yapılarını kontrol etmek için diğer geliştiricilerin kodlamayı bitirmesini beklemesi gerekebilir. | Kod, herhangi bir Geliştiricinin taahhüt etmesinden hemen sonra oluşturulur. |
Birden fazla işleme ilişkin hataları yalıtmak, tespit etmek ve düzeltmek kolay bir iş değildir. | Kod, tek bir geliştiricinin her işlemi sonrasında oluşturulduğundan, kimin kodunun derlemenin başarısız olmasına neden olduğunu tespit etmek kolaydır |
Kod oluşturma ve test süreci tamamen manueldir, dolayısıyla başarısızlık olasılığı yüksektir. | Otomatik oluşturma ve test süreci, zamanlamayı azaltır ve kusurları azaltır. |
Kod, tüm hatalar düzeltilip test edildikten sonra dağıtılır. | Kod, her başarılı derleme ve testten sonra dağıtılır. |
Geliştirme Döngüsü yavaş | Geliştirme döngüsü hızlıdır. Yeni özellikler kullanıcılara daha kolay sunulur. Kârı artırır. |
Sürekli Entegrasyonun gerçek dünyadaki örnek olay incelemesi
Eminim hepiniz eski Nokia telefonundan haberdarsınızdır. Nokia, gecelik oluşturma adı verilen bir prosedürü uygulardı. Gün boyunca farklı geliştiricilerin çok sayıda taahhütünden sonra yazılım her gece oluşturuldu. Yazılım günde yalnızca bir kez oluşturulduğundan, geniş bir kod tabanındaki hataları izole etmek, tanımlamak ve düzeltmek büyük bir zahmettir.
LaterSürekli Entegrasyon yaklaşımını benimsediler. Yazılım, geliştirici kodu taahhüt eder etmez oluşturuldu ve test edildi. Herhangi bir hata tespit edilirse ilgili geliştirici hatayı hızlı bir şekilde düzeltebilir.
Jenkins Eklentileri
Varsayılan olarak Jenkins sınırlı sayıda özellikle birlikte gelir. Jenkins kurulumunuzu Git gibi sürüm kontrol araçlarıyla entegre etmek istiyorsanız Git ile ilgili eklentileri yüklemeniz gerekir. Aslında Maven gibi araçlarla entegrasyon için Amazon EC2, ilgili eklentileri Jenkins'inize yüklemeniz gerekir.
Jenkins'i kullanmanın avantajları
- Jenkins oldukça açık bir topluluk tarafından yönetiliyor. Her ay halka açık toplantılar düzenliyorlar ve Jenkins projesinin geliştirilmesi için halktan görüşler alıyorlar.
- Şu ana kadar yaklaşık 280 bilet kapatıldı ve proje her üç ayda bir kararlı sürüm yayınlıyor.
- Teknoloji geliştikçe Jenkins de büyüyor. Şu ana kadar Jenkins'in eklenti veritabanında yayınlanmış yaklaşık 320 eklentisi var. Eklentilerle Jenkins daha da güçlü ve zengin özelliklere sahip hale geliyor.
- Jenkins aracı bulut tabanlı mimariyi de desteklediğinden Jenkins'i bulut tabanlı platformlarda dağıtabilirsiniz.
- Jenkins'in popüler olmasının nedeni bir geliştirici tarafından geliştiriciler için oluşturulmuş olmasıdır.
Jenkins kullanmanın dezavantajları
Jenkins çok güçlü bir araç olmasına rağmen kusurları var.
- Arayüzü güncel değil ve mevcut kullanıcı arayüzü trendleriyle karşılaştırıldığında kullanıcı dostu değil.
- Jenkins birçok geliştirici tarafından sevilse de onu korumak o kadar kolay değil çünkü Jenkins bir sunucu üzerinde çalışıyor ve sunucu yöneticisi olarak etkinliğini izlemek için bazı beceriler gerektiriyor.
- Pek çok kişinin Jenkins'i uygulamamasının nedenlerinden biri, Jenkins'in kurulumu ve yapılandırılmasındaki zorluktur.
- Bazı küçük ayar değişiklikleri nedeniyle sürekli entegrasyonlar düzenli olarak kesintiye uğrar. Sürekli entegrasyon duraklatılacak ve bu nedenle geliştiricilerin biraz dikkat etmesi gerekiyor.
Sonuç
- Sürekli Entegrasyonda, kod işleme sonrasında yazılım hemen oluşturulur ve test edilir
- Jenkins, bir yazılım projesinde Sürekli Entegrasyon için bir eylem zincirini düzenlemek için kullanıldı
- Jenkins'ten önce, tüm Geliştiriciler kendilerine atanan kodlama görevlerini tamamladığında, kodlarını aynı anda işlerlerdi. Later, Derleme test edilir ve dağıtılır.
- Jenkins'ten sonra kod oluşturulur ve Geliştirici kodu taahhüt eder etmez test edilir. Jenkin gün içinde birçok kez kod oluşturup test edecek
- Varsayılan olarak Jenkins sınırlı sayıda özellikle birlikte gelir. Jenkins kurulumunuzu Git gibi sürüm kontrol araçlarıyla entegre etmek istiyorsanız Git ile ilgili eklentileri yüklemeniz gerekir. Ayrıca kontrol edin En iyi Jenkins Alternatif araçları
- Jenkins'in en büyük artısı, halka açık toplantılar düzenleyen ve Jenkins projelerinin geliştirilmesi için halktan girdi alan topluluk tarafından yönetilmesidir.
- Jenkins'in en büyük dezavantajı, arayüzünün güncel olmaması ve mevcut kullanıcı arayüzü trendleriyle karşılaştırıldığında kullanıcı dostu olmamasıdır. Daha modern bir kullanıcı deneyimi sunabilecek diğer seçenekleri düşünüyorsanız, aşağıdaki seçeneklerden bazılarını keşfetmek isteyebilirsiniz: en iyi sürekli entegrasyon araçları kullanılabilir.