Hindistan'da Jenkins Maaşı: Yeni Başlayanlar ve Deneyimliler İçin [222]
Yayınlanan: 2021-01-06Her gün yeni araçlar geliştirilmekte ve piyasaya sürülmektedir. Bunlardan biri, ilk olarak 2 Şubat 2011'de piyasaya sürülen ve orijinal olarak Kohsuke Kawaguchi tarafından yazılan Jenkins.
İçindekiler
Jenkins nedir?
Jenkins, yeni oluşturulan kodların sürekli olarak geliştirilmesini, test edilmesini ve devreye alınmasını sağlayan açık kaynaklı bir sürekli entegrasyon aracıdır. Java ile yazılmıştır.
Jenkins, piyasadaki en iyi devops araçlarından biridir. Jenkins yokken, dünyanın dört bir yanındaki geliştiriciler kodu oluşturacak ve kaynak kodunda değişiklikler yapacaktı. Tüm kodlar yalnızca geceleri (veya geliştiricilerin saat dilimine bağlı olarak gündüzleri) çekilecektir. Bu kod daha sonra test edildi ve yeni yapı, bir sonraki yapı için temel görevi gördü.
Jenkins, Devops'ta uzmanlık almak istediğinizde öğrenmek için önemli bir araçtır. Jenkins ile kaynak kodunda değişiklik yapmanın ilk adımı aynı kaldı. Ancak şimdi, yeni bir taahhüt yapıldığında kod çekilebilir. Ayrıca kaynak kodunda yapılan değişiklikler de sürekli olarak yapılabilir. Bu mümkün oldu çünkü test ve doğrulama hizmetleri yapı ortamına getirildi
Artık tüm süreç sorunsuz ve sürekli olabilir.
Sürekli entegrasyon nedir?
Geliştirici olarak, üzerinde çalıştığınız bir kodu depodan çağırabilirsiniz. Ardından, kodu istediğiniz zaman bir CI sunucusuna gönderebileceksiniz. Bu sunucu, test cihazının oluşturmuş olabileceği tüm testleri doğrular ve geçer.

Kod testi geçemezse, iyileştirme için geliştiriciye geri gönderilir. Bu, yapının kırılmasını önler.
Diğer bir avantaj da, geliştiricinin sistemlerinde uzaktan testler çalıştırması gerekmemesidir. Çok sayıda test çok zaman alabilir. Bu testi CI sunucusu gibi başka bir sisteme devretmek, tüm yazılım oluşturma sürecini daha verimli hale getirir.
CI sunucusunda hesaba katılmayan herhangi bir kod hatası ortaya çıkarsa, bunlar test cihazı ile geliştirici arasında kolayca iletilebilir.
Bunu kullanmanın en büyük yararı, kodun daha hızlı dağıtılabilmesidir. Sonuç olarak, müşteriler düzeltmeler ve iyileştirmeler içeren yeni sürümü her zamankinden daha hızlı görebilirler.
Diğer sürekli entegrasyon araçları şunları içerir:
- Bambu
- yapı robotu
- Travis CI
- Apaçi Gump
Jenkins'e neden ihtiyaç duyuldu?
Bu, tüm geliştiricilerin ilgili olabileceği bir senaryodur: bir kod parçası yazarsınız ve onu bir kod deposuna kaydedersiniz.
Şimdi sorun, depoya gönderilen gerçek taahhütlerin tutarlı olmamasıdır. Düzensiz ve düzensizdirler. Geliştiriciler tüm dünyaya yayılmış olabilir. Bazıları İngiltere'de, bazıları Hindistan'da, bazıları ABD'de ve bazıları Filipinler'de yaşıyor olabilir. Herkes farklı zamanlarda çalışıyor ve kod deposuna giren farklı miktarlarda kod var.
Bu, entegrasyonda 'testte gecikmeye' yol açan sorunlara yol açar. Üstüne üstlük, hatalar artmaya devam ediyor. Bu, genel projede ve yazılımın yayınlanmasında gecikmelere neden olur.
Geçmişte geliştiriciler, hatalar için test edilmeden önce kodun tamamının oluşturulmasını beklemek zorundaydı. Bu nedenle, yalnızca projenin nihai teslimi ertelenmekle kalmadı, aynı zamanda kodu düzeltmek için tekrarlanan bir süreç de yoktu. Verimlilik sıfıra yaklaştı.
Jenkins süreci / boru hattı
- Herhangi bir yazılım projesinin geliştirme aşamasında, kodu yazıp bir Git sunucusuna veya benzeri bir sunucuya taahhüt ediyorsunuz. Jenkins'i kullanırken, kodu taahhüt ettiğiniz Jenkins sunucusudur.
- Jenkins sunucusu daha sonra kodunuzun bir yapısını oluşturacaktır. Bu derleme işleminin bir kısmı, kodu testler aracılığıyla çalıştırıyor. Bunu zaten yapıyor olurdunuz, ancak Jenkins kendi testlerini yapacak. Ekibinizin kodu doğrulamak için başka testleri varsa, bunlar Jenkins ortamında da çalıştırılabilir.
- Tüm testler geçilirse, serbest bırakabilir ve dağıtabilir, ayrıca kodu bir üretim ortamına teslim edebilirsiniz.
Yukarıdaki adımlar, sürekli entegrasyon/sürekli teslim sürecini özetlemektedir. En büyük yararı, Jenkins tüm süreci otomatikleştirdiği için geliştirmeden üretime gerçekten hızlı bir şekilde geçebilmenizdir.
Jenkins'in Özellikleri
Jenkins ile çalışırken karşılaşacağınız bazı özellikler:
- Jenkins, bağımsız bir Java programıdır. Mac OS X, Windows, Unix benzeri OS için paketlerle çalışmaya hazır
- Kolayca kurulabilir ve yapılandırılabilir. Yalnızca yerleşik yardım ve hata kontrollerini içeren web arayüzüne ihtiyacınız var
- Jenkins, ita eklenti mimarisi ile genişletilebilir. Bu, Jenkins'in kişinin kendi ihtiyaçları için nasıl yapılandırılabileceği konusunda sonsuz olanaklar sağlar.
- Güncelleme Merkezinde yüzlerce eklenti var
- Jenkins, CD ve CI araç zincirindeki her araçla entegre olur
- İşi birden fazla makineye kolayca dağıtabilir. Bu, tüm platformlarda daha hızlı derleme, test ve dağıtıma olanak tanır.
Jenkins mimarisi
Jenkins mimarisi iki bileşene ayrılabilir (yan yana görselleştirilir): insan bileşeni ve Jenkins bileşeni.
İnsan bileşeni, kodu yazan ve bir kaynak kod deposuna gönderen geliştiricilerden oluşur.
Jenkins şimdi geliyor. CI sunucusu, depoyu düzenli olarak kontrol eder, kullanıma sunulan yeni kodları alır ve buna karşı testler yapar.
Derleme sunucusu daha sonra kodu yürütülebilir bir dosyada oluşturur. Java dosyasının JAR dosyasına dönüştürülmesi gerçekleşir. Oluşturma işleminin başarısız olması durumunda, geliştiricilere kodlarını değiştirebilmeleri için bir bildirim gönderilir. Maven, Jenkins'te eklenti olarak kullanılabilen bir yapı sunucusu örneğidir.
Son aşamada, test komut dosyaları yürütülür. Bu test komut dosyaları, Jenkins'te bulunan başka bir eklenti olan Selenium'da yazılabilir. Jenkins, derleme uygulamasını test sunucusuna dağıtır. Testin başarısız olması durumunda geliştiricilere tekrar geri bildirim gönderilir.
Yukarıdaki tüm aşamalar sorunsuz bir şekilde geçilirse, testes kodu/uygulaması üretim sunucusuna dağıtılır.
Jenkins'te bir sınırlama
Geliştiriciler birden çok dilde (PHP, Java, HTML, vb.) kod yazıyorsa, birden çok derlemenin yapılması ve yönetilmesi gerekir. Jenkins bu olanağı tek bir sunucuda sağlamaz. Bu sınırlamayı aşmak için dağıtılmış bir Jenkins mimarisine ihtiyacımız olacak.

Jenkins Master-Slave mimarisi
Jenkins'in tüm çalışmalarını anlamanın başlangıç noktası, uzak kaynak kod deposudur. Bu GitHub veya başka bir depo olabilir. Daha sonra efendi-köle mimarisi geliyor.
Kaynak
Jenkins sunucusu, birden çok bağımlı ortama ayrılan ana ortama erişir. Bu, tüm mimaride aynı anda birden çok yapı, birden çok test ve üretim ortamı oluşturmanıza olanak tanır. Ana bileşen bunları denetlerken, bağımlı bileşenler farklı işletim sistemleri için farklı sürümler oluşturabilir.
Her iki bileşen de birbirleriyle TCP/IP protokolü aracılığıyla iletişim kurar.
Kaynak
Jenkins'in avantajları ve dezavantajları
Öncelikle, Jenkins'in onu kullanan herhangi bir takıma sağladığı çeşitli avantajlara bir göz atalım:
Tekrarlanan kodlamaya harcanan çabayı azaltır
Bir komut istemi, bir Jenkins betiğini bir Jenkins işi olarak sararak bir GUI düğmesi tıklamasına dönüştürülebilir.
Slack ile senkronize edilebilir
Slack, ekip iletişimi için popüler bir platformdur ve Jenkins ile senkronize edilebilir.
Proje yönetimi için büyük destek
Her aktivite bir Jenkins işi olarak sarılır. Her iş için tamamlanma süresi ölçülebilir ve SDK veya REST API kullanılarak başarı/başarısızlık tanımlanabilir.
Destek ayrıca eklentiler şeklinde gelir. Yukarıda belirtildiği gibi, Jenkins genişletilebilirlik için yüzlerce eklentiye sahiptir. Bunlardan birkaçı, Pipeline eklentisi, Build-timeout, Timestamper, thinBackup, vb. içerir.
Üretim ortamında yalnızca en iyiler gider
Sürekli entegrasyon nedeniyle, kod iyi test edilir ve yalnızca tüm testler başarıyla geçildiğinde birleştirilir. Bu, ana yapıların bozulmamasını sağlar. Bu ayrıca herhangi bir bozuk kodun üretim ortamına ulaşmasını engeller. Ana yapı bozulursa, tüm geliştiricilere bir uyarı tetiklenebilir.
Artan kod kapsamı
Kod kapsamı test yoluyla sağlanır. Testlerin sonuçları derleme işlem hattında görüntülenir. Bu, test sürecini tüm ekip üyeleri için şeffaf tutar.
Dezavantajlar açısından, Jenkins'in yetersiz kaldığı yer burasıdır. Geliştiricilerin kendileri tarafından belirtilmiştir:
- Bulut tabanlı değil
- Dik bir öğrenme eğrisi var
- Kullanıcı arayüzü, özellikle yeni kullanıcılar için sezgisel değil
- Bir ekip üyesinin başka bir ekip üyesi tarafından yapılan taahhütleri kolayca görmesine izin vermez. Bir sürüm yöneticisi için, bir projenin genel sürüm ilerlemesini izlemek zorlaşır.
- Açık kaynaklı olduğu ve eklentiler sayesinde büyük ölçüde özelleştirebildiğiniz için, belirli sorunlarınız için destek bulmak zor olabilir.
Bir Jenkins röportajı yapmak
Yukarıdakiler Jenkins'e kapsamlı bir genel bakış olsa da, röportajlar için yeterli değildir. Yalnızca araçla çalışmaktan ve onun kuramlarını incelemekten elde edilebilecek daha derinlemesine bilgiye ihtiyacınız olacak. İkincisinde size yardımcı olacak bazı sık sorulan sorular şunlardır:
Jenkins'i kullanmak için ön koşullar nelerdir?
Şunlara ihtiyacınız olacak: SVN veya GIT deposu gibi bir kaynak kod yönetimi deposuna ve Mavens derleme betiği gibi çalışması gereken bir derleme betiğine erişim.
Jenkins dosyası, bölüm sonrası ve aracı ne anlama geliyor?
Jenkins dosyası, kaynak kontrolünde kontrol edilen ve Jenkins boru hattı hakkında bilgi içeren metin dosyasıdır.
Post-section, işlem hattının yürütülmesinin sonunda çalışır ve bir işlem hattının sonunda başka görevler gerçekleştirmemiz ve bazı bildirimler eklememiz gerektiğinde kullanılır.
Aracı, Jenkins'e boru hattını belirli bir şekilde ve sırayla yürütmesini söyleyen bir yönerge/komuttur.
Jenkins'te boru hatlarının kullanımı nedir?
Pipeline eklentisini kullanarak Jenkins'te boru hatları oluşturabilirsiniz. Bunlar, sırayla gerçekleştirilecek aşamaların/görevlerin bir görünümünü vermek için kullanılır. İşlem hatları, ekiplerin görevleri gözden geçirme, düzenleme ve yineleme konusunda yardımcı olur.
Bu, bir boru hattı oluşturulduktan sonra müdahale edilemeyeceği anlamına gelmez. Bir boru hattı dayanıklıdır, yani durabilir ve bir insan akışını daha fazla yönlendirmek için görüşme yapabilir.
Jenkins'i manuel olarak başlatabilir miyiz? Evet ise, nasıl?
Evet, Jenkins manuel olarak açılabilir. Bunun için adımlar şunlardır:
- Komut satırı isteminden Jenkins kurulum dizinine gidin
- Jenkins'i başlatmak için 'Jenkins.exe başlat' komutunu kullanın
- Yeniden başlatmak için: 'Jenkins.exe yeniden başlat'ı kullanın ve durdurmak için 'Jenkins.exe durdur'
Jenkins bir sunucudan diğerine nasıl kopyalanır?
- Jenkins dizinini ilk sunucudan kopyalayın. Diğer sunuculara yapıştırın.
- Farklı bir adla bir iş dizinini klonlayın ve mevcut bir işin bir kopyasını oluşturun
- Mevcut işi yeniden adlandırmak için dizini yeniden adlandırın
Jenkins mühendisinin maaşı ne kadar?
Hindistan'da, bir Jenkins inşa ve serbest bırakma mühendisinin medyan maaşı 6,15,756 INR'dir. 1-4 yıllık deneyime sahip biri ortalama 4,90,857 INR maaş alabilir. Buna fazla mesai, ipuçları ve ikramiyeler dahildir.

5-9 yıllık deneyime (kariyer ortası) sahip bir inşa ve serbest bırakma mühendisi, ortalama 9,89,000 INR maaş alabilir. Son olarak, 10-19 yıllık deneyime sahip deneyimli bir profesyonel 13.50.000 kazanabilir. Pune, Bangalore ve Mumbai'nin ortalama maaşlardan daha yüksek ücret ödediği bildirildi.
Jenkins yapı ve yayın mühendisleri için en popüler beceriler şunlardır:
- yapı yönetimi
- Sürüm yönetimi
- Kabuk komut dosyası
- Perl
- Git
Dünyanın en iyi Üniversitelerinden çevrimiçi Yazılım geliştirme Kursları öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.
Toplama
Yukarıdaki bilgilerle donanmış olarak, Jenkins'i anlamak ve Jenkins ile ilgili herhangi bir röportajı kırmak için sağlam bir temele sahip olduğunuzu umuyoruz. Alan ne olursa olsun, statünüzün ve maaşınızın nihai belirleyicisi becerilerinizdir. Bu nedenle, öğrenmeye ve gelişmeye devam edin. İyi şanlar!
Büyük veriler hakkında daha fazla bilgi edinmek istiyorsanız, upGrad & IIIT-B'nin çalışan profesyoneller için tasarlanmış ve 500+ saat zorlu eğitim, 9+ proje ve ödev, IIIT sunan Tam Yığın Yazılım Geliştirmede Yönetici PG Programına göz atın. -B Mezunu statüsü, pratik uygulamalı bitirme projeleri ve en iyi firmalarla iş yardımı.
