Jenkins nedir? Sürekli Entegrasyon (CI) Aracı

İçindekiler:

Anonim

Jenkins nedir?

Jenkins , Sürekli Entegrasyon sürecini (ve yalnızca değil) otomatik bir şekilde gerçekleştirmeye yardımcı olan bir eylemler zincirini düzenleme yeteneğine sahip açık kaynaklı bir Sürekli Entegrasyon sunucusudur.

Jenkins ücretsizdir ve tamamen Java ile yazılmıştır. Jenkins, yaklaşık 300 bin kurulumu olan ve her geçen gün büyüyen, dünya çapında yaygın olarak kullanılan bir uygulamadır.

Sunucu tabanlı bir uygulamadır ve Apache Tomcat gibi bir web sunucusu gerektirir. Jenkins'in bu kadar popüler olmasının nedeni, bir projenin geliştirilmesi sırasında ortaya çıkan tekrarlanan görevleri izlemesidir. Ö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.

Jenkins kullanarak yazılım geliştirme süreçlerini hızlandırabilir, çünkü Jenkins derleme ve testi hızlı bir şekilde otomatikleştirebilir. Jenkins, yazılım geliştirme yaşam döngüsünün oluşturulması, test edilmesi, belgelenmesi, devreye alınması ve diğer aşamalarından yazılımın tüm geliştirme yaşam döngüsünü destekler.

Bu eğitimde öğreneceksiniz

  • Jenkins nedir?
  • Sürekli Entegrasyon nedir?
  • Jenkin Tarihi
  • Neden Jenkins ile Sürekli Entegrasyonu kullanmalı?
  • Sürekli Entegrasyon için gerçek dünya vaka çalışması
  • Jenkins kullanmanın avantajları
  • Jenkins kullanmanın dezavantajları

Sürekli Entegrasyon nedir?

Bir kod işleminden sonra Sürekli Entegrasyonda, yazılım anında oluşturulur ve test edilir. Birçok geliştiricinin olduğu büyük bir projede, gün içinde birçok kez taahhütler yapılır. Her kaydetme koduyla birlikte oluşturulur ve test edilir. Test geçilirse, derleme dağıtım için test edilir. Dağıtım başarılı olursa, kod üretime gönderilir. Bu teslim etme, oluşturma, test etme ve devreye alma sürekli bir süreçtir ve dolayısıyla sürekli entegrasyon / dağıtım adıdır.

Sürekli Entegrasyon Ardışık Düzeni, kodu veya kod değişikliklerini barındırmak , izlemek , derlemek ve test etmek için tasarlanmış bir dizi araçtan oluşan güçlü bir araçtır , örneğin:

  • Sürekli Entegrasyon Sunucusu (Jenkins, Bamboo, CruiseControl, TeamCity ve diğerleri)
  • Kaynak Kontrol Aracı (ör. 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 Tarihi

  • SUN Microsystems'de çalışan Java geliştiricisi Kohsuke Kawaguchi, kodu oluşturmaktan ve hataları tekrar tekrar düzeltmekten bıkmıştı. 2004'te, derleme ve test görevini otomatikleştiren Hudson adlı bir otomasyon sunucusu oluşturdu.
  • 2011 yılında, Sun Microsystems'e sahip olan Oracle, 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.
  • Hudson ve Jenkins bağımsız olarak çalışmaya devam etti. Ancak kısa bir süre içinde, Jenkins çok sayıda proje ve katkıda bulunmuştu, Hudson ise sadece 32 projeyle kaldı. Zamanla, Jenkins daha popüler hale geldi ve Hudson artık korunmuyor.

Neden Jenkins ile Sürekli Entegrasyonu kullanmalı?

Bazı insanlar, yazılımı geliştirmenin eski moda yolunun daha iyi bir yol olduğunu düşünebilir. Aşağıdaki örnekle Jenkins ile CI'nin avantajlarını anlayalım

Paylaşılan bir depo üzerinde çalışan yaklaşık 10 geliştirici olduğunu hayal edelim. Bazı geliştiriciler görevlerini 25 günde tamamlarken, diğerlerinin tamamlanması 30 gün sürer.

Jenkins'ten önce Jenkins'ten sonra
Tüm Geliştiriciler, kendilerine verilen kodlama görevlerini tamamladıktan sonra, kodlarını aynı anda işlerlerdi. Daha sonra Build test edilir ve dağıtılır. Kod işleme oluşturuldu ve test döngüsü çok seyrek oldu ve birkaç gün sonra tek bir oluşturma yapıldı. Kod oluşturulur ve Geliştirici kodu işlediği anda test edilir. Jenkin, gün içinde birçok kez kod oluşturacak ve test edecektir. Derleme başarılı olursa, Jenkins kaynağı test sunucusuna yerleştirecek ve dağıtım ekibini bilgilendirecektir. Derleme başarısız olursa, Jenkins hataları geliştirici ekibine bildirecektir.
Kod aynı anda oluşturulduğundan, bazı geliştiricilerin derlemelerini kontrol etmek için diğer geliştiricilerin kodlamayı bitirmesini beklemesi gerekir. Kod, herhangi bir Geliştirici taahhüdünden hemen sonra oluşturulur.
Birden çok işlem için hataları izole etmek, tespit etmek ve düzeltmek kolay bir iş değildir. Kod, tek bir geliştiricinin her taahhüdünden sonra oluşturulduğundan, yerleşik kodun başarısız olmasına kimin kodunun neden olduğunu tespit etmek kolaydır.
Kod oluşturma ve test süreci tamamen manueldir, bu nedenle birçok başarısızlık şansı vardır. Otomatik derleme ve test süreci, zamanlamadan tasarruf sağlar ve hataları 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ılar için daha kolay kullanılabilir. Kârı artırır.

Sürekli Entegrasyon için gerçek dünya vaka çalışması

Eminim hepiniz eski Nokia telefonundan haberdarsınız. Nokia, gece inşa adı verilen bir prosedür uygulardı. Gün içinde farklı geliştiricilerin birden çok taahhüdünden sonra, yazılım her gece oluşturuldu. Yazılım günde yalnızca bir kez oluşturulduğundan, hataları büyük bir kod tabanında izole etmek, tanımlamak ve düzeltmek büyük bir acıdır.

Daha sonra Sürekli Entegrasyon yaklaşımını benimsemişlerdir. Yazılım, geliştirici kod 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, Amazon EC2 gibi araçlarla entegrasyon için, Jenkins'inize ilgili eklentileri yüklemeniz gerekir.

Jenkins'te eklenti entegrasyonu

Jenkins kullanmanın avantajları

  • Jenkins, çok açık olan topluluk tarafından yönetiliyor. Her ay halka açık toplantılar yaparlar ve Jenkins projesinin geliştirilmesi için halktan girdi alırlar.
  • Şimdiye kadar yaklaşık 280 bilet kapandı ve proje her üç ayda bir kararlı sürüm yayınlıyor.
  • Teknoloji büyüdükçe, Jenkins de büyüyor. Şimdiye kadar Jenkins'in kendi eklenti veritabanında yayınlanan yaklaşık 320 eklentisi var. Eklentilerle, Jenkins daha da güçlü hale gelir ve zengin özelliklere sahiptir.
  • Jenkins ayrıca bulut tabanlı mimariyi de destekler, böylece Jenkins'i bulut tabanlı platformlarda dağıtabilirsiniz.
  • Jenkins'in popüler olmasının nedeni, bir geliştirici tarafından geliştiriciler için yaratılmış olmasıdır.

Jenkins kullanmanın dezavantajları

Jenkins çok güçlü bir araç olsa da kusurları da var.

  • Arayüzü modası geçmiş ve mevcut UI trendlerine kıyasla kullanıcı dostu değil.
  • Jenkins birçok geliştirici tarafından sevilse de, bunu sürdürmek o kadar kolay değildir çünkü Jenkins bir sunucu üzerinde çalışır ve sunucu yöneticisi olarak aktivitesini izlemek için bazı beceriler gerektirir.
  • Birçok kişinin Jenkins'i uygulamamasının nedenlerinden biri, Jenkins'i kurmanın ve yapılandırmanın zorluğudur.
  • Bazı küçük ayar değişiklikleri nedeniyle sürekli entegrasyonlar düzenli olarak bozulur. Sürekli entegrasyon duraklatılacak ve bu nedenle geliştiricinin biraz ilgilenmesi gerekiyor.

Sonuç:

  • Sürekli Entegrasyonda, bir kod işleminden sonra, yazılım anında oluşturulur ve test edilir
  • Jenkins, bir eylemler zincirini düzenleme yeteneğine sahip açık kaynaklı bir Sürekli Entegrasyon sunucusudur
  • Jenkins'ten önce, tüm Geliştiriciler atanmış kodlama görevlerini tamamladığında, kodlarını aynı anda işlerlerdi. Daha sonra Build test edilir ve dağıtılır.
  • Jenkins'ten sonra kod oluşturulur ve Geliştirici kodu işlediği anda test edilir. Jenkin, gün boyunca birçok kez kod oluşturacak ve 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.
  • Jenkins'in en büyük artıları, halka açık toplantılar düzenleyen ve Jenkins projelerinin geliştirilmesi için halktan girdi alan topluluk tarafından yönetiliyor olmasıdır.
  • Jenkin'in en büyük dezavantajı, arayüzünün eski olması ve mevcut UI trendlerine kıyasla kullanıcı dostu olmamasıdır.