Jenkins ve TeamCity arasındaki fark nedir?
Yayınlanan: 2021-05-11Bu iki popüler sürekli entegrasyon aracını ve farklılıklarını tartışalım.
Yazılım geliştirme yaşam döngüsü yöntemi son on yılda büyük ölçüde değişti.
Daha önce, şelale modeli ilerlemenin yoluydu, daha sonra geliştirmenin yinelemeli olarak gerçekleştiği yerde çevik metodoloji geldi ve şimdi DevOps ile hem geliştirme hem de işlemler, eksiksiz uygulama geliştirilip dağıtılana kadar yinelemeli ve sürekli olarak gerçekleşiyor.
Sürekli entegrasyon ve sürekli teslimat anlamına gelen CI/CD terimi çok popüler hale geldi. Uygulamayı çok daha hızlı ve güvenilir bir şekilde geliştirmeye ve sunmaya yardımcı olan bir DevOps uygulamasıdır. Bir CICD aracı kullanarak iş gereksiniminden üretime dağıtıma kadar tüm adımları otomatikleştiren bir metodolojidir. Her şeyi manuel olarak yapmaktan çok daha iyi ve daha güvenlidir.
Artık CI/CD için birçok araç mevcuttur, bu nedenle doğru araçları seçmek kafa karıştırıcı olabilir.
Neden Jenkins?
Jenkins, en popüler açık kaynaklı sürekli entegrasyon aracıdır. Sürekli entegrasyon çözümü için fiili standarttır.
Jenkins'i Java üzerinde çalıştığı için Windows veya Linux gibi büyük işletim sistemlerine kurabilirsiniz. Başlangıçta Java uygulamaları için bir yapı otomasyon aracı olarak oluşturuldu. O zamandan beri çok gelişti ve diğer platformlar ve araçlarla kolayca entegre olmak için 1400'den fazla eklentiye sahip.

Jenkins, yazılım geliştirme sürecinde sürekli entegrasyon ve sürekli teslimat için temel araçtır. Kurulumu kolaydır ve bir tarayıcı aracılığıyla kolayca erişilebilen proje yönetimi için bir gösterge panosu sağlar.
Geliştiriciler, kodlarını otomatik olarak oluşturmak, entegre etmek, test etmek ve dağıtmak için Jenkins'i kullanır. İlk olarak, geliştiriciler kodlarını kontrol eder, ardından Jenkins değiştirilen kaynak kodunu alır, bir derlemeyi tetikler ve gerekirse bir test çalıştırır. Yapı tamamlandığında, çıktıyı Jenkins panosunda alacaksınız ve ayarlandıysa geliştiriciye bir bildirim gönderilebilir.
Neden TeamCity?
TeamCity, aynı zamanda java tabanlı olan ticari bir CI/CD sunucusudur. JetBrains tarafından oluşturulmuş bir yapı otomasyonu ve yönetim aracıdır.
TeamCity'nin sloganı “ Kutunun dışında Güçlü Sürekli Entegrasyon ”dur ve bu araç bunu haklı çıkarır. Jenkins'in hemen hemen tüm özelliklerini birkaç ek özellik ile sunar. TeamCity, docker-compose aracılığıyla otomatik olarak kapsayıcı oluşturmak için Docker ile entegre olabilir. Sorunları kolayca takip etmek için Jira aracı için entegrasyon desteğine sahiptir.
TeamCity, .NET çerçevesini destekler ve TeamCity'yi Eclipse, Visual Studio vb. gibi çeşitli IDE'lerle kolayca entegre edebilirsiniz. Yapıt deposu oluşturma entegrasyonuyla TeamCity, yapıları TeamCity sunucu dosya sisteminde veya harici depolamada depolayabilir.
Professional sunucu lisansının TeamCity ücretsiz sürümü ile sıfır maliyetle 100 yapı ve 3 yapı aracısı oluşturabilirsiniz.
Jenkins vs TeamCity
Açık Kaynak ve Ticari
En temel fark, Jenkins'in açık kaynaklı bir sürekli entegrasyon aracı ve TeamCity'nin ticari bir araç olmasıdır. Jenkins projesi MIT lisansı altında yayınlandı ve dünya çapındaki geliştiriciler tarafından destekleniyor. TeamCity, ana şirketi JetBrains tarafından geliştirilmekte ve sürdürülmektedir.
Arayüz
TeamCity'nin arayüzü çok güzel ve arayüz, sürekli entegrasyonla başlayan ve bir CI aracı arayan birçok yeni başlayanın ilgisini çekmeye yardımcı oluyor. TeamCity arayüzünde, bunları daha iyi bir şekilde düzenlemek için etiketleyebilir, yorum yapabilir ve derlemeyi sabitleyebilirsiniz.
Jenkins'in arayüzü eski okuldur. UI perspektifinden bakmak çok çekici değil ve büyük bir iyileştirme kapsamına sahip.
Özel özellikler
Jenkins yerleşik pek çok özelliğe sahip olmasa da, devasa eklenti ekosistemi, diğer CI araçlarının sunamadığı tonlarca özellik sağlar. Bu tür eklenti özellikleriyle Jenkins, kod kalitesini iyileştirmeye yardımcı olan derlemeler oluşturmak ve kodu analiz etmek için kullanılır.
Öte yandan, bazı normal CI aracı özelliklerinin yanı sıra TeamCity, kullanıma hazır birden fazla özellikle birlikte gelir. Java, Ruby, .NET vb. gibi birden çok platformu destekler. TeamCity aracılığıyla docker görüntüleri de oluşturabilirsiniz. Bugzilla ve Jira desteği ile sorun takibini kolaylıkla gerçekleştirebilirsiniz. Ayrıca, derleme değişiklikleri ve hata geçmişi, istatistiklerle ilgili geçmiş bilgileri tutmak, geçmiş derlemeleri çalıştırmak ve geçmiş raporları test etmek için depolanır.
Kurulum
Jenkins'i sisteminize kurmak için, üzerinde Java'nın bulunması gerekir. Jenkins'in kurulumu, her ikisi de zaten sistemde olduğunda basittir. Kurulum tamamlandığında, web arayüzünde Jenkins üzerinde çalışmaya başlayabilirsiniz.
TeamCity'yi kurmak da çok kolaydır. TeamCity Sunucusunu indirmeniz ve belgelere gitmeniz ve belirtilen talimatları izlemeniz gerekir.
Entegrasyonlar
Entegrasyon yetenekleri hakkında konuştuğumuzda, herhangi bir CI aracının Jenkins'in rekabetine yakın olduğunu bile hissetmiyorum. Jenkins'in popülaritesi piyasada var çünkü yüzlerce ücretsiz eklenti ile entegrasyon sağlıyor.
Jenkins ile karşılaştırıldığında, TeamCity çok daha az eklenti ile entegre olabilir. Ancak, "kutudan çıktığı gibi" özelliklerini artıran birkaç özel entegrasyon sunar. .NET çerçevesini destekler ve Visual Studio Team Services ile bütünleşir, AWS, Azure, GCP, VMware gibi bulut sağlayıcılarıyla bulut entegrasyonu sağlar.

Güvenlik
TeamCity'nin ticari olmasının iyi yanı, JetBrains'in herhangi bir güvenlik bulgusu için öncelikli olarak sabitlenmesi için onu desteklemesidir. TeamCity, yapı hattında güvenlik açığı taraması yapabilen Snyk güvenlik eklentisi ile entegrasyon sağlar. Yapılarınızda bulunan tüm riskleri ve tehditleri belirlemenize ve gidermenize yardımcı olur.
Jenkins'in açık kaynak olduğu göz önüne alındığında, risk azaltma işlemi tamamen geliştirici topluluğuna bağlı olduğundan gecikebilir.
Topluluk
Jenkins topluluğu TeamCity'den daha geniştir. Jenkins açık kaynak olduğu için herhangi bir geliştirici bu projeye katkıda bulunabilir. Her gün yeni geliştiriciler, yeni özellikler eklemek ve onu daha iyi bir araç haline getirmek için bu projeye katkılarını eklemeye devam ediyor.
Öte yandan, TeamCity ticari bir araçtır ve JetBrains ekibi tarafından korunur. Bu aracı büyütmek için profesyonel bir destek topluluğuna sahiptir.
fiyatlandırma
Jenkins açık kaynak kodlu olduğu için kullanımı ücretsizdir ve bu nedenle birçok kuruluş için tercih edilen bir seçimdir. Kuruluşlar, Jenkins gibi bir CI aracına hiçbir şey harcamayarak iyi bir miktar tasarruf sağlar.
TeamCity'nin kullanımı ücretsiz değildir. Profesyonel sunucu lisansı ve Enterprise sunucu lisansı olmak üzere iki lisansla birlikte gelir. Profesyonel bir sunucu lisansında, 100 yapı yapılandırması ve 3 yapı aracısını ücretsiz olarak ve bundan sonra 1 ek yapı aracısı ve 10 yapı yapılandırması için 299$ kullanabilirsiniz. TeamCity kurumsal sunucu lisansı, 1,999$'dan başlayan sınırsız yapılandırma yapılandırması sağlayan 3 aracı ile başlar.
Karşılaştırma Tablosu
| Jenkins | Takım Şehri | |
| Yazılmış | Java | Java |
| geliştirici | CloudBees, Kohsuke Kawaguchi, Ücretsiz ve açık kaynaklı yazılım | JetBrain'ler |
| Lisans | MIT Lisansı | Tescilli ticari yazılım |
| Özellikleri |
|
|
| Kullanım kolaylığı | Evet | Evet |
| Kullanıcı arayüzü | Çok basit arayüz | Çekici ve güzel bir arayüze sahiptir |
| Topluluk | Açık kaynak olduğu için topluluk daha büyüktür | Jenkins'e kıyasla daha küçük |
| fiyatlandırma | Özgür | Profesyonel Sunucu lisansı, 3 ücretsiz yapı aracısından sonra yapı aracısı başına 299$'a mal olur. Halbuki Enterprise Server lisans maliyetleri 1999$'dan başlar |
| Entegrasyonlar | 1400+ entegrasyon | 300+ entegrasyon |
| Güvenlik | Daha Az Güvenli | Daha Güvenli |
| API | JSON, Python, RESTful API'yi destekler: XML | Hizmet mesajlarını kullanarak RESTful API'yi destekler ve Open API kullanarak eklentiler oluşturur |
| Programlama Dili Desteği | Java, PHP, C, C++, Fortran, Python ve daha birçok betik dili | Python, C++, Java, .NET, Ruby, PHP, Node.js ve daha fazlası |
| Konteyner Desteği | Jenkins için Docker eklentisini kullanma | Kullanıma hazır birinci sınıf Docker desteği |
| Yayın Döngüsü | Daha sık | Daha Az Sık |
| Raporlama | Derlemeler ve testler için ayrıntılı rapor sağlar | Daha iyi web kullanıcı arayüzü ile raporlar sağlar |
Çözüm
Artık en popüler iki sürekli entegrasyon aracı olan Jenkins ve TeamCity arasındaki farkları biliyorsunuz.
Kuruluşunuz için bir CI aracı seçerken, barındırma seçenekleri, kullanılabilir entegrasyonlar, yeniden kullanılabilir kod kitaplığı, kapsayıcı desteği ve aracı kullanmanın ve öğrenmenin ne kadar kolay olduğu gibi birkaç parametreyi kontrol etmeniz gerekir. Bu parametreleri geçen sürekli entegrasyon aracı, gitmek için mükemmel bir seçenek olacaktır.
Hala şüpheniz varsa, devam edin ve Jenkins ve TeamCity'nin ücretsiz sürümünü deneyin. Bu platformlarda birkaç yapı oluşturduktan sonra, projeleriniz için sürekli entegrasyon için hangi aracın daha iyi olduğuna karar vermek için daha rahat bir durumda olacaksınız.
