İbrahim KADIKIRAN tarafından yazılmıştır.
Jenkins, ardışık düzenleri kullanarak hemen hemen her dil ve kaynak kodu havuzu kombinasyonu için sürekli bir entegrasyon ortamı kurmanın yanı sıra rutin görevlerini otomatikleştirmenin basit bir yolunu sunar. Tüm oluşturma, test ve dağıtım araçları zincirinizi kolayca kendiniz oluşturabileceğinizden daha hızlı ve daha sağlam bir şekilde entegre etmenizi sağlar.
Continuous Integration(CI): CI kelime anlamı olarak sürekli entegrasyon anlamına gelmektedir. Aslında buradan bile bir anlam çıkıyor. CI, kodun Git gibi versiyon kontrol sistemlerinden sürekli değişiklik olup olmadığını kontrol edip en küçük değişiklileri bile entegre etme anlamına gelmektedir.
CI’ın hedefi, uygulamayı Git reposundan alıp, paketleyip, test edilecek ortama kurulumunu otomatize etme sürecidir.
CI sürecinde kod bir takım testlerden geçer. Testler başarılı bir şekilde sonuçlanır ve tüm sistem çalışır haldeyse deploy işlemlerini başlatır. Eğer değişiklikler sistemde kırılmalara neden olmuşsa bu durumdan programcıları haberdar eder.
Continuous Deployment(CD): CD ise CI’dan başarılı bir şekilde geçen sistemin ilgili yerlere dağıtımı ile ilgilenir. Yani CI süresince kod derlendi, bazı testlerden geçti ve CD süreci ile dağıtımına başlandı.
Şimdi Jenkins’in neler yaptığına bir daha bakalım. Jenkins, ilgili git reposunu belirli aralıklarla kontrol eder. Değişiklikleri kendi reposuna alır ve derler. Daha sonra sizin belirlediğiniz bir dizi testlerden geçer. Sonrasında istediğiniz yere bu yeni versiyonu deploy eder.
Ayrıca eğer projemiz birçok insanın katıldığı bir projeyse ve sürekli bir değişim içerisinde ise Git işlemleriyle uğraşıyoruz; kim commit etti, neyi commit etti, ne değiştirmemiz gerekiyor derken tüm değişikleri toplayıp düzenleyip tekrar build edip deploy ediyoruz. Yani demem o ki aslında manuel yaptığımız bir çok işlem gereksiz durumda ve bize zaman, maliyet ve işgücü açısından zararlı. Tam bu noktada yardımımıza Continuous Integration kavramı ve akabinde Jenkins çıkıyor.
jenkins-nedir
Jenkins Kavramları
Job: Bir jenkins projesidir. Otomatize etmek istediğimiz işleri burada belirleriz. Örneğin, job config üzerinden şu repository’i çek, şu şartlarda build et, şu testleri çalıştır ve belirlenen kişilere mail at gibi işlemleri burada belirleriz.
Node: job’un üzerinde çalıştığı sunucuyu ifade eder. Testleri başka bir bilgisayarda koşmak istediğimizde node oluşturur ve bağlantı için gerekli şartları gerçekleştirdikten sonra node’da testlerimizi koşabiliriz.
Plugin (eklenti): Jenkins saf haliyle yüklenir, ihtiyacımıza göre plugin yükler ve bunları kullanılırız. Örneğin, Job çalıştıktan sonra mail atması için “Email Extension” eklentisini yüklemeli ve post-build adımında kullanmalıyız.
Pipeline: işlerin ardışık bir sırada yapılması, bir işlemin çıktısının sonraki gelen işlemin girdisi olması anlamına gelir. Ör: Bir test adımının başarısız olması durumunda diğer bir testin hiç başlamaması gibi.
Geliştiriciler neden Jenkins kullanmalı
Jenkins kullanımı mülakat soruları içerisinde giriş sorularından biri olan bu soruda potansiyel işvereniniz, Jenkins’in en önemli özelliklerini bilip bilmediğinizi ölçmek ister. Cevap oldukça öznel olsa da şu örneklerden faydalanabilirsiniz
1- Hataları erkenden kolayca fark edebilme
2- Otomatik test işlemi
3- Sürekli entegrasyon
Jenkins Nasıl Çalışır
Jenkins, bir WAR arşivi ve ana işletim sistemleri için yükleyici paketleri, bir Homebrew paketi, Docker görüntüsü ve kaynak kodu olarak dağıtılır. Kaynak kodu, birkaç Groovy, Ruby ve Antlr dosyasıyla çoğunlukla Java’dır.
Jenkins WAR’ı bağımsız olarak veya Tomcat gibi bir Java uygulama sunucusunda sunucu uygulaması olarak çalıştırabilirsiniz. Her iki durumda da, bir web kullanıcı arayüzü üretir ve REST API’sine yapılan çağrıları kabul eder.
Jenkins’i ilk kez çalıştırdığınızda, kurulumun kilidini açmak için ilk web sayfasına yapıştırabileceğiniz uzun bir rastgele parolaya sahip bir yönetici kullanıcı oluşturur.
Jenkins’in Avantajları
Jenkins, birçok topluluktan destek alan açık kaynak kodlu bir araç.
Kurulumu basit ve anlaşılır.
Birçok ihtiyaca yönelik 1000’den fazla eklentisi mevcut.
Ayrıca mevcut olmayan Jenkins eklentilerini de oluşturmak kolay.
Java’da yazılmış olması itibari ile neredeyse tüm platformlarda çalışabilir
Jenkins kurumu
https://www.jenkins.io/download/ bu adresten sistemimize uygun olan Jenkins’i indiriyoruz.
İndirme bittikten sonra http://localhost:8080/ ‘e bağlandığımızda Jenkins’in kurulumuna başlayacağımız ekran gelecektir
Unlock Jenkins
Gösterilen adrese gidip oradan şifreyi kopyayip buraya yapıştırıyoruz.
Customize Jenkins
Burada ise Jenkins bize önerdiği eklentileri kurabiliriz yada herhangi bir eklentiyi kendimiz mi kurmak istediğimi seçiyoruz. İkiniciyi seçip devam ediyorum.
kurulum 3
İşimize yarıyacak olan eklentileri buradan seçtikten sonra install butonuna tıklayabiliriz. Ve eklentileri kurduktan sonra karşımıza Admin kullanıcısını tanımlama ekranı çıkacaktır.
Admin-User
Buraları kendimize göre doldurup save and continue butonuna tıklamamız yeterli. ve bize yönetim paneli ile ilgili url ayarını yapmamız gereken sayfaya yönlendirecektir.
kurulum 5
Bu işlemleri de yaptıktan sonra Jenkins kurulumu tamamlanmış oluyor.
Ready
Karşınız da Jenkins yönetim paneli
Jenkinsa Hoşgeldiniz
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ı ve 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.
Peki Jenkins’ten başka CI toolu var mı? Aşağıda diğer CI toolarını da görebilirsiniz fakat şuan en popüler olanı Jenkins.
⦁ Jenkins
⦁ Bamboo
⦁ Travis CI
⦁ Gitlab CI
⦁ TeamCity
Jenkins Nedir?
Jenkins, ardışık düzenleri kullanarak hemen hemen her dil ve kaynak kodu havuzu kombinasyonu için sürekli bir entegrasyon ortamı kurmanın yanı sıra rutin görevlerini otomatikleştirmenin basit bir yolunu sunar. Tüm oluşturma, test ve dağıtım araçları zincirinizi kolayca kendiniz oluşturabileceğinizden daha hızlı ve daha sağlam bir şekilde entegre etmenizi sağlar.
Continuous Integration(CI): CI kelime anlamı olarak sürekli entegrasyon anlamına gelmektedir. Aslında buradan bile bir anlam çıkıyor. CI, kodun Git gibi versiyon kontrol sistemlerinden sürekli değişiklik olup olmadığını kontrol edip en küçük değişiklileri bile entegre etme anlamına gelmektedir.
CI’ın hedefi, uygulamayı Git reposundan alıp, paketleyip, test edilecek ortama kurulumunu otomatize etme sürecidir.
CI sürecinde kod bir takım testlerden geçer. Testler başarılı bir şekilde sonuçlanır ve tüm sistem çalışır haldeyse deploy işlemlerini başlatır. Eğer değişiklikler sistemde kırılmalara neden olmuşsa bu durumdan programcıları haberdar eder.
Continuous Deployment(CD): CD ise CI’dan başarılı bir şekilde geçen sistemin ilgili yerlere dağıtımı ile ilgilenir. Yani CI süresince kod derlendi, bazı testlerden geçti ve CD süreci ile dağıtımına başlandı.
Şimdi Jenkins’in neler yaptığına bir daha bakalım. Jenkins, ilgili git reposunu belirli aralıklarla kontrol eder. Değişiklikleri kendi reposuna alır ve derler. Daha sonra sizin belirlediğiniz bir dizi testlerden geçer. Sonrasında istediğiniz yere bu yeni versiyonu deploy eder.
Ayrıca eğer projemiz birçok insanın katıldığı bir projeyse ve sürekli bir değişim içerisinde ise Git işlemleriyle uğraşıyoruz; kim commit etti, neyi commit etti, ne değiştirmemiz gerekiyor derken tüm değişikleri toplayıp düzenleyip tekrar build edip deploy ediyoruz. Yani demem o ki aslında manuel yaptığımız bir çok işlem gereksiz durumda ve bize zaman, maliyet ve işgücü açısından zararlı. Tam bu noktada yardımımıza Continuous Integration kavramı ve akabinde Jenkins çıkıyor.
jenkins-nedir
Jenkins Kavramları
Job: Bir jenkins projesidir. Otomatize etmek istediğimiz işleri burada belirleriz. Örneğin, job config üzerinden şu repository’i çek, şu şartlarda build et, şu testleri çalıştır ve belirlenen kişilere mail at gibi işlemleri burada belirleriz.
Node: job’un üzerinde çalıştığı sunucuyu ifade eder. Testleri başka bir bilgisayarda koşmak istediğimizde node oluşturur ve bağlantı için gerekli şartları gerçekleştirdikten sonra node’da testlerimizi koşabiliriz.
Plugin (eklenti): Jenkins saf haliyle yüklenir, ihtiyacımıza göre plugin yükler ve bunları kullanılırız. Örneğin, Job çalıştıktan sonra mail atması için “Email Extension” eklentisini yüklemeli ve post-build adımında kullanmalıyız.
Pipeline: işlerin ardışık bir sırada yapılması, bir işlemin çıktısının sonraki gelen işlemin girdisi olması anlamına gelir. Ör: Bir test adımının başarısız olması durumunda diğer bir testin hiç başlamaması gibi.
Geliştiriciler neden Jenkins kullanmalı
Jenkins kullanımı mülakat soruları içerisinde giriş sorularından biri olan bu soruda potansiyel işvereniniz, Jenkins’in en önemli özelliklerini bilip bilmediğinizi ölçmek ister. Cevap oldukça öznel olsa da şu örneklerden faydalanabilirsiniz
1- Hataları erkenden kolayca fark edebilme
2- Otomatik test işlemi
3- Sürekli entegrasyon
Jenkins Nasıl Çalışır
Jenkins, bir WAR arşivi ve ana işletim sistemleri için yükleyici paketleri, bir Homebrew paketi, Docker görüntüsü ve kaynak kodu olarak dağıtılır. Kaynak kodu, birkaç Groovy, Ruby ve Antlr dosyasıyla çoğunlukla Java’dır.
Jenkins WAR’ı bağımsız olarak veya Tomcat gibi bir Java uygulama sunucusunda sunucu uygulaması olarak çalıştırabilirsiniz. Her iki durumda da, bir web kullanıcı arayüzü üretir ve REST API’sine yapılan çağrıları kabul eder.
Jenkins’i ilk kez çalıştırdığınızda, kurulumun kilidini açmak için ilk web sayfasına yapıştırabileceğiniz uzun bir rastgele parolaya sahip bir yönetici kullanıcı oluşturur.
Jenkins’in Avantajları
Jenkins, birçok topluluktan destek alan açık kaynak kodlu bir araç.
Kurulumu basit ve anlaşılır.
Birçok ihtiyaca yönelik 1000’den fazla eklentisi mevcut.
Ayrıca mevcut olmayan Jenkins eklentilerini de oluşturmak kolay.
Java’da yazılmış olması itibari ile neredeyse tüm platformlarda çalışabilir
Jenkins kurumu
https://www.jenkins.io/download/ bu adresten sistemimize uygun olan Jenkins’i indiriyoruz.
İndirme bittikten sonra http://localhost:8080/ ‘e bağlandığımızda Jenkins’in kurulumuna başlayacağımız ekran gelecektir
Unlock Jenkins
Gösterilen adrese gidip oradan şifreyi kopyayip buraya yapıştırıyoruz.
Customize Jenkins
Burada ise Jenkins bize önerdiği eklentileri kurabiliriz yada herhangi bir eklentiyi kendimiz mi kurmak istediğimi seçiyoruz. İkiniciyi seçip devam ediyorum.
kurulum 3
İşimize yarıyacak olan eklentileri buradan seçtikten sonra install butonuna tıklayabiliriz. Ve eklentileri kurduktan sonra karşımıza Admin kullanıcısını tanımlama ekranı çıkacaktır.
Admin-User
Buraları kendimize göre doldurup save and continue butonuna tıklamamız yeterli. ve bize yönetim paneli ile ilgili url ayarını yapmamız gereken sayfaya yönlendirecektir.
kurulum 5
Bu işlemleri de yaptıktan sonra Jenkins kurulumu tamamlanmış oluyor.
Ready
Karşınız da Jenkins yönetim paneli
Jenkinsa Hoşgeldiniz
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ı ve 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.
Peki Jenkins’ten başka CI toolu var mı? Aşağıda diğer CI toolarını da görebilirsiniz fakat şuan en popüler olanı Jenkins.
⦁ Jenkins
⦁ Bamboo
⦁ Travis CI
⦁ Gitlab CI
⦁ TeamCity
Moderatör tarafında düzenlendi: