Pertempuran Jenkins dan GitLab CI/CD

Dalam dekad yang lalu, kemajuan ketara telah dibuat dalam pembangunan alatan untuk penyepaduan berterusan (Continuous Integration, CI) dan penggunaan berterusan (Continuous Delivery, CD). Perkembangan teknologi untuk menyepadukan pembangunan dan operasi perisian (Operasi Pembangunan, DevOps) telah membawa kepada peningkatan pesat dalam permintaan untuk alatan CI / CD. Penyelesaian sedia ada sentiasa diperbaiki, cuba mengikuti perkembangan zaman, versi baharu mereka dikeluarkan, dalam dunia perisian jaminan kualiti (Quality Assurance, QA), banyak produk baharu sentiasa muncul. Dengan begitu banyak pilihan, memilih alat yang betul bukanlah satu tugas yang mudah.

Pertempuran Jenkins dan GitLab CI/CD

Di antara semua alat CI / CD sedia ada, terdapat dua projek yang pastinya patut diberi perhatian kepada seseorang yang sedang mencari sesuatu dari kawasan ini. Kita bercakap tentang Jenkins dan alat GitLab CI / CD, yang merupakan sebahagian daripada platform GitLab. Jenkins mempunyai lebih daripada 16000 bintang di GitHub. Repositori GitLab di gitlab.com menjaringkan lebih sedikit 2000 bintang. Jika kita membandingkan populariti repositori, ternyata Jenkins menjaringkan 8 kali lebih banyak bintang daripada platform, yang termasuk GitLab CI / CD. Tetapi apabila memilih alat CI / CD, ini jauh dari satu-satunya penunjuk yang perlu anda perhatikan. Terdapat banyak lagi, dan ini menjelaskan mengapa dalam banyak perbandingan, Jenkins dan GitLab CI / CD sangat rapat antara satu sama lain.

Ambil, sebagai contoh, data daripada platform G2, yang mengumpulkan ulasan tentang pelbagai jenis produk dan penilaian yang diberikan pengguna kepada mereka. Berikut adalah penilaian purata Jenkins, berdasarkan 288 ulasan, ialah 4,3 bintang. Oh oh GitLab terdapat 270 ulasan, penilaian purata untuk alat ini ialah 4,4 bintang. Kami tidak akan tersilap mengatakan bahawa Jenkins dan GitLab CI / CD bersaing antara satu sama lain dengan syarat yang sama. Adalah menarik untuk diperhatikan bahawa projek Jenkins muncul pada tahun 2011 dan sejak itu ia telah menjadi alat kegemaran untuk penguji. Tetapi pada masa yang sama, projek GitLab CI / CD, yang dilancarkan pada 2014, telah mengambil kedudukannya, sangat tinggi, terima kasih kepada ciri canggih yang ditawarkan oleh platform ini.

Jika kita bercakap tentang populariti Jenkins berbanding dengan platform lain yang serupa, kami perhatikan bahawa kami, setelah menerbitkan artikel membandingkan platform Travis CI dan Jenkins, mengatur tinjauan. 85 pengguna menyertainya. Responden diminta memilih alat CI/CD yang paling mereka sukai. 79% memilih Jenkins, 5% memilih Travis CI, dan 16% menunjukkan bahawa mereka lebih suka alat lain.

Pertempuran Jenkins dan GitLab CI/CD
Keputusan tinjauan pendapat

Antara alat CI/CD lain, GitLab CI/CD paling kerap disebut.

Jika anda serius tentang DevOps, maka anda perlu berhati-hati memilih alat yang sesuai, dengan mengambil kira spesifikasi projek, belanjawannya dan keperluan lain. Untuk membantu anda membuat pilihan yang tepat, kami akan menyemak Jenkins dan GitLab CI/CD. Ini diharapkan dapat membantu anda membuat pilihan yang tepat.

Pengenalan kepada Jenkins

Pertempuran Jenkins dan GitLab CI/CD
Jenkins ialah alat CI/CD yang terkenal dan fleksibel yang direka untuk mengautomasikan banyak tugas yang berkaitan dengan projek perisian. Jenkins ditulis sepenuhnya dalam Java dan dikeluarkan di bawah lesen MIT. Ia mempunyai set ciri yang berkuasa yang bertujuan untuk mengautomasikan tugas yang berkaitan dengan membina, menguji, menggunakan, menyepadukan dan mengeluarkan perisian. Alat ini boleh digunakan pada pelbagai sistem pengendalian. Ini termasuk macOS, Windows dan banyak pengedaran Linux seperti OpenSUSE, Ubuntu dan Red Hat. Terdapat pakej pemasangan untuk Jenkins yang direka untuk pelbagai OS, alat ini boleh dipasang pada Docker dan pada mana-mana sistem yang mempunyai JRE (Java Runtime Environment).

Pembangun Jenkins telah mencipta satu lagi projek, Jenkins X, yang direka untuk berfungsi dalam persekitaran Kubernetes. Jenkins X menyepadukan Helm, Jenkins CI/CD Server, Kubernetes dan alatan lain untuk membina saluran paip CI/CD yang mengikut amalan terbaik DevOps. Sebagai contoh, GitOps digunakan di sini.

Seseorang boleh menambah perbendaharaan kelebihan Jenkins fakta bahawa skripnya tersusun dengan sangat baik, boleh difahami dan mudah dibaca. Pasukan Jenkins telah mencipta kira-kira 1000 pemalam yang bertujuan untuk mengatur interaksi Jenkins dengan pelbagai jenis teknologi. Skrip boleh menggunakan sistem pengesahan, yang, sebagai contoh, membolehkan anda menyambung ke pelbagai sistem tertutup.

Semasa operasi saluran paip Jenkins, anda boleh memerhatikan apa yang berlaku pada setiap langkah, sama ada peringkat kerja tertentu telah berjaya diselesaikan atau tidak. Anda boleh menonton semua ini, bagaimanapun, tanpa menggunakan antara muka grafik tertentu, tetapi menggunakan keupayaan terminal.

Ciri-ciri Jenkins

Antara ciri Jenkins yang terkenal ialah kemudahan persediaan, tahap automasi yang tinggi bagi pelbagai operasi, dan dokumentasi yang sangat baik. Jika kita bercakap tentang menyelesaikan tugas DevOps, maka di sini Jenkins dianggap sebagai alat yang sangat boleh dipercayai, menggunakan yang, sebagai peraturan, tidak masuk akal untuk memantau dengan teliti keseluruhan proses pemprosesan projek. Ini tidak berlaku dengan alat CI/CD lain. Mari kita bincangkan tentang beberapa ciri Jenkins yang paling penting.

▍1. Percuma, sumber terbuka, sokongan berbilang platform

Jenkins boleh dijalankan pada platform macOS, Windows dan Linux. Ia juga boleh berfungsi dalam persekitaran Docker, yang membolehkan anda mengatur pelaksanaan tugas automatik yang seragam dan pantas. Alat ini juga boleh dijalankan sebagai servlet dalam bekas berdaya Java seperti Apache Tomcat dan GlassFish. Pemasangan Jenkins secara kualitatif didokumenkan.

▍2. Ekosistem pemalam yang dibangunkan

Ekosistem pemalam Jenkins nampaknya jauh lebih matang daripada ekosistem pemalam alat CI/CD lain. Pada masa ini terdapat lebih 1500 pemalam untuk Jenkins. Pemalam ini bertujuan untuk menyelesaikan pelbagai tugas, dengan bantuan mereka anda boleh mengautomasikan pelbagai projek. Banyaknya pemalam percuma untuk dipilih bermakna jika anda menggunakan Jenkins, anda tidak perlu membeli pemalam berbayar yang mahal. Ada kemungkinan integrasi Jenkins dengan banyak alatan DevOps.

▍3. Pemasangan dan persediaan yang mudah

Jenkins agak mudah untuk dipasang dan dikonfigurasikan. Pada masa yang sama, proses mengemas kini sistem juga sangat mudah. Di sini, sekali lagi, adalah bernilai menyebut kualiti dokumentasi, kerana di dalamnya anda boleh mencari jawapan kepada pelbagai soalan yang berkaitan dengan memasang dan mengkonfigurasi Jenkins.

▍4. Masyarakat yang mesra

Seperti yang telah disebutkan, Jenkins ialah projek sumber terbuka, ekosistem yang merangkumi sejumlah besar pemalam. Komuniti besar pengguna dan pembangun telah membangun di sekitar Jenkins untuk membantu membangunkan projek itu. Komuniti merupakan salah satu faktor yang mendorong perkembangan Jenkins.

▍5. Ketersediaan REST API

Semasa bekerja dengan Jenkins, anda boleh menggunakan API REST, yang memperluaskan keupayaan sistem. API untuk akses jauh kepada sistem dibentangkan dalam tiga versi: XML, JSON dengan sokongan JSONP, Python. di sini ialah Halaman dokumentasi yang merangkumi butiran tentang bekerja dengan Jenkins REST API.

▍6. Sokongan untuk pelaksanaan tugasan selari

Jenkins menyokong penyelarasan tugas DevOps. Ia boleh disepadukan dengan mudah dengan alatan yang berkaitan dan menerima pemberitahuan tentang hasil tugasan. Ujian kod boleh dipercepatkan dengan mengatur binaan selari projek menggunakan mesin maya yang berbeza.

▍7. Sokongan untuk kerja dalam persekitaran teragih

Jenkins membolehkan anda menyusun binaan yang diedarkan menggunakan berbilang komputer. Ciri ini boleh digunakan dalam projek besar dan menggunakan skema kerja, yang mengikutnya terdapat satu pelayan Jenkins induk dan beberapa mesin hamba. Mesin hamba juga boleh digunakan dalam situasi di mana perlu untuk mengatur ujian projek dalam persekitaran yang berbeza. Ciri-ciri ini membezakan Jenkins daripada projek lain yang serupa.

Pengenalan kepada GitLab

Pertempuran Jenkins dan GitLab CI/CD
GitLab CI/CD boleh dipanggil salah satu alat DevOps terbaharu dan paling disukai. Alat sumber terbuka percuma ini terbina dalam sistem kawalan versi GitLab. Platform GitLab mempunyai versi komuniti, ia menyokong pengurusan repositori, alat penjejakan isu, organisasi semakan kod, mekanisme berorientasikan dokumentasi. Syarikat boleh memasang GitLab secara setempat, memautkannya ke Active Directory dan pelayan LDAP untuk kebenaran selamat dan pengesahan pengguna.

di sini ialah Tutorial video untuk membantu anda mempelajari cara membuat saluran paip CI/CD menggunakan keupayaan CI/CD GitLab.

GitLab CI/CD pada asalnya dikeluarkan sebagai projek kendiri, tetapi pada tahun 2015 set alat ini telah disepadukan ke dalam GitLab 8.0. Satu pelayan GitLab CI/CD boleh menyokong lebih 25000 pengguna. Berdasarkan pelayan sedemikian, anda boleh mencipta sistem yang sangat tersedia.

GitLab CI/CD dan projek GitLab utama ditulis dalam Ruby dan Go. Mereka dikeluarkan di bawah lesen MIT. GitLab CI/CD, sebagai tambahan kepada ciri biasa alat CI/CD, juga menyokong ciri tambahan yang berkaitan, contohnya, untuk penjadualan kerja.

Mengintegrasikan GitLab CI/CD ke dalam projek adalah sangat mudah. Apabila menggunakan GitLab CI/CD, proses pemprosesan kod projek dibahagikan kepada beberapa peringkat, setiap satunya boleh terdiri daripada beberapa tugas yang dilakukan dalam susunan tertentu. Tugasan boleh diperhalusi.

Tugasan boleh dijalankan secara selari. Selepas menyediakan urutan peringkat dan tugasan, saluran paip CI/CD sedia untuk digunakan. Anda boleh memantau kemajuannya dengan memantau status tugas. Akibatnya, menggunakan GitLab CI / CD adalah sangat mudah, mungkin lebih mudah daripada alat lain yang serupa.

Ciri-ciri GitLab CI/CD dan GitLab

GitLab CI/CD ialah salah satu alat DevOps yang paling popular. Projek ini dibezakan oleh dokumentasi berkualiti tinggi, ciri-cirinya mudah dan mudah digunakan. Jika anda belum biasa dengan GitLab CI/CD, senarai ciri alat ini yang berikut akan memberi anda gambaran umum tentang perkara yang boleh anda harapkan daripadanya. Perlu diingatkan bahawa banyak ciri ini berkaitan dengan platform GitLab itu sendiri, di mana GitLab CI / CD disepadukan.

▍1. Populariti

GitLab CI/CD ialah alat yang agak baharu yang telah menemui penggunaan meluas. GitLab CI/CD perlahan-lahan menjadi alat CI/CD yang sangat popular digunakan untuk ujian automatik dan penggunaan perisian. Ia mudah untuk disediakan. Ia juga merupakan alat CI/CD percuma yang dibina ke dalam platform GitLab.

▍2. Sokongan untuk Halaman GitLab dan Jekyll

Jekyll ialah penjana tapak statik yang boleh digunakan dalam sistem Halaman GitLab untuk membuat tapak berdasarkan repositori GitLab. Sistem mengambil bahan sumber dan menjana tapak statik sedia dibuat berdasarkannya. Anda boleh mengawal penampilan dan ciri tapak sedemikian dengan mengedit fail _config.yml, digunakan oleh Jekyll.

▍3. Keupayaan perancangan projek

Terima kasih kepada keupayaan untuk merancang peringkat projek, kemudahan mengesan masalah dan kumpulan mereka meningkat. Ini membolehkan anda menguruskan organisasi kerja pada projek, merancang pelaksanaannya pada tarikh tertentu.

▍4. Penskalaan automatik pelari CI

Terima kasih kepada penskalaan automatik pelari yang bertanggungjawab untuk melaksanakan tugas tertentu, anda boleh menjimatkan banyak kos menyewa kapasiti pelayan. Ini sangat penting, terutamanya apabila ia melibatkan persekitaran di mana projek diuji secara selari. Di samping itu, ini penting untuk projek besar yang terdiri daripada beberapa repositori.

▍5. Alat pengesanan isu

Keupayaan penjejakan isu GitLab yang berkuasa telah menyebabkan banyak projek sumber terbuka menggunakan platform tersebut. GitLab CI/CD membenarkan ujian selari bagi cawangan kod yang berbeza. Keputusan ujian dianalisis dengan mudah dalam antara muka sistem. Ini membezakan GitLab CI/CD daripada Jenkins.

▍6. Mengehadkan akses kepada repositori

Platform GitLab menyokong pengehadan akses kepada repositori. Sebagai contoh, mereka yang bekerjasama dalam projek dalam repositori boleh diberikan kebenaran yang sesuai dengan peranan mereka. Ini terutama berlaku untuk projek korporat.

▍7. Sokongan komuniti aktif

Komuniti aktif telah dibangunkan di sekitar GitLab, yang menyumbang kepada pembangunan platform ini dan alatannya, khususnya, GitLab CI / CD. Penyepaduan mendalam GitLab CI/CD dan GitLab, antara lain, memudahkan untuk mencari jawapan kepada soalan yang timbul apabila bekerja dengan GitLab CI/CD.

▍8. Sokongan untuk pelbagai sistem kawalan versi

GitLab CI/CD ialah sistem yang boleh berfungsi dengan lebih daripada sekadar kod yang dihoskan dalam repositori GitLab. Sebagai contoh, kod boleh disimpan dalam repositori GitHub, dan saluran paip CI / CD boleh disusun berdasarkan GitLab menggunakan GitLab CI / CD.

Perbandingan Jenkins dan GitLab CI/CD

Jenkins dan GitLab CI/CD adalah alat yang sangat baik, kedua-duanya mampu menjadikan saluran paip CI/CD berjalan lancar. Tetapi jika anda membandingkannya, ternyata, walaupun mereka serupa dalam banyak cara, mereka berbeza antara satu sama lain dalam beberapa cara.

Pencirian
Jenkins
GitLab CI/CD

Sumber terbuka atau sumber tertutup
sumber terbuka
sumber terbuka

Pemasangan
Diperlukan.
Tidak diperlukan kerana ini adalah ciri terbina dalam platform GitLab.

Ciri-ciri yang unik
Sokongan pemalam.
Penyepaduan mendalam ke dalam sistem kawalan versi.

Sokongan
Sudah hilang.
Tersedia.

Pemasangan dan konfigurasi
Kesukaran tidak menyebabkan
Kesukaran tidak menyebabkan

Pengerahan kendiri sistem
Ini adalah satu-satunya cara untuk menggunakan sistem.
Disokong.

Mencipta Talian Paip CI/CD
Disokong, menggunakan Jenkins Pipeline.
Disokong.

Pemantauan prestasi aplikasi
Sudah hilang.
Tersedia.

Ekosistem
Terdapat lebih 1000 pemalam.
Sistem ini sedang dibangunkan dalam GitLab.

API
Menyokong sistem API lanjutan.
Menawarkan API untuk penyepaduan yang lebih mendalam ke dalam projek.

Sokongan JavaScript
Tersedia.
Tersedia.

Integrasi dengan alat lain
Penyepaduan dengan alat dan platform lain disokong (Slack, GitHub).
Banyak alatan untuk penyepaduan dengan sistem pihak ketiga, khususnya - dengan GitHub dan Kubernetes.

Kawalan kualiti kod
Disokong - menggunakan pemalam SonarQube dan pemalam lain.
Disokong.

Perbezaan antara Jenkins dan GitLab CI/CD

Setelah menerangkan dan membandingkan Jenkins dan GitLab CI/CD, mari fokus pada perbezaan antara alat DevOps ini. Mengetahui perbezaan ini akan membantu anda memahami mereka yang memilih salah satu alat ini berbanding yang lain.

  • GitLab CI/CD boleh mengawal sepenuhnya repositori Git. Kami bercakap tentang menguruskan cawangan repositori dan beberapa ciri lain. Tetapi Jenkins, walaupun ia boleh berfungsi dengan repositori, tidak memberikan tahap kawalan yang sama ke atasnya seperti GitLab CI / CD.
  • Jenkins ialah projek sumber terbuka percuma. Orang yang memilihnya menggunakannya secara bebas. Dan GitLab CI / CD disertakan dalam platform GitLab, ini adalah penyelesaian turnkey.
  • GitLab CI/CD menyokong alat pengurusan tugas lanjutan yang berfungsi pada peringkat projek. Bahagian Jenkins ini kurang berkembang.

Jenkins dan GitLab CI/CD: kekuatan dan kelemahan

Kini anda mempunyai sedikit idea tentang Jenkins dan GitLab CI/CD. Sekarang, untuk membiasakan anda dengan lebih dekat dengan alatan ini, mari kita lihat kekuatan dan kelemahannya. Kami menganggap bahawa anda telah memutuskan alat yang anda perlukan. Mudah-mudahan, bahagian ini akan membolehkan anda menguji diri anda.

▍Kekuatan Jenkins

  • Sebilangan besar pemalam.
  • Kawalan penuh ke atas pemasangan alat.
  • Penyahpepijatan mudah pelari.
  • Persediaan nod yang mudah.
  • Penggunaan kod yang mudah.
  • Sistem pengurusan kelayakan yang sangat baik.
  • Fleksibiliti dan serba boleh.
  • Sokongan untuk pelbagai bahasa pengaturcaraan.
  • Sistem ini boleh difahami pada tahap intuitif.

▍Kelemahan Jenkins

  • Pemalam boleh menjadi sukar untuk digunakan.
  • Apabila menggunakan Jenkins dalam projek kecil, masa yang diperlukan untuk mengkonfigurasinya sendiri boleh menjadi besar yang tidak munasabah.
  • Kekurangan maklumat analitikal umum pada rantaian CI/CD.

▍Kekuatan GitLab CI/CD

  • Penyepaduan yang baik dengan Docker.
  • Penskalaan mudah pelari.
  • Pelaksanaan tugasan selari yang merupakan sebahagian daripada peringkat saluran paip CI/CD.
  • Menggunakan model graf akiklik terarah semasa menyediakan perhubungan tugasan.
  • Tahap kebolehskalaan yang tinggi disebabkan oleh kemungkinan pelaksanaan selari pelari.
  • Kemudahan menambah tugas.
  • Penyelesaian konflik mudah.
  • Sistem keselamatan yang boleh dipercayai.

▍Kelemahan GitLab CI/CD

  • Untuk setiap tugasan, anda perlu menerangkan dan memuat naik / memuat turun artifak.
  • Anda tidak boleh menguji keputusan penggabungan cawangan sebelum ia benar-benar digabungkan.
  • Apabila menerangkan peringkat saluran paip CI / CD, masih belum mungkin untuk memilih peringkat individu di dalamnya.

Keputusan

Kedua-dua Jenkins dan GitLab CI/CD mempunyai kekuatan dan kelemahan. Jawapan kepada soalan tentang apa yang harus dipilih bergantung pada keperluan dan ciri projek tertentu. Setiap alat CI/CD yang disemak hari ini mempunyai ciri tertentu, walaupun alat ini dicipta untuk menyelesaikan masalah yang sama. Pada masa yang sama, Jenkins ialah alat kendiri, dan GitLab CI / CD ialah sebahagian daripada platform yang direka untuk bekerjasama dalam kod.

Apabila memilih sistem CI / CD, sebagai tambahan kepada keupayaannya, adalah wajar mengambil kira kos yang mungkin dikaitkan dengannya, dan apa sebenarnya yang digunakan oleh jurutera DevOps yang menyokong projek itu.

Apakah alat CI/CD yang anda gunakan?

Pertempuran Jenkins dan GitLab CI/CD

Pertempuran Jenkins dan GitLab CI/CD

Sumber: www.habr.com

Tambah komen