Pertempuran Jenkins dan GitLab CI / CD

Dalam dekade terakhir, kemajuan signifikan telah dibuat dalam pengembangan alat Continuous Integration (CI) dan Continuous Delivery (CD). Perkembangan teknologi untuk mengintegrasikan pengembangan dan operasi perangkat lunak (Operasi Pengembangan, DevOps) telah menyebabkan peningkatan pesat dalam permintaan alat CI / CD. Solusi yang ada terus meningkat, berusaha untuk mengikuti perkembangan zaman, versi baru mereka dirilis, di dunia jaminan kualitas perangkat lunak (Quality Assurance, QA), banyak produk baru terus bermunculan. Dengan banyaknya pilihan, memilih kotak peralatan yang tepat bukanlah tugas yang mudah.







Di antara semua alat CI / CD yang ada, ada dua proyek yang pasti patut diperhatikan bagi siapa pun yang mencari sesuatu dari bidang ini. Kita berbicara tentang Jenkins dan alat GitLab CI / CD, yang merupakan bagian dari platform GitLab. Jenkins memiliki lebih dari 16.000 bintang di GitHub. Repositori GitLab di gitlab.com memiliki lebih dari 2.000 bintang. Jika kita membandingkan popularitas repositori, ternyata Jenkins telah mendapatkan bintang 8 kali lebih banyak daripada platformnya, yang menyertakan GitLab CI / CD. Tetapi ketika memilih alat CI / CD, ini bukan satu-satunya indikator yang perlu diperhatikan. Ada banyak lainnya, dan ini menjelaskan mengapa dalam banyak perbandingan Jenkins dan GitLab CI / CD sangat dekat satu sama lain.



Ambil contoh, data dari platform G2, yang mengumpulkan ulasan dari berbagai macam produk dan peringkat yang diberikan pengguna kepada mereka. Jenkins memiliki peringkat rata - rata 4,3 bintang berdasarkan 288 ulasan. Dan tentang GitLab di sini memiliki 270 ulasan, peringkat rata-rata instrumen ini adalah 4,4 bintang. Kami tidak akan salah dalam menyatakan bahwa Jenkins dan GitLab CI / CD bersaing satu sama lain dalam istilah yang sama. Menarik untuk dicatat bahwa proyek Jenkins muncul pada tahun 2011 dan sejak itu telah menjadi alat favorit penguji. Tetapi pada saat yang sama, proyek GitLab CI / CD, yang diluncurkan pada tahun 2014, mengambil posisinya, sangat tinggi, berkat kemampuan canggih yang ditawarkan oleh platform ini.



Jika kami berbicara tentang popularitas Jenkins dibandingkan dengan platform serupa lainnya, maka kami mencatat bahwa kami, setelah menerbitkan artikel di mana platform Travis CI dan Jenkins dibandingkan, mengatur survei. 85 pengguna mengambil bagian di dalamnya. Responden diminta untuk memilih alat CI / CD yang paling mereka sukai. 79% memilih Jenkins, 5% memilih Travis CI, dan 16% menyatakan mereka lebih memilih alat lain.





Hasil Survei



Di antara alat CI / CD lainnya, GitLab CI / CD paling sering disebutkan.



Jika Anda serius tentang DevOps, maka Anda perlu memilih alat yang sesuai dengan hati-hati, dengan mempertimbangkan spesifikasi proyek, anggarannya, dan persyaratan lainnya. Untuk membantu Anda membuat pilihan yang tepat, kami akan menganalisis Jenkins dan GitLab CI / CD. Ini, semoga, akan membantu Anda membuat pilihan yang tepat.



Memperkenalkan Jenkins





Jenkins adalah alat CI / CD yang terkenal dan fleksibel yang dirancang untuk mengotomatiskan berbagai tugas yang terkait dengan proyek perangkat lunak. Jenkins seluruhnya ditulis di Java dan dirilis di bawah lisensi MIT. Ini memiliki serangkaian kemampuan yang kuat yang bertujuan untuk mengotomatiskan tugas yang terkait dengan membangun, menguji, menyebarkan, mengintegrasikan, dan merilis perangkat lunak. Alat ini dapat digunakan di berbagai sistem operasi. Ini termasuk macOS, Windows dan banyak distribusi Linux seperti OpenSUSE, Ubuntu, dan Red Hat. Ada paket instalasi Jenkins untuk OS yang berbeda, alat ini dapat diinstal di Docker dan di sistem apa pun yang memiliki JRE (Java Runtime Environment).



Pengembang Jenkins telah membuat proyek lain, Jenkins X, yang dirancang untuk berjalan di Kubernetes. Jenkins X mengintegrasikan Helm, Server CI / CD Jenkins, Kubernetes, dan fitur lainnya untuk membuat pipeline CI / CD yang mengikuti praktik terbaik DevOps. Misalnya, ini menggunakan GitOps di sini.



Seseorang dapat menambah keuntungan bank Jenkins dengan fakta bahwa skripnya terstruktur dengan sangat baik, dapat dimengerti, dan mudah dibaca. Tim Jenkins telah membuat sekitar 1000 plugin yang ditujukan untuk mengatur interaksi Jenkins dengan berbagai teknologi. Dalam skrip, Anda dapat menggunakan sistem otentikasi, yang, misalnya, memungkinkan Anda untuk menyambung ke berbagai sistem tertutup.



Saat pipeline Jenkins berjalan, Anda dapat mengamati apa yang terjadi di setiap langkah, apakah tahapan pekerjaan tertentu telah berhasil diselesaikan atau belum. Anda dapat mengamati semua ini, bagaimanapun, tanpa menggunakan antarmuka grafis tertentu, tetapi menggunakan kemampuan terminal.



Fitur Jenkins



Fitur Jenkins yang terkenal termasuk kemudahan konfigurasi, otomatisasi tingkat tinggi dari berbagai operasi, dan dokumentasi yang sangat baik. Jika kita berbicara tentang menyelesaikan tugas DevOps, Jenkins dianggap sebagai alat yang sangat andal, yang biasanya tidak masuk akal untuk memantau dengan cermat seluruh proses pemrosesan proyek. Ini tidak terjadi pada alat CI / CD lainnya. Mari kita bahas tentang beberapa fitur Jenkins yang paling penting.



▍1. Dukungan multi-platform gratis, open source



Jenkins dapat berjalan di platform macOS, Windows dan Linux. Ini juga dapat berjalan di Docker, memungkinkan tugas otomatis dijalankan secara konsisten dan cepat. Alat ini juga dapat dijalankan sebagai servlet di container yang mendukung Java seperti Apache Tomcat dan GlassFish. Instalasi Jenkins didokumentasikan dengan baik .



▍2. Ekosistem plugin yang dikembangkan



Ekosistem plugin Jenkins terlihat jauh lebih matang daripada ekosistem plugin alat CI / CD lainnya. Saat ini ada lebih dari 1500 plugin Jenkins. Plugin ini ditujukan untuk menyelesaikan berbagai tugas, dengan bantuannya Anda dapat mengotomatiskan berbagai proyek. Banyaknya plugin gratis yang dapat dipilih berarti bahwa seseorang yang menggunakan Jenkins tidak memiliki kebutuhan yang mendesak untuk membeli plugin berbayar yang mahal. Jenkins dapat diintegrasikan dengan banyak alat DevOps.



▍3. Instalasi dan pengaturan yang mudah



Jenkins cukup mudah dipasang dan dikonfigurasi. Pada saat yang sama, proses pembaruan sistem juga sangat mudah. Di sini, sekali lagi, perlu disebutkan kualitas dokumentasinya, karena di dalamnya Anda dapat menemukan jawaban atas berbagai pertanyaan yang berkaitan dengan pemasangan dan konfigurasi Jenkins.



▍4. Komunitas yang ramah



Seperti yang telah disebutkan, Jenkins adalah proyek open source, yang ekosistemnya mencakup sejumlah besar plugin. Komunitas besar pengguna dan pengembang telah terbentuk di sekitar Jenkins, membantu mengembangkan proyek. Komunitas adalah salah satu faktor yang mendorong perkembangan Jenkins.



▍5. Ketersediaan REST API



Saat bekerja dengan Jenkins, Anda dapat menggunakan REST API, yang memperluas kapabilitas sistem. API untuk akses jarak jauh ke sistem disajikan dalam tiga versi: XML, JSON dengan dukungan JSONP, Python. Berikut adalah halaman dokumentasi yang mengungkapkan detail cara bekerja dengan Jenkins REST API.



▍6. Dukungan tugas paralel



Jenkins mendukung paralelisasi tugas DevOps. Ini dapat dengan mudah diintegrasikan dengan alat terkait dan diberi tahu tentang kemajuan tugas. Menguji kode Anda dapat dipercepat dengan mengatur build paralel dari project menggunakan mesin virtual yang berbeda.



▍7. Dukungan untuk bekerja di lingkungan terdistribusi



Jenkins memungkinkan Anda mengatur build terdistribusi menggunakan banyak komputer. Fitur ini dapat diterapkan dalam proyek besar dan menggunakan skema kerja, yang menurutnya ada satu server Jenkins utama dan beberapa mesin budak. Mesin budak juga dapat digunakan dalam situasi di mana Anda perlu mengatur pengujian proyek di lingkungan yang berbeda. Kemampuan ini membedakan Jenkins dari proyek serupa lainnya.



Memperkenalkan GitLab





GitLab CI / CD adalah salah satu alat terbaru dan paling disukai oleh para insinyur DevOps. Alat open source gratis ini dibangun ke dalam sistem kontrol versi GitLab. Platform GitLab memiliki versi komunitas, mendukung pengelolaan repositori, alat untuk melacak masalah, mengatur tinjauan kode, mekanisme yang difokuskan pada pembuatan dokumentasi. Perusahaan dapat menginstal GitLab secara lokal, menautkannya ke Active Directory dan server LDAP untuk otorisasi dan otentikasi pengguna yang aman.



Berikut adalah tutorial video untuk membantu Anda mempelajari cara membuat pipeline CI / CD menggunakan fitur GitLab CI / CD.



GitLab CI / CD awalnya dirilis sebagai proyek mandiri, tetapi pada 2015 toolkit ini diintegrasikan ke dalam GitLab 8.0. Server CI / CD GitLab terpisah dapat mendukung lebih dari 25.000 pengguna. Berdasarkan server tersebut, Anda dapat membuat sistem yang sangat tersedia.



CI / CD GitLab dan proyek utama GitLab ditulis dalam Ruby dan Go. Mereka dirilis di bawah lisensi MIT. GitLab CI / CD, selain kapabilitas alat CI / CD yang biasa, mendukung kapabilitas tambahan, seperti penjadwalan kerja.



Sangat mudah untuk mengintegrasikan GitLab CI / CD ke dalam sebuah proyek. Saat menggunakan GitLab CI / CD, proses pemrosesan kode proyek dibagi menjadi beberapa tahapan, yang masing-masing dapat terdiri dari beberapa tugas yang dilakukan dalam urutan tertentu. Tasks cocok untuk penyesuaian.



Tugas dapat berjalan secara paralel. Setelah menyiapkan urutan tahapan dan tugas, pipeline CI / CD siap digunakan. Kemajuannya dapat dipantau dengan memantau status tugas. Hasilnya, menggunakan GitLab CI / CD sangat nyaman, mungkin lebih nyaman daripada alat serupa lainnya.



Fitur GitLab CI / CD dan GitLab



GitLab CI / CD adalah salah satu alat DevOps paling populer. Proyek ini dibedakan oleh dokumentasi berkualitas tinggi, kemampuannya mudah dan nyaman digunakan. Jika Anda belum terbiasa dengan GitLab CI / CD, daftar fitur alat ini akan memberi Anda gambaran umum tentang apa yang diharapkan darinya. Perlu dicatat bahwa banyak dari fitur ini terkait dengan platform GitLab itu sendiri, di mana CI / CD GitLab terintegrasi.



▍1. Kepopuleran



GitLab CI / CD adalah alat yang relatif baru yang telah digunakan secara luas. CI / CD GitLab secara bertahap menjadi alat CI / CD yang sangat populer yang digunakan untuk pengujian dan penerapan perangkat lunak otomatis. Mudah untuk disesuaikan. Ini juga merupakan alat CI / CD gratis yang dibangun ke dalam platform GitLab.



▍2. Halaman GitLab dan dukungan Jekyll



Jekyll adalah generator situs statis yang dapat digunakan dalam sistem Halaman GitLab untuk membuat situs berdasarkan repositori GitLab. Sistem mengambil bahan sumber dan menghasilkan situs statis siap pakai berdasarkan bahan tersebut. Anda dapat mengontrol tampilan dan nuansa situs ini dengan mengedit file yang _config.ymldigunakan oleh Jekyll.



▍3. Kemampuan perencanaan proyek



Kemampuan untuk merencanakan tonggak proyek membuatnya lebih mudah untuk melacak masalah dan kelompok masalah. Ini memungkinkan Anda untuk mengelola organisasi pekerjaan pada proyek, merencanakan pelaksanaannya untuk tanggal tertentu.



▍4. Penskalaan otomatis pelari CI



Berkat penskalaan otomatis pelari yang bertanggung jawab untuk melakukan tugas tertentu, Anda dapat secara serius menghemat biaya untuk menyewa kapasitas server. Ini sangat penting, terutama jika menyangkut lingkungan tempat proyek diuji secara paralel. Ini juga penting untuk proyek besar dengan banyak repositori.



▍5. Alat pelacak masalah



Kemampuan pelacakan masalah yang kuat dari GitLab telah menyebabkan platform ini digunakan oleh banyak proyek sumber terbuka. GitLab CI / CD memungkinkan pengujian paralel untuk berbagai cabang kode. Akan lebih mudah untuk menganalisis hasil pengujian di antarmuka sistem. Hal ini membuat CI / CD GitLab berbeda dari Jenkins.



▍6. Membatasi akses ke repositori



Platform GitLab mendukung pembatasan akses ke repositori. Misalnya, mereka yang berkolaborasi dalam sebuah proyek dalam repositori dapat diberikan hak yang sesuai dengan peran mereka. Ini terutama berlaku untuk proyek perusahaan.



▍7. Dukungan komunitas aktif



Komunitas aktif telah berkembang di sekitar GitLab, yang berkontribusi pada pengembangan platform ini dan alatnya, khususnya - GitLab CI / CD. Integrasi mendalam dari GitLab CI / CD dan GitLab, antara lain, memudahkan untuk menemukan jawaban atas pertanyaan yang muncul saat bekerja dengan GitLab CI / CD.



▍8. Dukungan untuk bekerja dengan berbagai sistem kontrol versi



GitLab CI / CD adalah sistem yang dapat bekerja tidak hanya dengan kode yang ditempatkan di repositori GitLab. Misalnya, kode dapat disimpan di repositori GitHub, dan pipeline CI / CD dapat diatur melalui GitLab menggunakan GitLab CI / CD.



Jenkins vs GitLab CI / CD perbandingan



Jenkins dan GitLab CI / CD adalah alat yang sangat bagus, yang masing-masing mampu membuat pipeline CI / CD berfungsi dengan baik. Tetapi, jika Anda membandingkannya, ternyata mereka, meskipun dalam banyak hal serupa, berbeda satu sama lain dalam beberapa hal.

Ciri Jenkins GitLab CI/CD
. , β€” GitLab.
. .
. .
β€” . .
CI/CD- , Jenkins Pipeline. .
. .
1000 . GitLab.
API API. API .
JavaScript . .
(Slack, GitHub). Banyak alat untuk integrasi dengan sistem pihak ketiga, khususnya - dengan GitHub dan Kubernetes.
Kontrol kualitas kode Didukung - dengan plugin SonarQube dan plugin lainnya. Didukung.


Perbedaan antara Jenkins dan GitLab CI / CD



Setelah menjelaskan dan membandingkan Jenkins dan GitLab CI / CD, mari kita fokus pada perbedaan antara alat DevOps ini. Mengetahui tentang perbedaan-perbedaan ini akan membantu untuk memahami mereka yang lebih menyukai salah satu alat ini daripada yang lain.



  • CI / CD GitLab dapat sepenuhnya mengontrol repositori Git. Kita berbicara tentang mengelola cabang repositori dan beberapa fitur lainnya. Tetapi Jenkins, meskipun tahu bagaimana bekerja dengan repositori, tidak memberikan tingkat kontrol yang sama atas mereka seperti GitLab CI / CD.
  • Jenkins adalah proyek open source gratis. Siapa pun yang memilihnya membuka secara mandiri. Dan GitLab CI / CD disertakan dalam platform GitLab, ini adalah solusi yang siap pakai.
  • GitLab CI / CD mendukung manajemen tugas tingkat proyek tingkat lanjut. Sisi Jenkins ini kurang berkembang.


Jenkins dan GitLab CI / CD: kekuatan dan kelemahan



Sekarang, Anda sudah memiliki gambaran tentang Jenkins dan GitLab CI / CD. Sekarang, agar Anda lebih mengenal alat-alat ini, mari kita lihat kekuatan dan kelemahannya. Kami berasumsi bahwa Anda telah membuat keputusan tentang alat mana yang Anda butuhkan. Semoga bagian ini memungkinkan Anda menguji diri sendiri.



▍ Kekuatan Jenkins



  • Sejumlah besar plugin.
  • Kontrol penuh atas pemasangan alat.
  • Debugging yang mudah dari pelari.
  • Konfigurasi node yang mudah.
  • Penerapan kode yang mudah.
  • Sistem manajemen kredensial yang sangat baik.
  • Fleksibilitas dan keserbagunaan.
  • Dukungan untuk berbagai bahasa pemrograman.
  • Sistemnya intuitif.


▍Kelemahan Jenkins



  • .
  • Jenkins , , .
  • CI/CD-.


▍ GitLab CI/CD



  • Docker.
  • .
  • , CI/CD-.
  • .
  • .
  • .
  • .
  • .


▍ GitLab CI/CD



  • / .
  • .
  • CI/CD- .




Baik CI / CD Jenkins dan GitLab memiliki kekuatan dan kelemahan. Jawaban atas pertanyaan tentang apa yang harus dipilih tergantung pada kebutuhan dan karakteristik proyek tertentu. Setiap alat CI / CD yang ditinjau hari ini berbeda dalam kekhasan tertentu, meskipun alat ini telah dibuat untuk memecahkan masalah yang sama. Karena itu, Jenkins adalah alat yang berdiri sendiri, sementara GitLab CI / CD adalah bagian dari platform kolaborasi kode.



Saat memilih sistem CI / CD, selain kemampuannya, perlu juga memperhitungkan biaya yang mungkin terkait dengannya, dan apa yang biasa dikerjakan oleh teknisi DevOps yang mendukung proyek.



Alat CI / CD apa yang Anda gunakan?










All Articles