Öncelikle, bugün itibariyle GitLab Community Edition, Jenkins ile tamamen birlikte çalışabilir. Soru yok.
Aşağıda, hem Jenkins hem de GitLab CI'yı birleştiren başarılı bir deneyim hakkında bazı geri bildirimler vereceğim. Ayrıca ikisini birden mi yoksa yalnızca birini mi kullanmanız gerektiğini ve hangi nedenle kullanacağınızı tartışacağım.
Umarım bu size kendi projeleriniz hakkında kaliteli bilgi verir.
GitLab CI ve Jenkins güçlü yönleri
GitLab CI
GitLab CI doğal olarak GitLab SCM'ye entegre edilmiştir. gitlab-ci.yml
Dosyaları kullanarak ardışık düzenler oluşturabilir ve bunları bir grafik arabirim aracılığıyla işleyebilirsiniz.
Kod olarak bu ardışık düzenler açıkça kod tabanında depolanabilir ve "her şeyi kod olarak" uygulamasını (erişim, sürüm oluşturma, yeniden üretilebilirlik, yeniden kullanılabilirlik vb.)
GitLab CI harika bir görsel yönetim aracıdır:
- Ekiplerin tüm üyeleri (teknik olmayanlar dahil) uygulamaların yaşam döngüsü durumuna hızlı ve kolay erişime sahiptir.
- bu nedenle sürüm yönetimi için etkileşimli ve operasyonel bir gösterge paneli olarak kullanılabilir .
Jenkins
Jenkins, harika bir inşa aracıdır. Gücü, birçok eklentisinde yatıyor. Özellikle, Jenkins ile diğer CI veya CD araçları arasında arayüz eklentilerini kullanma konusunda büyük şansım oldu. Bu, her zaman iki bileşen arasında bir iletişim arayüzü geliştirmekten (muhtemelen kötü bir şekilde) daha iyi bir seçenektir.
Kod olarak pipeline, groovy
komut dosyaları kullanılarak da kullanılabilir .
GitLab CI ve Jenkins'i birlikte kullanma
İlk başta biraz gereksiz gelebilir, ancak GitLab CI ve Jenkins'i birleştirmek oldukça güçlüdür.
- GitLab CI, ardışık düzenleri (zincirler, çalıştırmalar, monitörler ...) düzenler ve biri GitLab'a entegre grafik arayüzünden yararlanabilir
- Jenkins işi çalıştırır ve üçüncü taraf araçlarla diyaloğu kolaylaştırır.
Bu tasarımın bir başka yararı da aletler arasında gevşek bağlantıya sahip olmasıdır:
- tüm CI / CD sürecini yeniden işlemek zorunda kalmadan fabrika bileşenlerinden herhangi birini değiştirebiliriz
- (muhtemelen birkaç tane) Jenkins, TeamCity'yi birleştiren heterojen bir yapı ortamına sahip olabiliriz, adını siz koyun ve yine de tek bir izleme aracına sahip olabiliriz.
Takas
Elbette, bu tasarım için ödenmesi gereken bir bedel var: ilk kurulum zahmetli ve birçok araç hakkında minimum düzeyde anlayışa sahip olmanız gerekiyor.
Bu nedenle, böyle bir kurulumu önermiyorum
- ilgilenmeniz gereken birçok üçüncü taraf aracınız var. İşte o zaman Jenkins birçok eklentisiyle çok kullanışlı oluyor.
- Her biri farklı bir yapı ortamına sahip olan, heterojen teknolojilere sahip karmaşık uygulamalarla uğraşmanız ve yine de birleşik bir uygulama yaşam döngüsü yönetimi kullanıcı arayüzüne sahip olmanız gerekir.
Bu durumların hiçbirinde değilseniz, muhtemelen ikisinden sadece biriyle daha iyi durumda olursunuz, ikisini birden değil.
Eğer birini seçmek zorunda olsaydım
Hem GitLab CI hem de Jenkins'in artıları ve eksileri vardır. Her ikisi de güçlü araçlardır. Peki hangisini seçmeli?
cevap 1
Ekibinizin (veya yakın birinin) belirli bir uzmanlık seviyesine sahip olduğu birini seçin.
Cevap 2
Hepiniz CI teknolojilerinde birinci sınıf öğrencisiyseniz, birini seçin ve başlayın.
- GitLab kullanıyorsanız ve kod olarak her şeyde ustalığa sahipseniz, GitLab CI'yı seçmek tamamen mantıklıdır.
- Diğer birçok CI / CD aracıyla iletişim kurmanız gerekiyorsa veya işlerinizi oluşturmak için o GUI'ye kesinlikle ihtiyacınız varsa, Jenkins'e gidin.
GitLab kullanan ve bunu yapmaya devam edeceklerinden emin olmayanlarınız, GitLab CI'yi seçmiş olmanın tüm CI / CD ardışık düzenlerinizi çöpe atmanız anlamına geleceğini akıllarında tutmalıdırlar.
Denge eğilir: Nihai kelimedir küçük olması nedeniyle birçok eklentileri Jenkins doğru biraz ama şansı GitLab CI hızla boşluğu dolduracaktır vardır.