Nedir? JenkinsSürekli Entegrasyon (CI) Aracını Neden Kullanmalıyız?

⚡ Akıllı Özet

Jenkins Açık kaynaklı otomasyon sunucusu, geliştirici her kod değişikliği yaptığında kodu derler ve test eder; böylece Sürekli Entegrasyonu gece yapılan bir iş olmaktan çıkarıp, tüm çalışma günü boyunca sürekli çalışan bir sürece dönüştürür.

  • 🔘 Amaç: Jenkins Her commit işleminden sonra derleme, test ve dağıtım adımlarını otomatik olarak düzenler.
  • ☑️ Menşei: 2011 yılında Hudson'dan ayrılarak oluşturulmuş ve şu anda en yaygın olarak kullanılan CI sunucusudur.
  • Boru hatları: A JenkinsKodla birlikte saklanan dosya, derleme işleminin her aşamasını tanımlar.
  • 🧪 Eklentiler: İki binden fazla eklenti bağlanıyor. Jenkins Git, Maven, Docker ve Kubernetes'e.
  • Değiş tokuş: Kendi sunucunuzda barındırmak tam kontrol sağlar ancak sunucu yönetimi işini de beraberinde getirir.

Jenkins Sürekli entegrasyon sunucusuna genel bakış

Nedir? Jenkins?

Jenkins ile yazılmış açık kaynaklı bir Sürekli Entegrasyon sunucusudur. Java Sürekli Entegrasyon sürecini otomatik bir şekilde gerçekleştirmek için bir dizi eylemi düzenlemek. Jenkins Yazılım geliştirme yaşam döngüsünün tüm aşamalarını destekler: yazılımın derlenmesi, test edilmesi, belgelendirilmesi, dağıtılması ve diğer aşamalar.

Jenkins Dünya çapında yaygın olarak kullanılan, yüz binlerce kurulumu bulunan ve her geçen gün büyüyen bir uygulamadır. Kullanarak JenkinsYazılım şirketleri, yazılım geliştirme süreçlerini hızlandırabilirler, çünkü Jenkins Derleme ve test işlemlerini hızlı bir şekilde otomatikleştirebilir.

Bu, sunucu tabanlı bir uygulamadır ve Apache Tomcat gibi bir web sunucusuna ihtiyaç duyar. Bunun nedeni şudur: Jenkins Yazılımların bu kadar popüler olmasının nedenlerinden biri, bir projenin geliştirilmesi sırasında ortaya çıkan tekrarlanan görevlerin izlenmesidir. Örneğin, ekibiniz bir proje geliştiriyorsa...ping bir proje, Jenkins Projenizin derlemelerini sürekli olarak test edeceğiz ve geliştirme sürecinizin erken aşamalarında hataları size göstereceğiz.

Not: SAVAŞI konuşlandırmak Apache Tomcat hala çalışıyor, ancak mevcut sürümler içine yerleştirilmiş bir servlet konteyneri içeriyor, bu nedenle Jenkins Normalde kendi kendine çalışır. 2.555.x LTS serisi gerektirir. Java 21

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.

Nasıl Jenkins çalışır?

Jenkins Bu, sunucu tabanlı bir uygulamadır ve çeşitli platformlarda çalışabilmesi için Apache Tomcat gibi bir web sunucusuna ihtiyaç duyar. WindowsLinux macOSUnix vb. kullanmak için JenkinsBunun için, bir dizi adımdan oluşan işlem hatları oluşturmanız gerekir. Jenkins Sunucu alacak. Jenkins Sürekli Entegrasyon Hattı (CIT), kod 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 Kod Kontrol Aracı (örneğin, CVS, SVN, GIT, Mercurial, Perforce, ClearCase ve diğerleri)
  • Derleme aracı (Make, ANT, Maven, Ivy, Gradle, ve diğerleri)
  • Otomasyon test çerçevesi (Selenium, Appium, TestComplete, UFT, ve diğerleri)

Mevcut sürümlerde bu adımlar şurada yer almaktadır: JenkinsKodun yanına kaydedilen dosya. Jenkins Denetleyici bu dosyayı okur ve her aşamayı, işi fiilen yürüten makine olan bir aracıya iletir.

Jenkins Tarihçe

  • 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 olan kişi, Hudson açık kaynak topluluğuyla bir anlaşmazlık yaşadı, bu yüzden Hudson'ı çatallayıp adını değiştirdi. Jenkins.
  • Hem Hudson hem de Jenkins Bağımsız olarak faaliyetlerine devam etti. Ancak kısa bir süre içinde, Jenkins Birçok proje ve katkıda bulunan kişi edinirken, Hudson sadece 32 projeyle yetindi. Zamanla, Jenkins Daha popüler hale geldi ve Hudson'ın bakımı artık yapılmıyor.

Sürekli Entegrasyon neden kullanılır? Jenkins?

Bazı insanlar eski usul kalkınma yönteminin...ping Yazılım daha iyi bir yöntemdir. CI'ın avantajlarını birlikte anlayalım. Jenkins aşağıdaki örnekle

Diyelim ki, ortak bir depoda çalışan yaklaşık 10 geliştirici var. Bazı geliştiriciler görevlerini 25 günde tamamlarken, diğerleri 30 günde tamamlıyor.

önce Jenkins Sonra Jenkins

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.

Code Değişiklikler yapıldı ve test döngüsü çok seyrek gerçekleşti; tek bir derleme işlemi günler sonra yapıldı.

Geliştirici kodu gönderdiği anda kod derlenir ve test edilir. Jenkins Gün içinde birçok kez kod derleyip test edecek.

Eğer derleme başarılı olursa, o zaman Jenkins Kaynak kodu test sunucusuna dağıtacak ve dağıtım ekibini bilgilendirecektir.

Derleme başarısız olursa, o zaman Jenkins Hata durumlarını geliştirici ekibe bildireceğiz.

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 commit'inden sonra yeniden derlendiği için, derleme hatasına hangi kodun neden olduğunu tespit etmek kolaydır.
Code inşa et 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.

LaterAşağıda gösterildiği gibi Sürekli Entegrasyon yaklaşımını benimsediler. Yazılım, geliştirici kodu gönderir göndermez derlenip test edildi. Herhangi bir hata tespit edilirse, ilgili geliştirici hatayı hızla düzeltebilir.

Nokia'nın gece derlemesi, commit tetiklemeli Sürekli Entegrasyon döngüsüyle değiştirildi.

Jenkins eklentiler

Varsayılan olarak, Jenkins Sınırlı sayıda özellik ile birlikte gelir. Eğer entegre etmek istiyorsanız... Jenkins Git gibi sürüm kontrol araçlarıyla kurulum yapıyorsanız, Git ile ilgili eklentileri yüklemeniz gerekir. Aslında, Maven gibi araçlarla entegrasyon için, Amazon EC2 için ilgili eklentileri yüklemeniz gerekiyor. JenkinsAşağıdaki eklenti yöneticisinin gösterdiği gibi.

Jenkins Eklenti yöneticisi, yüklemeye hazır mevcut eklentileri listeliyor.

Kullanmanın avantajları Jenkins

  • Jenkins Bu proje, oldukça açık bir yapıya sahip olan topluluk tarafından yönetiliyor. Her ay halka açık toplantılar düzenleyerek projenin geliştirilmesi için halktan görüş alıyorlar. Jenkins projesi.
  • Proje, öngörülebilir bir yayın ritmini koruyor: Her on iki haftada bir yeni bir Uzun Vadeli Destek temel sürümü seçiliyor ve ardından planlı yama sürümleri yayınlanıyor.
  • Teknoloji geliştikçe, gelişim de artıyor. JenkinsEklenti veritabanında şu anda iki binden fazla eklenti bulunuyor. Eklentilerle birlikte, Jenkins Daha da güçlü ve özellik bakımından zengin hale gelir.
  • Jenkins Bu araç, bulut tabanlı mimariyi de desteklediği için dağıtım yapmanıza olanak tanır. Jenkins bulut tabanlı platformlarda.
  • Nedeni Jenkins Popüler olmasının sebebi, geliştiriciler için geliştiriciler tarafından yaratılmış olmasıdır.

kullanmanın dezavantajları Jenkins

Gerçi Jenkins Çok güçlü bir araç, ancak kusurları da var.

  • Arayüzü, güncel kullanıcı arayüzü trendleriyle karşılaştırıldığında eski ve kullanıcı dostu değil; ancak son sürümler ekran tasarımının büyük bir bölümünü modernize etti.
  • Gerçi Jenkins Birçok geliştirici tarafından seviliyor, ancak bakımı o kadar kolay değil çünkü Jenkins Bir sunucuda çalışır ve faaliyetlerini izlemek için sunucu yöneticisi olarak bazı beceriler gerektirir.
  • Birçok insanın bunu uygulamamasının nedenlerinden biri de budur. Jenkins Kurulum ve yapılandırmasının zorluğundan kaynaklanmaktadır. Jenkins.
  • 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.
  • Birçok eklentinin farklı zamanlarda güncellenmesi durumunda eklenti bağımlılık çakışmaları ortaya çıkar; bu nedenle eklenti güncellemeleri için ayrı bir bakım penceresi gereklidir.

Eğer bu avantaj ve dezavantajlar ekibiniz için önemliyse, şunları karşılaştırın: En iyi Jenkins Alternatif araçlar ve daha geniş liste en iyi sürekli entegrasyon araçları Kendi sunucunuzda barındırmaya karar vermeden önce.

SSS

Evet. Jenkins MIT lisansı altında yayınlanmıştır ve indirmek veya çalıştırmak ücretsizdir. Masraf dolaylıdır: kendi kendine barındırılan bir kontrol cihazının sağlıklı kalması için gereken sunucu, depolama ve yönetici zamanı.

2.555.x Uzun Süreli Destek serisi şu temeller üzerine kuruludur: Java 21, ile Java 25 kişi de destekledi; Java 17 numaralı sürüm 2.555.1'de kaldırıldı. Yükseltmeden önce gereksinimleri kontrol edin, çünkü eski bir JDK denetleyicinin başlatılmasını engelliyor.

A JenkinsDosya, uygulama koduyla birlikte kaydedilen ve işlem hattı tanımını içeren bir metin dosyasıdır. Bildirimsel veya betiksel sözdizimiyle yazılabilir veping Sürüm kontrolüne dahil edilmesi, derleme işleminin diğer değişiklikler gibi incelenebilir olmasını sağlar.

Kontrolör Jenkins İşleri planlayan ve web arayüzünü sunan bir kurulum. Ajan, kendisine verilen derleme adımlarını yürüten, yükü dağıtan ve birden fazla işletim sisteminde derleme yapılmasına olanak tanıyan ayrı bir makinedir.

Makine öğrenimi modelleri, tekrarlanan hataları kümelendirir, gerçek gerilemeleri istikrarsız testlerden ayırır ve en muhtemel sorumlu olan commit'i işaret eder. Bu da uzun bir konsol kaydını, nöbetçi geliştirici için kısa ve sıralı bir listeye dönüştürür.

GitHub Yardımcı Pilotu Bir yorumdan yola çıkarak taslak halindeki bildirimsel aşamaları ve ortak adımları oluşturur. RevHer öneriyi inceleyin, çünkü sıklıkla kontrol cihazınızda kurulu olmayan eklenti adım adları uyduruyor.

Barındırılan hizmetler sunucu bakımı gerektirmez ve daha hızlı başlar. Jenkins Donanım, eklentiler ve veri konumu üzerinde tam kontrol sağlar. Alışılmadık derleme ortamlarına sahip ekipler genellikle bunu korur. JenkinsKüçük projeler genellikle dışarıdan bir koordinatör tercih eder.

Evet. Derleme adımları çağırabilir. Maven, Gradle veya Ant ve JUnit, TestNG or Selenium Sonuçlar iş sayfasına geri yayınlanır, bu nedenle başarısız olan bir test paketi tüm derlemeyi kırmızı olarak işaretler.

Bu yazıyı şu şekilde özetleyin: