Patempuran Jenkins sareng GitLab CI / CD

Dina dékade panungtungan, kamajuan signifikan geus dijieun dina ngembangkeun parabot pikeun integrasi kontinyu (Continuous Integration, CI) jeung deployment kontinyu (Continuous Delivery, CD). Ngembangkeun téknologi pikeun ngahijikeun pamekaran sareng operasi parangkat lunak (Operasi Pangembangan, DevOps) parantos nyababkeun paningkatan gancang dina paménta alat CI / CD. Solusi anu aya terus ditingkatkeun, nyobian nuturkeun jaman, versi énggalna dileupaskeun, dina dunya parangkat lunak jaminan kualitas (Quality Assurance, QA), seueur produk énggal anu terus-terusan muncul. Kalayan kabeungharan pilihan sapertos kitu, milih alat anu leres sanés tugas anu gampang.

Patempuran Jenkins sareng GitLab CI / CD

Di antara sadaya alat CI / CD anu aya, aya dua proyék anu pasti patut diperhatoskeun ka jalma anu milari hal ti daérah ieu. Urang ngobrol ngeunaan Jenkins sareng alat GitLab CI / CD, anu mangrupikeun bagian tina platform GitLab. Jenkins boga leuwih ti 16000 béntang dina GitHub. Repositori GitLab on gitlab.com ngoleksi sakedik deui 2000 béntang. Upami urang ngabandingkeun popularitas repositori, tétéla yén Jenkins nyetak béntang 8 kali langkung seueur tibatan platform, anu kalebet GitLab CI / CD. Tapi nalika milih alat CI / CD, ieu jauh tina hiji-hijina indikator anu anjeun kedah perhatosan. Aya seueur anu sanés, sareng ieu ngécéskeun kunaon dina seueur babandingan, Jenkins sareng GitLab CI / CD caket pisan.

Candak, contona, data tina platform G2, anu ngumpulkeun ulasan ngeunaan rupa-rupa produk sareng rating anu dipasihkeun ku pangguna. Di dieu nyaeta rating rata Jenkins, dumasar kana 288 ulasan, mangrupa 4,3 béntang. oh oh GitLab aya 270 ulasan, rating rata pikeun alat ieu 4,4 béntang. Kami moal salah nyarios yén Jenkins sareng GitLab CI / CD saling bersaing dina istilah anu sami. Éta pikaresepeun pikeun dicatet yén proyék Jenkins muncul dina 2011 sareng ti saprak éta parantos janten alat paporit pikeun panguji. Tapi dina waktos anu sami, proyék GitLab CI / CD, diluncurkeun dina 2014, parantos nyandak posisina, luhur pisan, hatur nuhun kana fitur canggih anu ditawarkeun ku platform ieu.

Upami urang nyarioskeun popularitas Jenkins dibandingkeun sareng platform anu sami, urang dicatet yén kami, saatos nyebarkeun tulisan anu ngabandingkeun platform Travis CI sareng Jenkins, nyusun survey. 85 pamaké milu dina eta. Responden dipénta milih alat CI/CD anu paling dipikaresep. 79% milih Jenkins, 5% milih Travis CI, sareng 16% nunjukkeun yén aranjeunna langkung milih alat anu sanés.

Patempuran Jenkins sareng GitLab CI / CD
Hasil polling

Diantara alat CI / CD anu sanés, GitLab CI / CD sering disebatkeun.

Upami anjeun serius ngeunaan DevOps, maka anjeun kedah taliti milih alat anu pas, kalayan merhatikeun spésifikasi proyék, anggaranna, sareng sarat sanésna. Pikeun ngabantosan anjeun milih pilihan anu leres, kami badé marios Jenkins sareng GitLab CI/CD. Ieu mudahan bakal mantuan Anjeun nyieun pilihan katuhu.

Bubuka keur Jenkins

Patempuran Jenkins sareng GitLab CI / CD
Jenkins mangrupakeun well-dipikawanoh, fléksibel CI / alat CD dirancang pikeun ngajadikeun otomatis loba tugas nu patali jeung proyék software. Jenkins ditulis sagemblengna dina Java sarta dirilis dina lisénsi MIT. Éta gaduh set fitur anu kuat anu ditujukeun pikeun ngajadikeun otomatis tugas anu aya hubunganana sareng ngawangun, nguji, nyebarkeun, ngahijikeun, sareng ngaleupaskeun parangkat lunak. Alat ieu tiasa dianggo dina sababaraha sistem operasi. Ieu kalebet macOS, Windows, sareng seueur distribusi Linux sapertos OpenSUSE, Ubuntu, sareng Red Hat. Aya bungkusan pamasangan pikeun Jenkins dirancang pikeun sagala rupa OS, alat ieu tiasa dipasang dina Docker sareng dina sistem naon waé anu ngagaduhan JRE (Java Runtime Environment).

Pamekar Jenkins parantos nyiptakeun proyék sanés, Jenkins X, anu dirancang pikeun damel di lingkungan Kubernetes. Jenkins X ngahijikeun Helm, server Jenkins CI/CD, Kubernetes, sareng alat-alat sanés pikeun ngawangun jalur pipa CI/CD anu nuturkeun prakték pangsaéna DevOps. Contona, GitOps dipaké di dieu.

Hiji tiasa nambihan kana perbendaharaan kaunggulan Jenkins kanyataan yén naskahna terstruktur pisan, kaharti, sareng gampang dibaca. Tim Jenkins parantos nyiptakeun sakitar 1000 plugins anu ditujukeun pikeun ngatur interaksi Jenkins sareng rupa-rupa téknologi. Skrip tiasa nganggo sistem auténtikasi, anu, contona, ngamungkinkeun anjeun nyambung ka sababaraha sistem katutup.

Salila operasi tina pipa Jenkins, anjeun tiasa niténan naon anu lumangsung dina unggal hambalan, naha sababaraha tahapan gawé geus réngsé suksés atawa henteu. Anjeun tiasa nonton sadayana ieu, kumaha oge, tanpa ngagunakeun panganteur grafis tangtu, tapi ngagunakeun kamampuhan tina terminal.

Fitur tina Jenkins

Diantara fitur Jenkins anu kawéntar nyaéta betah pangaturan, tingkat otomatisasi anu luhur pikeun sababaraha operasi, sareng dokuméntasi anu saé. Upami urang ngobrol ngeunaan ngarengsekeun tugas DevOps, maka di dieu Jenkins dianggap alat anu dipercaya pisan, anu ngagunakeun éta, sakumaha aturan, henteu aya akal pikeun ngawaskeun sacara saksama prosés ngolah proyék. Ieu sanés kasus sareng alat CI / CD sanés. Hayu urang ngobrol ngeunaan sababaraha fitur pangpentingna Jenkins.

▍1. Gratis, open source, dukungan multi-platform

Jenkins tiasa dijalankeun dina platform macOS, Windows sareng Linux. Éta ogé tiasa dianggo dina lingkungan Docker, anu ngamungkinkeun anjeun ngatur palaksanaan tugas otomatis anu seragam sareng gancang. Alat ieu ogé tiasa dijalankeun salaku servlet dina wadah anu diaktipkeun Java sapertos Apache Tomcat sareng GlassFish. Pamasangan Jenkins sacara kualitatif didokumentasikeun.

▍2. Dimekarkeun ékosistem plugin

Ékosistem plugin Jenkins katingalina langkung dewasa tibatan ékosistem plugin alat CI / CD anu sanés. Ayeuna aya langkung ti 1500 plugins pikeun Jenkins. Plugin ieu ditujukeun pikeun ngarengsekeun rupa-rupa pancén, kalayan bantosanana anjeun tiasa ngajadikeun otomatis rupa-rupa proyék. Kabeungharan plugins gratis pikeun dipilih hartosna upami anjeun nganggo Jenkins, anjeun henteu kedah mésér plugins anu mayar mahal. Aya kamungkinan integrasi Jenkins sareng seueur alat DevOps.

▍3. Gampang instalasi tur setelan

Jenkins cukup gampang dipasang sareng dikonpigurasikeun. Dina waktu nu sarua, prosés ngamutahirkeun sistem ogé pohara merenah. Di dieu, sakali deui, kedah disebatkeun kualitas dokuméntasi, sabab di dinya anjeun tiasa mendakan jawaban kana sababaraha patarosan anu aya hubunganana sareng masang sareng ngonpigurasikeun Jenkins.

▍4. komunitas ramah

Sakumaha anu parantos disebatkeun, Jenkins mangrupikeun proyék open source, ékosistem anu kalebet sajumlah ageung plugins. Komunitas ageung pangguna sareng pamekar parantos ngembangkeun sakitar Jenkins pikeun ngabantosan proyék éta. Masarakat mangrupikeun salah sahiji faktor anu ngadorong kamekaran Jenkins.

▍5. Kasadiaan REST API

Nalika damel sareng Jenkins, anjeun tiasa nganggo REST API, anu ngalegaan kamampuan sistem. API pikeun aksés jauh ka sistem dibere dina tilu versi: XML, JSON kalawan rojongan JSONP, Python. di dieu Kaca dokuméntasi ngawengku detil ngeunaan gawé bareng Jenkins REST API.

▍6. Rojongan pikeun palaksanaan paralel tugas

Jenkins ngadukung paralelisasi tugas DevOps. Éta tiasa gampang diintegrasikeun sareng alat anu relevan sareng nampi béwara ngeunaan hasil tugas. Tés kode tiasa digancangan ku ngatur ngawangun paralel proyék nganggo mesin virtual anu béda.

▍7. Rojongan pikeun digawé di lingkungan anu disebarkeun

Jenkins ngidinan Anjeun pikeun ngatur wangunan disebarkeun ngagunakeun sababaraha komputer. fitur ieu lumaku dina proyék-proyék badag sarta ngagunakeun skéma gawé, nurutkeun nu aya hiji master server Jenkins sarta sababaraha mesin budak. Mesin budak ogé tiasa dianggo dina kaayaan dimana perlu pikeun ngatur tés proyék dina lingkungan anu béda. Fitur ieu ngabédakeun Jenkins tina proyék-proyék anu sami.

Bubuka pikeun GitLab

Patempuran Jenkins sareng GitLab CI / CD
GitLab CI/CD tiasa disebat salah sahiji alat DevOps anu paling anyar sareng paling dipikacinta. Alat open source gratis ieu diwangun kana sistem kontrol versi GitLab. Platform GitLab ngagaduhan versi komunitas, éta ngadukung manajemén gudang, alat pelacak masalah, organisasi ulasan kode, mékanisme berorientasi dokuméntasi. Perusahaan tiasa masang GitLab sacara lokal, ngahubungkeun ka Active Directory sareng server LDAP pikeun otorisasi sareng auténtikasi pangguna anu aman.

di dieu Pidéo pidéo pikeun ngabantosan anjeun diajar kumaha cara nyiptakeun saluran pipa CI / CD nganggo kamampuan GitLab CI / CD.

GitLab CI/CD asalna dileupaskeun salaku proyék mandiri, tapi dina 2015 set alat ieu terpadu kana GitLab 8.0. Pangladén GitLab CI/CD tunggal tiasa ngadukung langkung ti 25000 pangguna. Dumasar kana server sapertos kitu, anjeun tiasa nyiptakeun sistem anu sayogi pisan.

GitLab CI / CD sareng proyék GitLab utama ditulis dina Ruby sareng Go. Éta dileupaskeun dina lisénsi MIT. GitLab CI / CD, sajaba fitur biasa tina CI / parabot CD, ogé ngarojong fitur tambahan patali, Contona, pikeun scheduling karya.

Ngahijikeun GitLab CI / CD kana hiji proyék gampang pisan. Nalika nganggo GitLab CI / CD, prosés pangolahan kode proyék dibagi kana sababaraha tahapan, anu masing-masing tiasa diwangun ku sababaraha pancén anu dilakukeun dina urutan anu tangtu. Tugas-tugas tiasa disaluyukeun.

Tugas tiasa dijalankeun paralel. Saatos nyetél runtuyan tahapan sareng tugas, jalur pipa CI / CD parantos siap. Anjeun tiasa ngawas kamajuanana ku ngawas status tugas. Hasilna, ngagunakeun GitLab CI / CD pohara merenah, meureun leuwih merenah ti parabot lianna nu sarupa.

Fitur GitLab CI/CD sareng GitLab

GitLab CI / CD mangrupikeun salah sahiji alat DevOps anu pang populerna. Proyék dibédakeun ku dokuméntasi kualitas luhur, fiturna gampang sareng gampang dianggo. Upami anjeun henteu acan wawuh sareng GitLab CI/CD, daptar fitur alat ieu bakal masihan anjeun gambaran umum ngeunaan naon anu anjeun ngarepkeun. Perlu dicatet yén seueur fitur ieu aya hubunganana sareng platform GitLab sorangan, dimana GitLab CI / CD terintegrasi.

▍1. Popularitas

GitLab CI / CD mangrupikeun alat anu kawilang énggal anu parantos dianggo sacara umum. GitLab CI / CD lalaunan janten alat CI / CD anu populer pisan anu dianggo pikeun nguji otomatis sareng panyebaran parangkat lunak. Saderhana pikeun nyetél. Éta ogé alat CI / CD gratis anu diwangun dina platform GitLab.

▍2. Rojongan pikeun GitLab Pages sareng Jekyll

Jekyll mangrupikeun generator situs statik anu tiasa dianggo dina sistem GitLab Pages pikeun nyiptakeun situs dumasar kana repositori GitLab. Sistem nyandak bahan sumber sareng ngahasilkeun situs statik siap-siap dumasar kana éta. Anjeun tiasa ngontrol penampilan sareng fitur situs sapertos kitu ku ngédit filena _config.yml, dipaké ku Jekyll.

▍3. Kamampuh perencanaan proyék

Hatur nuhun kana kamampuan ngarencanakeun tahapan proyék, genah ngalacak masalah sareng kelompokna ningkat. Ieu ngidinan Anjeun pikeun ngatur organisasi gawé dina proyék, rencanana palaksanaan maranéhanana dina tanggal husus.

▍4. Skala otomatis tina runners CI

Hatur nuhun kana skala otomatis pelari anu tanggung jawab pikeun ngalaksanakeun tugas khusus, anjeun tiasa ngahémat seueur biaya nyéwa kapasitas server. Ieu penting pisan, utamana lamun datang ka lingkungan dimana proyék diuji sacara paralel. Salaku tambahan, ieu penting pikeun proyék-proyék ageung anu diwangun ku sababaraha repositori.

▍5. alat tracking masalah

Kamampuhan nyukcruk masalah GitLab anu kuat parantos nyababkeun seueur proyék open source pikeun ngagunakeun platform éta. GitLab CI / CD ngamungkinkeun nguji paralel cabang kode béda. Hasil tés gampang dianalisis dina antarmuka sistem. Ieu nangtukeun GitLab CI / CD sajaba ti Jenkins.

▍6. Ngawatesan aksés ka repositories

Platform GitLab ngadukung ngawatesan aksés ka repositori. Salaku conto, jalma anu damel babarengan dina proyék dina gudang tiasa dipasihan idin anu cocog sareng kalungguhanana. Ieu hususna leres pikeun proyék perusahaan.

▍7. rojongan masarakat aktip

Komunitas aktip parantos ngembangkeun di sekitar GitLab, anu nyumbang kana pamekaran platform ieu sareng alatna, khususna, GitLab CI / CD. Integrasi jero tina GitLab CI / CD sareng GitLab, diantarana, ngagampangkeun milarian jawaban kana patarosan anu timbul nalika damel sareng GitLab CI / CD.

▍8. Rojongan pikeun sagala rupa sistem kontrol versi

GitLab CI/CD mangrupikeun sistem anu tiasa dianggo sareng langkung ti ngan ukur kode anu di-host di repositori GitLab. Salaku conto, kodeu tiasa disimpen dina gudang GitHub, sareng pipa CI / CD tiasa diatur dina dasar GitLab nganggo GitLab CI / CD.

Babandingan Jenkins jeung GitLab CI / CD

Jenkins sareng GitLab CI / CD mangrupikeun alat anu saé, duanana tiasa ngajantenkeun pipa CI / CD lancar. Tapi upami anjeun ngabandingkeunana, tétéla, sanaos sami dina sababaraha cara, aranjeunna béda-béda dina sababaraha cara.

hal nu husus
Jenkins
GitLab CI/CD

Open source atawa sumber tertutup
open source
open source

setting
Dibutuhkeun.
Henteu diperyogikeun sabab ieu mangrupikeun fitur anu diwangun dina platform GitLab.

Fitur Unik
rojongan plugin.
Integrasi jero kana sistem kontrol versi.

sokongan
Deudeuh.
Aya.

Pamasangan sareng konfigurasi
Kasusah henteu ngabalukarkeun
Kasusah henteu ngabalukarkeun

Self-deployment tina sistem
Ieu hiji-hijina cara pikeun ngagunakeun sistem.
Dirojong.

Nyieun CI/CD pipelines
Dirojong, ngagunakeun Jenkins Pipeline.
Dirojong.

Ngawaskeun kinerja aplikasi
Deudeuh.
Aya.

Osystemkosistem
Aya leuwih ti 1000 plugins.
Sistem ieu dikembangkeun dina GitLab.

API
Ngarojong sistem API canggih.
Nawarkeun hiji API pikeun integrasi deeper kana proyék.

rojongan JavaScript
Aya.
Aya.

Integrasi jeung parabot lianna
Integrasi sareng alat sareng platform sanés dirojong (Slack, GitHub).
Seueur alat pikeun integrasi sareng sistem pihak katilu, khususna - sareng GitHub sareng Kubernetes.

Kontrol kualitas kode
Dirojong - nganggo plugin SonarQube sareng plugins sanés.
Dirojong.

Beda antara Jenkins jeung GitLab CI/CD

Saatos ngajelaskeun sareng ngabandingkeun Jenkins sareng GitLab CI / CD, hayu urang fokus kana bédana antara alat DevOps ieu. Nyaho bédana ieu bakal ngabantosan anjeun ngartos jalma anu resep salah sahiji alat ieu tibatan anu sanés.

  • GitLab CI/CD tiasa pinuh ngadalikeun repositori Git. Urang ngobrol ngeunaan ngatur cabang gudang sareng sababaraha fitur anu sanés. Tapi Jenkins, sanaos tiasa dianggo sareng repositori, henteu masihan tingkat kontrol anu sami sareng GitLab CI / CD.
  • Jenkins mangrupikeun proyék open source gratis. Anu milih éta nyebarkeunana sacara mandiri. Sareng GitLab CI / CD kalebet kana platform GitLab, ieu mangrupikeun solusi turnkey.
  • GitLab CI/CD ngarojong parabot manajemén tugas canggih anu dianggo dina tingkat proyék. Sisi Jenkins ieu kirang dikembangkeun.

Jenkins sareng GitLab CI / CD: kaunggulan sareng kalemahan

Ayeuna anjeun gaduh sababaraha ide ngeunaan Jenkins sareng GitLab CI / CD. Ayeuna, supados anjeun langkung kenal sareng alat-alat ieu, hayu urang tingali kaunggulan sareng kalemahanana. Kami nganggap yén anjeun parantos mutuskeun alat anu anjeun peryogikeun. Muga, bagian ieu bakal ngidinan Anjeun pikeun nguji diri.

▍ Kakuatan Jenkins

  • Sajumlah ageung plugins.
  • Kadali pinuh pikeun pamasangan alat.
  • debugging basajan tina runners.
  • Setélan titik anu gampang.
  • deployment kode gampang.
  • Sistim manajemén credential pohara alus.
  • Fleksibilitas sareng versatility.
  • Rojongan pikeun sagala rupa basa programming.
  • Sistemna kaharti dina tingkat intuitif.

▍Kalemahan Jenkins

  • Plugins tiasa hésé dianggo.
  • Nalika nganggo Jenkins dina proyék-proyék alit, waktos anu diperyogikeun pikeun ngonpigurasikeunana nyalira tiasa ageung ageung.
  • Kurangna inpormasi analitik umum dina ranté CI / CD.

▍Kakuatan GitLab CI/CD

  • Integrasi anu saé sareng Docker.
  • Skala basajan tina runners.
  • Palaksanaan paralel tugas anu bagian tina tahapan pipa CI / CD.
  • Ngagunakeun modél grafik asiklik diarahkeun nalika nyetel hubungan tugas.
  • Tingkat skalabilitas anu luhur kusabab kamungkinan palaksanaan paralel para pelari.
  • Gampang nambahkeun tugas.
  • Resolusi konflik basajan.
  • Sistim kaamanan dipercaya.

▍Kalemahan GitLab CI/CD

  • Pikeun unggal tugas, anjeun kedah ngajelaskeun sareng unggah / unduh artefak.
  • Anjeun teu tiasa nguji hasil ngahijikeun cabang sateuacan aranjeunna leres-leres dihijikeun.
  • Nalika ngajéntrékeun tahapan pipa CI / CD, éta henteu acan tiasa milih tahapan individu dina éta.

hasil

Duanana Jenkins sareng GitLab CI / CD gaduh kaunggulan sareng kalemahan. Jawaban kana sual naon milih gumantung kana kabutuhan jeung ciri tina hiji proyék husus. Unggal parabot CI / CD reviewed kiwari boga fitur nu tangtu, sanajan parabot ieu dijieun pikeun ngajawab masalah anu sarua. Dina waktos anu sami, Jenkins mangrupikeun alat mandiri, sareng GitLab CI / CD mangrupikeun bagian tina platform anu dirancang pikeun kolaborasi dina kode.

Nalika milih sistem CI / CD, salian kamampuanna, éta patut tumut kana biaya anu aya hubunganana sareng éta, sareng naon persisna insinyur DevOps anu ngadukung proyék éta biasa dianggo.

Alat CI/CD naon anu anjeun anggo?

Patempuran Jenkins sareng GitLab CI / CD

Patempuran Jenkins sareng GitLab CI / CD

sumber: www.habr.com

Tambahkeun komentar