Hondo yeJenkins uye GitLab CI/CD

Mumakore gumi apfuura, kufambira mberi kwakakosha kwakaitwa mukugadzirwa kwezvishandiso zvekuenderera mberi kwekubatanidzwa (Kuenderera mberi Kubatanidzwa, CI) uye kuenderera mberi kwekutumira (Kuenderera Kunoenderera, CD). Kuvandudzwa kwetekinoroji yekubatanidza kuvandudza software uye kushanda (Development Operations, DevOps) kwakonzera kukurumidza kuwedzera kwekuda kweCI / CD maturusi. Zvigadziriso zviripo zvinogara zvichivandudzwa, kuedza kufambirana nenguva, shanduro dzavo itsva dzinobudiswa, munyika yehutano hwehutano software (Quality Assurance, QA), zvakawanda zvitsva zvinogara zvichionekwa. Nehupfumi hwakadaro hwekusarudza, kusarudza chishandiso chakakodzera harisi basa riri nyore.

Hondo yeJenkins uye GitLab CI/CD

Pakati pezvishandiso zvese zviripo zveCI / CD, pane mapurojekiti maviri akakodzera kuterera kune mumwe munhu ari kutsvaga chimwe chinhu kubva munzvimbo ino. Tiri kutaura nezveJenkins uye GitLab CI / CD chishandiso, chiri chikamu cheGitLab chikuva. Jenkins ane zvakawanda kupfuura 16000 nyeredzi paGitHub. Iyo GitLab repository pagitlab.com yakawana zvimwe zvishoma 2000 nyeredzi. Kana tikaenzanisa mukurumbira wezvinyorwa, zvinozoitika kuti Jenkins akawana nyeredzi kasere pane chikuva, icho chinosanganisira GitLab CI / CD. Asi kana uchisarudza CI / CD chishandiso, ichi chiri kure nechiratidzo chega chaunofanira kuteerera. Kune akawanda evamwe, uye izvi zvinotsanangura chikonzero nei mukuenzanisa kwakawanda, Jenkins uye GitLab CI / CD vari padyo zvakanyanya kune mumwe nemumwe.

Tora, semuenzaniso, data kubva papuratifomu yeG2, iyo inounganidza wongororo yezvakasiyana siyana zvezvigadzirwa uye zviyero izvo vashandisi vanovapa. Heino mwero wepakati Jenkins, yakavakirwa pa288 wongororo, ndeye 4,3 nyeredzi. Ooo GitLab kune 270 wongororo, chiyero chepakati chechishandiso ichi 4,4 nyeredzi. Hatizokanganise pakutaura kuti Jenkins neGitLab CI / CD vanokwikwidzana pamatemu akaenzana. Zvinonakidza kuziva kuti chirongwa cheJenkins chakaonekwa muna 2011 uye kubva ipapo chave chiri chishandiso chinodiwa nevayedzi. Asi panguva imwecheteyo, iyo GitLab CI / CD chirongwa, chakatangwa muna 2014, chatora chinzvimbo chayo, chakakwirira kwazvo, nekuda kwemhando yepamusoro inopihwa nepuratifomu iyi.

Kana tikataura pamusoro pekuzivikanwa kweJenkins mukuenzanisa nemamwe mapuratifomu akafanana, tinocherechedza kuti isu, takabudisa chinyorwa tichienzanisa mapurisa eTravis CI neJenkins, takaronga tsvakurudzo. 85 vashandisi vakapinda mairi. Vakapindura vakakumbirwa kuti vasarudze chishandiso cheCI/CD chavanoda zvakanyanya. 79% vakasarudza Jenkins, 5% vakasarudza Travis CI, uye 16% vakaratidza kuti vanoda mamwe maturusi.

Hondo yeJenkins uye GitLab CI/CD
Mhinduro dzePoll

Pakati pemamwe maturusi eCI/CD, GitLab CI/CD yaitaurwa kakawanda.

Kana iwe wakakomba nezveDevOps, saka iwe unofanirwa kunyatso sarudza maturusi akakodzera, uchifunga nezve chaiyo yeprojekiti, bhajeti rayo, uye zvimwe zvinodiwa. Kuti ikubatsire kuita sarudzo chaiyo, tiri kuongorora Jenkins uye GitLab CI/CD. Izvi zvichakubatsira iwe kuita sarudzo yakanaka.

Nhanganyaya kuna Jenkins

Hondo yeJenkins uye GitLab CI/CD
Jenkins inonyatso kuzivikanwa, inochinjika CI/CD chishandiso chakagadzirirwa kuita otomatiki mabasa mazhinji ane chekuita nemapurojekiti esoftware. Jenkins yakanyorwa zvachose muJava uye yakaburitswa pasi peMIT rezinesi. Iyo ine seti ine simba yezvimiro zvakanangwa nekuita otomatiki mabasa ane chekuita nekuvaka, kuyedza, kuendesa, kubatanidza, uye kuburitsa software. Ichi chishandiso chinogona kushandiswa pane akasiyana masisitimu anoshanda. Izvi zvinosanganisira macOS, Windows, uye akawanda maLinux kugovera akadai seOpenSUSE, Ubuntu, uye Red Hat. Kune mapakeji ekuisa eJenkins akagadzirirwa akasiyana maOS, chishandiso ichi chinogona kuiswa paDocker uye pane chero system ine JRE (Java Runtime Environment).

Vagadziri veJenkins vakagadzira imwe chirongwa, Jenkins X, iyo yakagadzirirwa kushanda munzvimbo yeKubernetes. Jenkins X inobatanidza Helm, iyo Jenkins CI/CD server, Kubernetes, uye mamwe maturusi ekuvaka CI/CD mapaipi anotevera DevOps akanakisa maitiro. Semuenzaniso, GitOps inoshandiswa pano.

Mumwe anogona kuwedzera kuhomwe yezvakanakira Jenkins chokwadi chekuti zvinyorwa zvaro zvakanyatsorongeka, zvinonzwisisika, uye zviri nyore kuverenga. Chikwata cheJenkins chakagadzira nezve 1000 plugins iyo inotarisirwa kuronga kusangana kweJenkins neakasiyana siyana matekinoroji. Zvinyorwa zvinogona kushandisa masisitimu echokwadi, ayo, semuenzaniso, anobvumidza iwe kuti ubatanidze kune akasiyana masisitimu akavharika.

Munguva yekushanda kwepombi yeJenkins, unogona kuona zvinoitika pachinhanho chimwe nechimwe, kana mamwe matanho ebasa akapedzwa zvinobudirira kana kwete. Iwe unogona kutarisa zvese izvi, zvisinei, pasina kushandisa imwe graphical interface, asi uchishandisa kugona kweiyo terminal.

Zvinoumba Jenkins

Pakati peanozivikanwa maficha eJenkins ari nyore kuseta, yakakwira mwero weautomation yeakasiyana mashandiro, uye akanakisa zvinyorwa. Kana tichitaura nezvekugadzirisa mabasa eDevOps, saka pano Jenkins inoonekwa sechishandiso chakavimbika kwazvo, uchishandisa iyo, sekutonga, hazvina musoro kunyatsotarisisa maitiro ese ekugadzirisa chirongwa. Izvi hazvisi izvo kune mamwe maCI/CD maturusi. Ngatitaure nezve zvimwe zvakakosha zveJenkins.

▍1. Yemahara, yakavhurika sosi, akawanda-chikuva rutsigiro

Jenkins anogona kumhanya pa macOS, Windows uye Linux mapuratifomu. Iyo inogona zvakare kushanda munzvimbo yeDocker, iyo inokutendera iwe kuronga yunifomu uye nekukurumidza kuuraya otomatiki mabasa. Ichi chishandiso chinogona zvakare kumhanya se servlet muJava-inogonesa midziyo yakadai seApache Tomcat uye GlassFish. Kuiswa kweJenkins zvakanaka documented.

▍2. Yakagadzirwa plugin ecosystem

Iyo Jenkins plugin ecosystem inoita seyakakura zvakanyanya kupfuura iyo plugin ecosystems yemamwe maCI/CD maturusi. Ikozvino kune anopfuura 1500 plugins yeJenkins. Aya mapulagi ane chinangwa chekugadzirisa mabasa akasiyana-siyana, nerubatsiro rwavo unogona automate akasiyana mapurojekiti. Hupfumi hwemahara plugins kusarudza kubva kunoreva kuti kana uri kushandisa Jenkins, haufanirwe kutenga anodhura akabhadharwa plugins. Pane mukana kubatanidzwa Jenkins ane akawanda maDevOps maturusi.

▍3. Easy installation uye setup

Jenkins iri nyore kuisa uye kugadzirisa. Panguva imwecheteyo, maitiro ekuvandudza sisitimu zvakare yakanakira. Pano, zvakare, zvakakosha kutaura nezvemhando yezvinyorwa, sezvo mairi iwe unogona kuwana mhinduro dzemibvunzo yakasiyana-siyana ine chokuita nekuisa nekugadzirisa Jenkins.

▍4. Nharaunda inoshamwaridzana

Sezvatotaurwa, Jenkins ipurojekiti yakazaruka, iyo ecosystem iyo inosanganisira nhamba huru yemapulagi. Nharaunda yakakura yevashandisi nevagadziri vakagadzira kutenderedza Jenkins kubatsira kusimudzira chirongwa. Nharaunda ndechimwe chezvinhu zvinofambisa budiriro yeJenkins.

▍5. Kuwanikwa kweREST API

Paunenge uchishanda naJenkins, unogona kushandisa iyo REST API, iyo inowedzera kugona kweiyo system. API yekuwana kure kune sisitimu inounzwa mune matatu mavhezheni: XML, JSON ine JSONP rutsigiro, Python. pano Peji rezvinyorwa rinofukidza ruzivo nezvekushanda neJenkins REST API.

▍6. Kutsigira kwekuita kwakafanana kwemabasa

Jenkins inotsigira kufanana kweDevOps mabasa. Inogona kusanganiswa nyore nyore nemidziyo yakakodzera uye kugamuchira zviziviso nezve mhedzisiro yebasa. Kuyedzwa kwekodhi kunogona kukwidziridzwa nekuronga kuenderana kuvaka kwepurojekiti uchishandisa akasiyana chaiwo michina.

▍7. Kutsigira kwebasa munzvimbo dzakaparadzirwa

Jenkins inobvumidza iwe kuronga akagoverwa kuvaka uchishandisa akawanda makomputa. Ichi chimiro chinoshanda mumapurojekiti makuru uye chinoshandisa chirongwa chebasa, zvichienderana nekuti kune imwe master Jenkins server uye akati wandei machina evaranda. Michina yevaranda inogona zvakare kushandiswa mumamiriro ezvinhu apo panofanirwa kuronga kuyedzwa kweprojekiti munzvimbo dzakasiyana. Aya maficha anoisa Jenkins kubva kune mamwe mapurojekiti akafanana.

Nhanganyaya yeGitLab

Hondo yeJenkins uye GitLab CI/CD
GitLab CI/CD inogona kunzi imwe yezvitsva uye zvinonyanya kudiwa zveDevOps zvishandiso. Ichi chemahara chakavhurika sosi chishandiso chakavakirwa muGitLab vhezheni control system. Iyo GitLab chikuva ine nharaunda vhezheni, inotsigira repository manejimendi, nyaya yekutevera maturusi, kodhi yekuongorora sangano, zvinyorwa-zvakanangana nemaitiro. Makambani anogona kuisa GitLab munharaunda, achiibatanidza neActive Directory uye LDAP maseva kuitira kuchengetedzeka kwemvumo yemushandisi uye huchokwadi.

pano Vhidhiyo dzidziso yekukubatsira iwe kudzidza kugadzira CI/CD mapaipi uchishandisa GitLab CI/CD kugona.

GitLab CI/CD yakatanga kuburitswa sechirongwa chakazvimirira, asi muna 2015 iyi seti yezvishandiso yakabatanidzwa muGitLab 8.0. Imwe GitLab CI/CD sevha inogona kutsigira vanopfuura zviuru makumi maviri nezvishanu. Kubva pamaseva akadaro, unogona kugadzira masisitimu anowanikwa zvakanyanya.

GitLab CI/CD uye chikuru GitLab chirongwa chakanyorwa muRuby uye Go. Ivo vanoburitswa pasi peMIT rezinesi. GitLab CI/CD, mukuwedzera kune akajairwa maficha eCI/CD maturusi, zvakare inotsigira mamwe maficha ane hukama, semuenzaniso, kushanda kuronga.

Kubatanidza GitLab CI/CD mupurojekiti iri nyore kwazvo. Paunenge uchishandisa GitLab CI/CD, iyo purojekiti kodhi yekugadzirisa inokamurwa kuita nhanho, imwe neimwe inogona kuve neanoverengeka mabasa anoitwa mune imwe kurongeka. Mabasa anogona kunyatsogadziriswa.

Mabasa anogona kuita mukufambirana. Mushure mekugadzirisa kutevedzana kwematanho uye mabasa, iyo CI/CD pombi yakagadzirira kuenda. Iwe unogona kutarisa kufambira mberi kwayo nekutarisa mamiriro emabasa. Nekuda kweizvozvo, kushandisa GitLab CI / CD kuri nyore, pamwe kuri nyore kupfuura mamwe maturusi akafanana.

Zvimiro zveGitLab CI/CD uye GitLab

GitLab CI/CD ndeimwe yeanonyanya kufarirwa maDevOps maturusi. Iyo purojekiti inosiyaniswa nemhando yepamusoro zvinyorwa, maitiro ayo ari nyore uye ari nyore kushandisa. Kana iwe usati wajairana neGitLab CI/CD, iyo inotevera rondedzero yezvishandiso zvechishandiso ichi inokupa iwe pfungwa yakajairika yezvaungatarisira kubva kwairi. Izvo zvinofanirwa kucherechedzwa kuti mazhinji eaya maficha ane hukama neGitLab papuratifomu pachayo, umo GitLab CI / CD yakabatanidzwa.

▍1. Mukurumbira

GitLab CI/CD chishandiso chitsva chakawana kushandiswa kwakapararira. GitLab CI/CD yave zvishoma nezvishoma yave yakakurumbira CI/CD chishandiso chinoshandiswa kuyedza otomatiki uye kutumira software. Zviri nyore kumisikidza. Iyo zvakare yemahara CI/CD chishandiso chakavakirwa muGitLab papuratifomu.

▍2. Tsigiro yeGitLab Mapeji uye Jekyll

Jekyll is static site jenareta inogona kushandiswa mukati meGitLab Mapeji sisitimu kugadzira masaiti zvichienderana neGitLab repositori. Iyo sisitimu inotora sosi zvinhu uye inogadzira yakagadzirira-yakagadzirwa static saiti yakavakirwa pazviri. Iwe unogona kudzora chitarisiko uye maficha emasaiti akadaro nekugadzirisa iyo faira _config.yml, inoshandiswa naJekyll.

▍3. Kugona kuronga kweprojekiti

Nekuda kwekugona kuronga matanho emapurojekiti, kuve nyore kwekutevera matambudziko uye mapoka avo anowedzera. Izvi zvinokutendera kuti utarise kurongeka kwebasa pamapurojekiti, kuronga kuita kwavo pane yakatarwa zuva.

▍4. Kuyera otomatiki kweCI vanomhanya

Kutenda kune otomatiki kuyera kwevamhanyi vane basa rekuita chaiwo mabasa, unogona kuchengetedza yakawanda pamutengo wekurenda sevha hunyanzvi. Izvi zvakanyanya kukosha, kunyanya kana zvasvika kune nharaunda uko mapurojekiti anoedzwa mukufanana. Mukuwedzera, izvi zvakakosha kumapurojekiti makuru ane marepositories akati wandei.

▍5. Nyaya yekutevera maturusi

GitLab ine simba nyaya yekutevera yekugona yakatungamira akawanda akavhurika sosi mapurojekiti kushandisa chikuva. GitLab CI/CD inobvumira kuyedzwa kwakafanana kwematavi ekodhi akasiyana. Miedzo mibairo inoongororwa zviri nyore mune system interface. Izvi zvinoisa GitLab CI/CD kunze kweJenkins.

▍6. Kurambidza kupinda mumatura

Iyo GitLab chikuva inotsigira kurambidza kupinda kune repositori. Semuenzaniso, avo vanobatana pachirongwa munzvimbo inochengeterwa vanogona kupihwa mvumo inoenderana nebasa ravo. Izvi ndezvechokwadi kunyanya kumapurojekiti emakambani.

▍7. Active community support

Nharaunda inoshanda yakagadzira yakatenderedza GitLab, iyo inobatsira mukusimudzirwa kwepuratifomu iyi nemidziyo yayo, kunyanya, GitLab CI / CD. Kubatanidzwa kwakadzama kweGitLab CI/CD neGitLab, pakati pezvimwe zvinhu, zvinoita kuti zvive nyore kuwana mhinduro dzemibvunzo inomuka kana uchishanda neGitLab CI/CD.

▍8. Tsigiro yeakasiyana vhezheni control system

GitLab CI/CD igadziriro inogona kushanda neinopfuura kodhi inogarwa muGitLab repositori. Semuenzaniso, iyo kodhi inogona kuchengetwa muGitHub repository, uye iyo CI / CD pombi inogona kurongeka pahwaro hweGitLab uchishandisa GitLab CI / CD.

Kuenzanisa kweJenkins uye GitLab CI/CD

Jenkins neGitLab CI/CD maturusi akanaka kwazvo, ose ari maviri anokwanisa kuita kuti pombi yeCI/CD ifambe zvakanaka. Asi kana tikazvienzanisa, zvinoitika kuti, kunyange zvazvo zvakafanana nenzira dzakawanda, zvakasiyana kubva kune imwe neimwe mune dzimwe nzira.

Mamiriro
Jenkins
GitLab CI/CD

Open source or closed source
open source
open source

Kuiswa
Zvinodiwa.
Hazvidikanwi sezvo ichi chinhu chakavakirwa-mukati cheGitLab chikuva.

Unique Features
Plugin rutsigiro.
Kubatanidzwa kwakadzika mushanduro control system.

tsigira
Kushaya.
Available.

Kuiswa uye kumisikidzwa
Matambudziko haakonzeri
Matambudziko haakonzeri

Kuzvitumira kwehurongwa
Iyi ndiyo chete nzira yekushandisa system.
Inotsigirwa.

Kugadzira CI/CD Pipelines
Inotsigirwa, uchishandisa Jenkins Pipeline.
Inotsigirwa.

Application performance monitoring
Kushaya.
Available.

Ecosystem
Kune anopfuura 1000 plugins.
Iyo sisitimu iri kuvandudzwa mukati meGitLab.

API
Inotsigira advanced API system.
Inopa API yekubatanidza kwakadzama mumapurojekiti.

JavaScript rutsigiro
Available.
Available.

Kubatanidzwa nemamwe maturusi
Kubatanidzwa nemamwe maturusi uye mapuratifomu anotsigirwa (Slack, GitHub).
Zvishandiso zvakawanda zvekubatanidza neyechitatu-bato masisitimu, kunyanya - neGitHub uye Kubernetes.

Code quality control
Inotsigirwa - uchishandisa SonarQube plugin uye mamwe maplugins.
Inotsigirwa.

Misiyano pakati peJenkins neGitLab CI/CD

Tatsanangura nekuenzanisa Jenkins neGitLab CI/CD, ngatitarisei pamusiyano uripo pakati pezvishandiso izvi zveDevOps. Kuziva misiyano iyi kuchakubatsira kuti unzwisise avo vanosarudza chimwe chezvishandiso izvi pane chimwe.

  • GitLab CI/CD inogona kudzora zvizere Git repositori. Tiri kutaura nezve kubata repository mapazi uye zvimwe zvimwe zvinhu. Asi Jenkins, kunyangwe ichigona kushanda nemarepositori, haipe iyo yakafanana nhanho yekutonga pamusoro pavo seGitLab CI / CD.
  • Jenkins ndeyemahara yakavhurika sosi purojekiti. Uyo anoisarudza anoitumira yakazvimirira. Uye GitLab CI / CD inosanganisirwa muGitLab papuratifomu, iyi ndiyo mhinduro yekutendeuka.
  • GitLab CI/CD inotsigira epamusoro basa manejimendi maturusi anoshanda padanho reprojekiti. Iri divi reJenkins harina kuvandudzwa.

Jenkins uye GitLab CI/CD: simba uye kushaya simba

Iye zvino wave neruzivo nezve Jenkins uye GitLab CI/CD. Zvino, kuti uwedzere kujairana nematurusi aya, ngatitarisei kusimba kwavo uye kusasimba kwavo. Isu tinofungidzira kuti wakatosarudza kuti ndechipi chishandiso chaunoda. Ndinovimba, chikamu ichi chinokutendera kuti uzviedze iwe pachako.

▍Kusimba kwaJenkins

  • Nhamba huru yemapulagi.
  • Kudzora kwakazara pamusoro pekuisa chombo.
  • Kugadzirisa nyore kwevanomhanya.
  • Easy node setup.
  • Easy code deployment.
  • Yakanaka kwazvo credential management system.
  • Kuchinja uye kuita zvakasiyana-siyana.
  • Tsigiro yemitauro yakasiyana-siyana yekuronga.
  • Iyo system inonzwisisika pane intuitive level.

▍Kushaya simba kwaJenkins

  • Plugins inogona kuve yakaoma kushandisa.
  • Paunenge uchishandisa Jenkins mumapurojekiti madiki, nguva inodiwa kuti uzvigadzirise iwe pachako inogona kunge yakakura zvisingaite.
  • Kushaikwa kweruzivo rwakawanda rwekuongorora nezveCI/CD cheni.

▍Masimba eGitLab CI/CD

  • Kubatanidzwa kwakanaka neDocker.
  • Kuyera kuri nyore kwevamhanyi.
  • Kufanana kwekuita kwemabasa ari chikamu chezvikamu zveCI / CD pombi.
  • Kushandisa yakatungamirwa acyclic graph modhi pakugadzira hukama hwebasa.
  • High level of scalability nekuda kwekugona kweparallel execution yevamhanyi.
  • Kureruka kwekuwedzera mabasa.
  • Kugadzirisa kukakavara kuri nyore.
  • Yakavimbika kuchengetedza system.

▍Kushaya simba kweGitLab CI/CD

  • Pabasa rega rega, iwe unofanirwa kutsanangura uye kurodha / kurodha zvigadzirwa.
  • Iwe haugone kuyedza mibairo yekubatanidza matavi asati anyatso kubatanidzwa.
  • Kana uchitsanangura nhanho dzeCI / CD pombi, hazvisati zvave kugona kuburitsa nhanho dzega mazviri.

Migumisiro

Vese Jenkins uye GitLab CI/CD vane masimba uye kushaya simba. Mhinduro kumubvunzo wezvaunosarudza zvinoenderana nezvinodiwa uye maitiro eimwe chirongwa. Imwe neimwe yeCI/CD maturusi akaongororwa nhasi ane zvimwe zvinhu, kunyangwe maturusi aya akagadzirwa kugadzirisa dambudziko rimwe chete. Panguva imwecheteyo, Jenkins chishandiso chakamira, uye GitLab CI / CD chikamu chepuratifomu yakagadzirirwa kushandirapamwe pakodhi.

Paunosarudza CI / CD system, mukuwedzera kune kugona kwayo, zvakakosha kufunga nezvemitengo inogona kuve yakabatana nayo, uye ndeapi chaiwo mainjiniya eDevOps anotsigira chirongwa anoshandiswa kushanda nawo.

Ndeapi maturusi eCI/CD aunoshandisa?

Hondo yeJenkins uye GitLab CI/CD

Hondo yeJenkins uye GitLab CI/CD

Source: www.habr.com

Voeg