Dalam dekade terakhir, kemajuan signifikan telah dibuat dalam pengembangan alat untuk integrasi berkelanjutan (Integrasi Berkelanjutan, CI) dan penerapan berkelanjutan (Pengiriman Berkelanjutan, CD). Perkembangan teknologi untuk mengintegrasikan pengembangan dan operasi perangkat lunak (Development Operations, DevOps) telah menyebabkan peningkatan pesat dalam permintaan alat CI / CD. Solusi yang ada terus ditingkatkan, berusaha mengikuti perkembangan zaman, versi barunya dirilis, di dunia perangkat lunak penjaminan mutu (Quality Assurance, QA), banyak produk baru terus bermunculan. Dengan banyaknya pilihan, memilih alat yang tepat bukanlah tugas yang mudah.
Di antara semua alat CI / CD yang ada, ada dua proyek yang pasti patut diperhatikan seseorang yang mencari sesuatu dari area ini. Kita berbicara tentang Jenkins dan alat GitLab CI / CD, yang merupakan bagian dari platform GitLab. Jenkins memiliki lebih dari
Ambil, misalnya, data dari platform G2, yang mengumpulkan ulasan dari berbagai macam produk dan peringkat yang diberikan pengguna. Berikut adalah peringkat rata-rata
Jika kami berbicara tentang popularitas Jenkins dibandingkan dengan platform serupa lainnya, kami perhatikan bahwa kami, setelah menerbitkan artikel yang membandingkan platform Travis CI dan Jenkins, mengadakan survei. 85 pengguna berpartisipasi di dalamnya. Responden diminta untuk memilih alat CI/CD yang paling mereka sukai. 79% memilih Jenkins, 5% memilih Travis CI, dan 16% mengindikasikan bahwa mereka lebih menyukai alat lain.
Hasil polling
Di antara alat CI/CD lainnya, GitLab CI/CD paling sering disebutkan.
Jika Anda serius dengan 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 meninjau Jenkins dan GitLab CI/CD. Ini mudah-mudahan akan membantu Anda membuat pilihan yang tepat.
Pengantar Jenkins
Pengembang Jenkins telah membuat proyek lain, Jenkins X, yang dirancang untuk bekerja di lingkungan Kubernetes. Jenkins X mengintegrasikan Helm, server Jenkins CI/CD, Kubernetes, dan alat lainnya untuk membangun pipeline CI/CD yang mengikuti praktik terbaik DevOps. Misalnya, GitOps digunakan di sini.
Seseorang dapat menambah perbendaharaan keuntungan Jenkins 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 macam teknologi. Skrip dapat menggunakan sistem autentikasi, yang, misalnya, memungkinkan Anda terhubung ke berbagai sistem tertutup.
Selama pengoperasian pipa Jenkins, Anda dapat mengamati apa yang terjadi pada setiap langkah, apakah tahapan pekerjaan tertentu berhasil diselesaikan atau tidak. Namun, Anda dapat menonton semua ini tanpa menggunakan antarmuka grafis tertentu, tetapi menggunakan kemampuan terminal.
Fitur Jenkins
Di antara fitur Jenkins yang terkenal adalah kemudahan penyiapan, otomatisasi tingkat tinggi untuk berbagai operasi, dan dokumentasi yang sangat baik. Jika kita berbicara tentang menyelesaikan tugas DevOps, maka di sini Jenkins dianggap sebagai alat yang sangat andal, yang biasanya digunakan, tidak masuk akal untuk memantau dengan cermat seluruh proses pemrosesan proyek. Ini tidak terjadi pada alat CI/CD lainnya. Mari kita bicara tentang beberapa fitur Jenkins yang paling penting.
▍1. Gratis, open source, dukungan multi-platform
Jenkins dapat berjalan di platform macOS, Windows, dan Linux. Itu juga dapat berfungsi di lingkungan Docker, yang memungkinkan Anda mengatur pelaksanaan tugas otomatis yang seragam dan cepat. Alat ini juga dapat dijalankan sebagai servlet dalam wadah yang mendukung Java seperti Apache Tomcat dan GlassFish. Pemasangan Jenkins secara kualitatif
▍2. Ekosistem plugin yang dikembangkan
Ekosistem plugin Jenkins tampaknya jauh lebih matang daripada ekosistem plugin alat CI/CD lainnya. Saat ini ada lebih dari 1500 plugin untuk Jenkins. Plugin ini ditujukan untuk menyelesaikan berbagai tugas, dengan bantuannya Anda dapat mengotomatiskan berbagai proyek. Banyaknya pilihan plugin gratis berarti jika Anda menggunakan Jenkins, Anda tidak perlu membeli plugin berbayar yang mahal. Ada kemungkinan
▍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 terkait 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 mengembangkan Jenkins untuk membantu mengembangkan proyek. Komunitas merupakan salah satu faktor yang mendorong perkembangan Jenkins.
▍5. Ketersediaan REST API
Saat bekerja dengan Jenkins, Anda dapat menggunakan REST API, yang memperluas kemampuan sistem. API untuk akses jarak jauh ke sistem disajikan dalam tiga versi: XML, JSON dengan dukungan JSONP, Python.
▍6. Dukungan untuk pelaksanaan tugas secara paralel
Jenkins mendukung paralelisasi tugas DevOps. Itu dapat dengan mudah diintegrasikan dengan alat yang relevan dan menerima pemberitahuan tentang hasil tugas. Pengujian kode dapat dipercepat dengan mengatur pembangunan paralel proyek menggunakan mesin virtual yang berbeda.
▍7. Dukungan untuk bekerja di lingkungan terdistribusi
Jenkins memungkinkan Anda mengatur bangunan terdistribusi menggunakan banyak komputer. Fitur ini berlaku dalam proyek besar dan menggunakan skema kerja, yang menurutnya ada satu server master Jenkins dan beberapa mesin budak. Mesin budak juga dapat digunakan dalam situasi di mana diperlukan untuk mengatur pengujian proyek di lingkungan yang berbeda. Fitur-fitur ini membedakan Jenkins dari proyek serupa lainnya.
Pengantar GitLab
GitLab CI/CD awalnya dirilis sebagai proyek mandiri, tetapi pada tahun 2015 seperangkat alat ini diintegrasikan ke dalam GitLab 8.0. Satu server GitLab CI/CD dapat mendukung lebih dari 25000 pengguna. Berdasarkan server tersebut, Anda dapat membuat sistem yang sangat tersedia.
GitLab CI/CD dan proyek GitLab utama ditulis dalam Ruby dan Go. Mereka dirilis di bawah lisensi MIT. GitLab CI/CD, selain fitur biasa dari alat CI/CD, juga mendukung fitur tambahan terkait, misalnya penjadwalan kerja.
Mengintegrasikan GitLab CI/CD ke dalam sebuah proyek sangatlah mudah. 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. Tugas dapat disesuaikan.
Tugas dapat berjalan secara paralel. Setelah menyiapkan urutan tahapan dan tugas, pipeline CI/CD siap digunakan. Anda dapat memantau kemajuannya dengan memantau status tugas. Akibatnya, 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, fitur-fiturnya mudah dan nyaman digunakan. Jika Anda belum terbiasa dengan GitLab CI/CD, daftar fitur alat berikut ini akan memberi Anda gambaran umum tentang apa yang dapat Anda harapkan darinya. Perlu dicatat bahwa banyak dari fitur ini terkait dengan platform GitLab itu sendiri, di mana GitLab CI / CD terintegrasi.
▍1. Kepopuleran
GitLab CI/CD adalah alat yang relatif baru yang telah digunakan secara luas. GitLab CI/CD perlahan menjadi alat CI/CD yang sangat populer yang digunakan untuk pengujian otomatis dan penyebaran perangkat lunak. Sederhana untuk menyiapkannya. Ini juga merupakan alat CI/CD gratis yang dibangun di dalam platform GitLab.
▍2. Dukungan untuk Halaman GitLab dan 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 fitur situs tersebut dengan mengedit file _config.yml
, digunakan oleh Jekyll.
▍3. Kemampuan perencanaan proyek
Berkat kemampuan merencanakan tahapan proyek, kemudahan pelacakan masalah dan kelompoknya meningkat. Ini memungkinkan Anda untuk mengelola organisasi pekerjaan pada proyek, merencanakan implementasinya pada tanggal tertentu.
▍4. Penskalaan otomatis pelari CI
Berkat penskalaan otomatis pelari yang bertanggung jawab untuk melakukan tugas tertentu, Anda dapat menghemat banyak biaya untuk menyewa kapasitas server. Ini sangat penting, terutama jika berkaitan dengan lingkungan tempat proyek diuji secara paralel. Selain itu, ini penting untuk proyek besar yang terdiri dari beberapa repositori.
▍5. Alat pelacakan masalah
Kemampuan pelacakan masalah GitLab yang kuat telah membuat banyak proyek sumber terbuka menggunakan platform ini. GitLab CI/CD memungkinkan pengujian paralel dari berbagai cabang kode. Hasil pengujian mudah dianalisis di antarmuka sistem. Ini membedakan GitLab CI/CD dari Jenkins.
▍6. Membatasi akses ke repositori
Platform GitLab mendukung pembatasan akses ke repositori. Misalnya, mereka yang berkolaborasi dalam proyek di repositori dapat diberikan izin 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 antara GitLab CI/CD dan GitLab memudahkan untuk menemukan jawaban atas pertanyaan yang muncul saat bekerja dengan GitLab CI/CD.
▍8. Dukungan untuk berbagai sistem kontrol versi
GitLab CI/CD adalah sistem yang dapat bekerja dengan lebih dari sekadar kode yang dihosting di repositori GitLab. Misalnya, kode dapat disimpan dalam repositori GitHub, dan pipeline CI/CD dapat diatur berdasarkan GitLab menggunakan GitLab CI/CD.
Perbandingan Jenkins dan GitLab CI/CD
Jenkins dan GitLab CI/CD adalah alat yang sangat bagus, keduanya mampu membuat pipa CI/CD berjalan lancar. Namun jika kita bandingkan, ternyata meski mirip dalam banyak hal, namun berbeda satu sama lain dalam beberapa hal.
Karakterisasi
Jenkins
GitLab CI / CD
Sumber terbuka atau sumber tertutup
sumber terbuka
sumber terbuka
Instalasi
Yg dibutuhkan.
Tidak diperlukan karena ini adalah fitur bawaan dari platform GitLab.
Fitur unik
Dukungan plugin.
Integrasi mendalam ke dalam sistem kontrol versi.
Dukungan
Hilang.
Tersedia.
Instalasi dan konfigurasi
Kesulitan tidak menyebabkan
Kesulitan tidak menyebabkan
Penerapan sistem secara mandiri
Ini adalah satu-satunya cara untuk menggunakan sistem.
Didukung.
Membuat pipeline CI/CD
Didukung, menggunakan Jenkins Pipeline.
Didukung.
Pemantauan kinerja aplikasi
Hilang.
Tersedia.
Ekosistem
Ada lebih dari 1000 plugin.
Sistem sedang dikembangkan dalam GitLab.
API
Mendukung sistem API lanjutan.
Menawarkan API untuk integrasi yang lebih dalam ke dalam proyek.
dukungan JavaScript
Tersedia.
Tersedia.
Integrasi dengan alat lain
Integrasi dengan alat dan platform lain didukung (Slack, GitHub).
Banyak alat untuk integrasi dengan sistem pihak ketiga, khususnya - dengan GitHub dan Kubernetes.
Kontrol kualitas kode
Didukung - menggunakan plugin SonarQube dan plugin lainnya.
Didukung.
Perbedaan antara Jenkins dan GitLab CI/CD
Setelah mendeskripsikan dan membandingkan Jenkins dan GitLab CI/CD, mari fokus pada perbedaan antara alat DevOps ini. Mengetahui perbedaan-perbedaan ini akan membantu Anda memahami mereka yang lebih menyukai salah satu dari alat-alat ini daripada yang lain.
- GitLab CI/CD dapat sepenuhnya mengontrol repositori Git. Kami berbicara tentang mengelola cabang repositori dan beberapa fitur lainnya. Tetapi Jenkins, meskipun dapat bekerja dengan repositori, tidak memberikan tingkat kontrol yang sama seperti GitLab CI / CD.
- Jenkins adalah proyek sumber terbuka gratis. Orang yang memilihnya menyebarkannya secara mandiri. Dan GitLab CI / CD termasuk dalam platform GitLab, ini adalah solusi turnkey.
- GitLab CI/CD mendukung alat manajemen tugas tingkat lanjut yang bekerja di tingkat proyek. Sisi Jenkins ini kurang berkembang.
Jenkins dan GitLab CI/CD: kekuatan dan kelemahan
Sekarang Anda memiliki beberapa gagasan 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 memutuskan alat mana yang Anda butuhkan. Mudah-mudahan, bagian ini akan memungkinkan Anda untuk menguji diri sendiri.
▍Kekuatan Jenkins
- Sejumlah besar plugin.
- Kontrol penuh atas pemasangan alat.
- Debugging pelari sederhana.
- Pengaturan simpul yang mudah.
- Penerapan kode yang mudah.
- Sistem manajemen kredensial yang sangat baik.
- Fleksibilitas dan fleksibilitas.
- Dukungan untuk berbagai bahasa pemrograman.
- Sistem ini dapat dipahami pada tingkat intuitif.
▍Kelemahan Jenkins
- Plugin bisa jadi rumit untuk digunakan.
- Saat menggunakan Jenkins dalam proyek kecil, waktu yang diperlukan untuk mengonfigurasinya sendiri bisa sangat besar.
- Kurangnya informasi analitik umum pada rantai CI/CD.
▍Kekuatan GitLab CI/CD
- Integrasi yang baik dengan Docker.
- Penskalaan pelari sederhana.
- Eksekusi tugas paralel yang merupakan bagian dari tahapan pipeline CI/CD.
- Menggunakan model grafik asiklik terarah saat mengatur hubungan tugas.
- Tingkat skalabilitas yang tinggi karena kemungkinan eksekusi paralel pelari.
- Kemudahan menambahkan tugas.
- Resolusi konflik sederhana.
- Sistem keamanan yang handal.
▍Kelemahan GitLab CI/CD
- Untuk setiap tugas, Anda perlu mendeskripsikan dan mengunggah / mengunduh artefak.
- Anda tidak dapat menguji hasil penggabungan cabang sebelum benar-benar digabungkan.
- Saat mendeskripsikan tahapan pipa CI / CD, belum mungkin untuk memilih tahapan individual di dalamnya.
Hasil
Jenkins dan GitLab CI/CD memiliki kekuatan dan kelemahan. Jawaban atas pertanyaan tentang apa yang harus dipilih bergantung pada kebutuhan dan karakteristik proyek tertentu. Setiap alat CI/CD yang diulas hari ini memiliki fitur tertentu, meskipun alat ini dibuat untuk memecahkan masalah yang sama. Pada saat yang sama, Jenkins adalah alat mandiri, dan GitLab CI / CD adalah bagian dari platform yang dirancang untuk berkolaborasi dalam kode.
Saat memilih sistem CI / CD, selain kemampuannya, ada baiknya mempertimbangkan biaya yang mungkin terkait dengannya, dan apa sebenarnya yang digunakan oleh para insinyur DevOps yang mendukung proyek tersebut.
Alat CI/CD apa yang Anda gunakan?
Sumber: www.habr.com