Batay Jenkins ak GitLab CI/CD

Nan dènye dekad la, pwogrè enpòtan yo te fèt nan devlopman zouti pou entegrasyon kontinyèl (Entegrasyon kontinyèl, CI) ak deplwaman kontinyèl (Livrezon kontinyèl, CD). Devlopman teknoloji pou entegre devlopman lojisyèl ak operasyon (Devlopman Operasyon, DevOps) te mennen nan yon ogmantasyon rapid nan demann pou zouti CI / CD. Solisyon ki deja egziste yo toujou ap amelyore, ap eseye kenbe ak fwa yo, nouvo vèsyon yo lage, nan mond lan nan lojisyèl asirans kalite (Asirans Kalite, QA), anpil nouvo pwodwi yo toujou ap parèt. Avèk tankou yon richès nan chwa, chwazi zouti nan dwa se pa yon travay fasil.

Batay Jenkins ak GitLab CI/CD

Pami tout zouti CI / CD ki deja egziste, gen de pwojè ki definitivman vo peye atansyon sou yon moun ki ap chèche yon bagay nan zòn sa a. Nou ap pale de Jenkins ak zouti GitLab CI / CD, ki se yon pati nan platfòm GitLab la. Jenkins gen plis pase 16000 zetwal sou GitHub. Repozitwa GitLab la sou gitlab.com te fè nòt yon ti kras plis 2000 zetwal. Si nou konpare popilarite nan depo yo, li sanble ke Jenkins bay nòt 8 fwa plis zetwal pase platfòm la, ki gen ladan GitLab CI / CD. Men, lè w ap chwazi yon zouti CI / CD, sa a se lwen sèlman endikatè a ke ou ta dwe peye atansyon sou. Gen anpil lòt moun, e sa eksplike poukisa nan anpil konparezon, Jenkins ak GitLab CI / CD yo trè pre youn ak lòt.

Pran, pou egzanp, done ki soti nan platfòm la G2, ki akimile revize nan yon gran varyete pwodwi ak evalyasyon yo ke itilizatè yo ba yo. Isit la se evalyasyon an mwayèn Jenkins, ki baze sou 288 revize, se 4,3 zetwal. O oh GitLab gen 270 revize, evalyasyon an mwayèn pou zouti sa a se 4,4 zetwal. Nou pa pral fè erè lè nou di Jenkins ak GitLab CI / CD konpetisyon youn ak lòt sou kondisyon egal. Li se enteresan sonje ke pwojè Jenkins la te parèt nan 2011 e depi lè sa a li te yon zouti pi renmen pou tèsteur yo. Men, an menm tan an, pwojè GitLab CI / CD, te lanse nan 2014, te pran pozisyon li, trè wo, gras a karakteristik avanse yo ofri nan platfòm sa a.

Si nou pale sou popilarite Jenkins an konparezon ak lòt tribin menm jan an, nou sonje ke nou te pibliye yon atik konpare Travis CI ak Jenkins tribin, ranje yon sondaj. 85 itilizatè te patisipe nan li. Yo te mande moun ki reponn yo pou yo chwazi zouti CI/CD yo pi renmen an. 79% te chwazi Jenkins, 5% te chwazi Travis CI, ak 16% te endike ke yo prefere lòt zouti.

Batay Jenkins ak GitLab CI/CD
Rezilta sondaj yo

Pami lòt zouti CI/CD, GitLab CI/CD te mansyone pi souvan.

Si ou serye sou DevOps, Lè sa a, ou bezwen ak anpil atansyon chwazi zouti ki apwopriye yo, pran an kont spesifik yo nan pwojè a, bidjè li yo, ak lòt kondisyon. Pou ede w fè bon chwa, nou pral revize Jenkins ak GitLab CI/CD. Sa a pral èspere ke ede w fè bon chwa.

Entwodiksyon Jenkins

Batay Jenkins ak GitLab CI/CD
Jenkins se yon zouti CI/CD byen koni, fleksib ki fèt pou otomatize anpil travay ki gen rapò ak pwojè lojisyèl. Jenkins ekri antyèman an Java epi li lage anba lisans MIT. Li gen yon seri karakteristik pwisan ki vize otomatize travay ki asosye ak bati, tès, deplwaye, entegre, ak divilge lojisyèl. Zouti sa a ka itilize sou plizyè sistèm operasyon. Men sa yo enkli macOS, Windows, ak anpil distribisyon Linux tankou OpenSUSE, Ubuntu, ak Red Hat. Gen pakè enstalasyon pou Jenkins ki fèt pou plizyè OS, zouti sa a ka enstale sou Docker ak sou nenpòt sistèm ki gen yon JRE (Java Runtime Environment).

Devlopè Jenkins yo te kreye yon lòt pwojè, Jenkins X, ki fèt pou travay nan yon anviwònman Kubernetes. Jenkins X entegre Helm, Jenkins CI/CD Server, Kubernetes, ak lòt zouti pou konstwi CI/CD tiyo ki swiv meyè pratik DevOps. Pou egzanp, GitOps yo itilize isit la.

Yon moun ka ajoute nan trezò a nan avantaj ki genyen nan Jenkins lefèt ke scripts li yo trè byen estriktire, konprann, ak fasil pou li. Ekip Jenkins la te kreye apeprè 1000 grefon ki vize pou òganize entèraksyon Jenkins ak yon gran varyete teknoloji. Scripts ka sèvi ak sistèm otantifikasyon, ki, pou egzanp, pèmèt ou konekte ak divès kalite sistèm fèmen.

Pandan operasyon an nan tiyo Jenkins la, ou ka obsève sa k ap pase nan chak etap, si sèten etap nan travay yo te konplete avèk siksè oswa ou pa. Ou ka gade tout bagay sa yo, sepandan, san yo pa itilize yon sèten koòdone grafik, men lè l sèvi avèk kapasite yo nan tèminal la.

Karakteristik Jenkins

Pami karakteristik yo byen li te ye nan Jenkins yo se fasilite nan konfigirasyon, yon wo nivo de automatisation nan operasyon divès kalite, ak dokiman ekselan. Si nou pale sou rezoud travay DevOps, Lè sa a, isit la Jenkins konsidere kòm yon zouti trè serye, lè l sèvi avèk ki, kòm yon règ, li pa fè okenn sans kontwole ak anpil atansyon pwosesis la nan pwosesis pwojè a. Sa a se pa ka a ak lòt zouti CI/CD. Ann pale sou kèk nan karakteristik ki pi enpòtan nan Jenkins.

▍1. Gratis, sous louvri, sipò milti-platfòm

Jenkins ka kouri sou platfòm macOS, Windows ak Linux. Li kapab tou fonksyone nan yon anviwònman Docker, ki pèmèt ou òganize inifòm ak rapid ekzekisyon travay otomatik. Zouti sa a kapab tou kouri kòm yon servlet nan resipyan ki pèmèt Java tankou Apache Tomcat ak GlassFish. Enstalasyon Jenkins kalitatif dokimante.

▍2. Devlope ekosistèm plugin

Jenkins ekosistèm plugin parèt pi matirite pase ekosistèm plugin lòt CI/CD zouti. Kounye a gen plis pase 1500 grefon pou Jenkins. Plugins sa yo vize pou rezoud yon pakèt travay, avèk èd yo ou ka otomatize yon varyete pwojè. Richès nan grefon gratis yo chwazi nan vle di ke si w ap itilize Jenkins, ou pa bezwen achte chè peye grefon. Gen yon posibilite entegrasyon Jenkins ak anpil zouti DevOps.

▍3. Fasil enstalasyon ak konfigirasyon

Jenkins se jistis fasil enstale ak konfigirasyon. An menm tan an, pwosesis pou mete ajou sistèm lan tou trè pratik. Isit la, ankò, li vo mansyone bon jan kalite a nan dokiman an, depi nan li ou ka jwenn repons a yon varyete de kesyon ki gen rapò ak enstale ak konfigirasyon Jenkins.

▍4. Kominote zanmitay

Kòm deja mansyone, Jenkins se yon pwojè sous louvri, ekosistèm nan ki gen ladan yon gwo kantite grefon. Yon gwo kominote itilizatè ak devlopè te devlope alantou Jenkins pou ede devlope pwojè a. Kominote a se youn nan faktè ki kondwi devlopman Jenkins.

▍5. Disponibilite REST API

Pandan w ap travay ak Jenkins, ou ka itilize REST API, ki elaji kapasite sistèm nan. API pou aksè aleka nan sistèm nan prezante nan twa vèsyon: XML, JSON ak sipò JSONP, Python. Isit la Paj dokimantasyon ki kouvri detay sou travay ak Jenkins REST API.

▍6. Sipò pou ekzekisyon paralèl nan travay

Jenkins sipòte paralelizasyon travay DevOps. Li ka fasilman entegre ak zouti ki enpòtan epi resevwa notifikasyon sou rezilta travay yo. Tès kòd yo ka akselere lè w òganize yon pwojè paralèl lè l sèvi avèk diferan machin vityèl.

▍7. Sipò pou travay nan anviwònman distribiye

Jenkins pèmèt ou òganize bati distribye lè l sèvi avèk plizyè òdinatè. Karakteristik sa a aplikab nan gwo pwojè ak sèvi ak yon konplo nan travay, dapre ki gen yon sèl sèvè Jenkins mèt ak plizyè machin esklav. Machin esklav yo ka itilize tou nan sitiyasyon kote li nesesè pou òganize tès yon pwojè nan diferan anviwònman. Karakteristik sa yo mete Jenkins apa de lòt pwojè menm jan an.

Entwodiksyon nan GitLab

Batay Jenkins ak GitLab CI/CD
GitLab CI/CD ka rele youn nan zouti DevOps ki pi nouvo ak pi renmen an. Zouti sous louvri gratis sa a bati nan sistèm kontwòl vèsyon GitLab la. Platfòm GitLab la gen yon vèsyon kominotè, li sipòte jesyon depo, zouti pou swiv pwoblèm, òganizasyon revizyon kòd, mekanis ki oryante sou dokiman. Konpayi yo ka enstale GitLab lokalman, lyen li ak Active Directory ak LDAP sèvè pou otorizasyon itilizatè an sekirite ak otantifikasyon.

Isit la Yon leson patikilye videyo pou ede w aprann kijan pou kreye tiyo CI/CD lè l sèvi avèk kapasite GitLab CI/CD.

GitLab CI/CD te orijinal lage kòm yon pwojè otonòm, men an 2015 yo te entegre seri zouti sa a nan GitLab 8.0. Yon sèl sèvè GitLab CI/CD ka sipòte plis pase 25000 itilizatè. Ki baze sou serveurs sa yo, ou ka kreye sistèm ki trè disponib.

GitLab CI/CD ak pwojè prensipal GitLab yo ekri nan Ruby and Go. Yo lage anba lisans MIT. GitLab CI/CD, anplis de karakteristik abityèl zouti CI/CD, sipòte tou karakteristik adisyonèl ki gen rapò, pou egzanp, orè travay.

Entegre GitLab CI/CD nan yon pwojè se trè fasil. Lè w ap itilize GitLab CI/CD, pwosesis pwosesis kòd pwojè a divize an etap, chak nan yo ka konpoze de plizyè travay ki fèt nan yon sèten lòd. Travay yo ka amann.

Travay yo ka kouri nan paralèl. Apre mete sekans etap ak travay, tiyo CI/CD pare pou ale. Ou ka kontwole pwogrè li yo pa kontwole estati travay yo. Kòm yon rezilta, lè l sèvi avèk GitLab CI / CD trè pratik, petèt pi pratik pase lòt zouti ki sanble.

Karakteristik GitLab CI/CD ak GitLab

GitLab CI/CD se youn nan zouti DevOps ki pi popilè. Pwojè a distenge pa bon jan kalite dokiman, karakteristik li yo fasil ak pratik yo sèvi ak. Si ou poko abitye ak GitLab CI/CD, lis sa a nan karakteristik zouti sa a pral ba ou yon lide jeneral sou sa ou ka atann de li. Li ta dwe remake ke anpil nan karakteristik sa yo gen rapò ak platfòm GitLab tèt li, nan ki GitLab CI / CD entegre.

▍1. Popilarite

GitLab CI/CD se yon zouti relativman nouvo ki te jwenn itilizasyon toupatou. GitLab CI/CD te vin tou dousman yon zouti CI/CD popilè ki itilize pou tès otomatik ak deplwaman lojisyèl. Li senp pou mete kanpe. Li se tou yon zouti gratis CI/CD ki bati nan platfòm GitLab la.

▍2. Sipò pou GitLab Pages ak Jekyll

Jekyll se yon jeneratè sit estatik ki ka itilize nan sistèm GitLab Pages pou kreye sit ki baze sou depo GitLab. Sistèm nan pran materyèl sous yo epi jenere yon sit estatik pare ki baze sou yo. Ou ka kontwole aparans ak karakteristik sit sa yo lè w modifye dosye a _config.yml, itilize pa Jekyll.

▍3. Kapasite planifikasyon pwojè

Mèsi a kapasite nan planifye etap yo nan pwojè, konvenyans nan swiv pwoblèm ak gwoup yo ogmante. Sa a pèmèt ou jere òganizasyon an nan travay sou pwojè, planifye aplikasyon yo nan yon dat espesifik.

▍4. Otomatik dekale nan kourè CI

Mèsi a dechèl otomatik nan kourè ki responsab pou fè travay espesifik, ou ka ekonomize anpil sou pri pou lwe kapasite sèvè. Sa a trè enpòtan, sitou lè li rive anviwònman kote pwojè yo teste an paralèl. Anplis de sa, sa a enpòtan pou gwo pwojè ki gen plizyè depo.

▍5. Pwoblèm pou swiv zouti

Kapasite pwisan GitLab pou swiv pwoblèm te mennen anpil pwojè sous louvri yo sèvi ak platfòm la. GitLab CI/CD pèmèt tès paralèl diferan branch kòd. Rezilta tès yo byen analize nan koòdone sistèm lan. Sa fè GitLab CI/CD apa de Jenkins.

▍6. Limite aksè nan depo yo

Platfòm GitLab la sipòte restriksyon aksè nan depo yo. Pou egzanp, moun ki kolabore sou yon pwojè nan yon depo yo ka bay pèmisyon ki apwopriye a wòl yo. Sa a se laverite espesyalman pou pwojè antrepriz.

▍7. Sipò kominote aktif

Yon kominote aktif devlope alantou GitLab, ki kontribye nan devlopman platfòm sa a ak zouti li yo, an patikilye, GitLab CI / CD. Entegrasyon pwofon GitLab CI/CD ak GitLab, pami lòt bagay, fè li fasil pou jwenn repons pou kesyon ki parèt lè w ap travay ak GitLab CI/CD.

▍8. Sipò pou divès kalite sistèm kontwòl vèsyon

GitLab CI/CD se yon sistèm ki ka travay ak plis pase jis kòd ki akomode nan depo GitLab. Pou egzanp, kòd la ka estoke nan yon depo GitHub, epi tiyo CI / CD ka òganize sou baz GitLab lè l sèvi avèk GitLab CI / CD.

Konparezon Jenkins ak GitLab CI/CD

Jenkins ak GitLab CI/CD yo se zouti trè bon, tou de nan yo ki kapab fè tiyo CI/CD kouri san pwoblèm. Men, si ou konpare yo, li sanble ke, byenke yo sanble nan plizyè fason, yo diferan youn ak lòt nan kèk fason.

Karakterizasyon
Jenkins
GitLab CI/CD

Sous louvri oswa sous fèmen
sous louvri
sous louvri

Enstalasyon
Obligatwa.
Pa obligatwa paske sa a se yon karakteristik entegre nan platfòm GitLab la.

Karakteristik inik
Plugin sipò.
Entegrasyon gwo twou san fon nan sistèm kontwòl vèsyon an.

Sipòte
Absan.
Disponib.

Enstalasyon ak konfigirasyon
Difikilte pa lakòz
Difikilte pa lakòz

Oto-deplwaman nan sistèm nan
Sa a se sèl fason yo sèvi ak sistèm nan.
Sipòte.

Kreye CI/CD Pipelines
Sipòte, lè l sèvi avèk Jenkins Pipeline.
Sipòte.

Siveyans pèfòmans aplikasyon an
Absan.
Disponib.

Ekosistèm
Gen plis pase 1000 grefon.
Sistèm nan ap devlope nan GitLab.

API
Sipòte yon sistèm API avanse.
Ofri yon API pou entegrasyon pi fon nan pwojè yo.

Sipò JavaScript
Disponib.
Disponib.

Entegrasyon ak lòt zouti
Entegrasyon ak lòt zouti ak platfòm sipòte (Slack, GitHub).
Anpil zouti pou entegrasyon ak sistèm twazyèm pati, an patikilye - ak GitHub ak Kubernetes.

Kòd kontwòl kalite
Sipòte - lè l sèvi avèk Plugin SonarQube ak lòt grefon.
Sipòte.

Diferans ant Jenkins ak GitLab CI/CD

Lè w fin dekri ak konpare Jenkins ak GitLab CI/CD, ann konsantre sou diferans ki genyen ant zouti DevOps sa yo. Lè w konnen diferans sa yo ap ede w konprann moun ki pito youn nan zouti sa yo pase lòt la.

  • GitLab CI/CD ka konplètman kontwole depo Git yo. Nou ap pale de jere branch repozitwa ak kèk lòt karakteristik. Men, Jenkins, byenke li ka travay ak depo, pa bay menm nivo kontwòl sou yo kòm GitLab CI / CD.
  • Jenkins se yon pwojè sous louvri gratis. Moun ki chwazi li deplwaye li poukont li. Ak GitLab CI / CD enkli nan platfòm la GitLab, sa a se yon solisyon En.
  • GitLab CI/CD sipòte zouti avanse jesyon travay ki travay nan nivo pwojè a. Bò sa a nan Jenkins se mwens devlope.

Jenkins ak GitLab CI/CD: fòs ak feblès

Koulye a, ou gen kèk lide sou Jenkins ak GitLab CI/CD. Koulye a, pou fè ou menm pi byen konnen zouti sa yo, an n a, voye je sou fòs ak feblès yo. Nou sipoze ke ou te deja deside ki zouti ou bezwen. Èspere ke, seksyon sa a pral pèmèt ou teste tèt ou.

▍Fòs Jenkins

  • Yon gwo kantite plugins.
  • Kontwòl konplè sou enstalasyon zouti.
  • Senp debogaj nan kourè.
  • Fasil konfigirasyon ne.
  • Fasil deplwaman kòd.
  • Trè bon sistèm jesyon kalifikasyon.
  • Fleksibilite ak adaptabilite.
  • Sipò pou plizyè lang pwogramasyon.
  • Sistèm nan konprann sou yon nivo entwisyon.

▍Fèblès Jenkins

  • Plugins yo ka difisil pou itilize.
  • Lè w ap itilize Jenkins nan ti pwojè, tan ki nesesè pou konfigirasyon li tèt ou ka san rezon.
  • Mank enfòmasyon jeneral analyse sou chenn CI/CD.

▍Fòs GitLab CI/CD

  • Bon entegrasyon ak Docker.
  • Senp dekale nan kourè.
  • Ekzekisyon paralèl nan travay ki fè pati etap yo nan tiyo CI/CD.
  • Sèvi ak modèl graf asilik dirije lè w ap etabli relasyon travay.
  • Nivo segondè nan évolutivité akòz posibilite pou ekzekisyon paralèl nan kourè.
  • Fasilite pou ajoute travay.
  • Senp rezolisyon konfli.
  • Sistèm sekirite serye.

▍Fèblès GitLab CI/CD

  • Pou chak travay, ou bezwen dekri ak telechaje / telechaje zafè.
  • Ou pa ka teste rezilta fusion branch yo anvan yo aktyèlman fusionné.
  • Lè w ap dekri etap yo nan tiyo CI / CD, li poko posib pou separe etap endividyèl yo.

Rezilta

Jenkins ak GitLab CI/CD gen fòs ak feblès. Repons lan nan kesyon an nan sa yo chwazi depann sou bezwen yo ak karakteristik nan yon pwojè an patikilye. Chak nan zouti CI/CD revize jodi a gen sèten karakteristik, byenke zouti sa yo te kreye pou rezoud pwoblèm nan menm. An menm tan an, Jenkins se yon zouti otonòm, ak GitLab CI / CD se yon pati nan yon platfòm ki fèt pou kolabore sou kòd.

Lè w ap chwazi yon sistèm CI / CD, anplis kapasite li yo, li vo pran an kont depans ki ka asosye ak li, ak ki sa egzakteman enjenyè DevOps ki sipòte pwojè a yo abitye travay avèk yo.

Ki zouti CI/CD ou itilize?

Batay Jenkins ak GitLab CI/CD

Batay Jenkins ak GitLab CI/CD

Sous: www.habr.com

Add nouvo kòmantè