Pertama-tama, pada hari ini, Edisi Komunitas GitLab dapat sepenuhnya dioperasikan dengan Jenkins. Tidak ada pertanyaan.
Berikut ini, saya memberikan umpan balik tentang pengalaman sukses menggabungkan Jenkins dan GitLab CI. Saya juga akan membahas apakah Anda harus menggunakan keduanya atau hanya salah satunya, dan untuk alasan apa.
Saya harap ini akan memberi Anda informasi berkualitas tentang proyek Anda sendiri.
Kekuatan GitLab CI dan Jenkins
GitLab CI
GitLab CI secara alami terintegrasi dalam GitLab SCM. Anda dapat membuat saluran pipa menggunakan gitlab-ci.yml
file dan memanipulasinya melalui antarmuka grafis.
Pipa-pipa ini sebagai kode jelas dapat disimpan dalam basis kode, menegakkan praktik "semuanya sebagai kode" (akses, versi, reproduksibilitas, penggunaan kembali, dll.).
GitLab CI adalah alat manajemen visual yang hebat:
- semua anggota tim (termasuk yang non-teknis) memiliki akses cepat dan mudah ke status siklus hidup aplikasi.
- oleh karena itu dapat digunakan sebagai dashboard interaktif dan operasional untuk manajemen rilis.
Jenkins
Jenkins adalah alat membangun yang bagus. Kekuatannya ada di banyak pluginnya. Terutama, saya sangat beruntung menggunakan plugin antarmuka antara Jenkins dan alat CI atau CD lainnya. Ini selalu merupakan pilihan yang lebih baik daripada membangun kembali (mungkin buruk) antarmuka dialog antara dua komponen.
Pipeline sebagai kode juga tersedia menggunakan groovy
skrip.
Menggunakan GitLab CI dan Jenkins bersama-sama
Mungkin terdengar agak berlebihan pada awalnya, tetapi menggabungkan GitLab CI dan Jenkins cukup kuat.
- GitLab CI mengatur jaringan pipa, rantai, monitor ... dan kita dapat memanfaatkan antarmuka grafisnya yang terintegrasi dengan GitLab.
- Jenkins menjalankan pekerjaan dan memfasilitasi dialog dengan alat pihak ketiga.
Manfaat lain dari desain ini adalah memiliki kopling longgar di antara alat-alat:
- kita bisa mengganti komponen pabrik apa pun tanpa harus mengerjakan ulang seluruh proses CI / CD
- kita bisa memiliki lingkungan yang heterogen, menggabungkan (mungkin beberapa) Jenkins, TeamCity, apa saja, dan masih memiliki satu alat pemantauan.
Trade-off
Yah, tentu saja, ada harga yang harus dibayar untuk desain ini: pengaturan awal rumit dan Anda harus memiliki tingkat minimal pemahaman banyak alat.
Untuk alasan ini, saya tidak merekomendasikan pengaturan seperti itu kecuali
- Anda memiliki banyak alat pihak ketiga untuk ditangani. Saat itulah Jenkins sangat berguna dengan banyak pluginnya.
- Anda harus berurusan dengan aplikasi kompleks dengan teknologi heterogen, memiliki masing-masing lingkungan yang berbeda, dan masih perlu memiliki UI manajemen siklus hidup aplikasi terpadu.
Jika Anda tidak berada dalam kedua situasi ini, Anda mungkin lebih baik hanya dengan satu dari keduanya, tetapi tidak keduanya.
Jika saya harus memilih satu
Baik GitLab CI dan Jenkins memiliki pro dan kontra. Keduanya adalah alat yang ampuh. Jadi yang mana yang harus dipilih?
jawaban 1
Pilih salah satu yang tim Anda (atau seseorang yang dekat) sudah memiliki tingkat keahlian tertentu.
Jawaban 2
Jika Anda semua mahasiswa baru dalam teknologi CI, pilih satu dan mulai saja.
- Jika Anda menggunakan GitLab dan memiliki keahlian untuk semuanya sebagai kode, masuk akal untuk memilih GitLab CI.
- Jika Anda harus berdialog dengan banyak alat CI / CD lainnya atau benar-benar membutuhkan GUI untuk membangun pekerjaan Anda, pilih Jenkins.
Anda yang menggunakan GitLab dan tidak yakin mereka akan tetap melakukannya, harus diingat bahwa, dengan memilih GitLab CI akan menyiratkan untuk membuang semua saluran pipa CI / CD Anda.
Kata terakhirnya adalah: keseimbangan sedikit condong ke arah Jenkins karena banyak pluginnya, tetapi kemungkinan GitLab CI akan dengan cepat mengisi kekosongan tersebut.