En la lasta jardeko, signifaj progresoj estis faritaj en la evoluo de iloj por kontinua integriĝo (Continuous Integration, CI) kaj kontinua deplojo (Continuous Delivery, KD). La disvolviĝo de teknologioj por integri programaron disvolviĝo kaj operacio (Evoluo-Operacioj, DevOps) kaŭzis rapidan pliiĝon de postulo je CI / KD-iloj. Ekzistantaj solvoj estas konstante plibonigataj, provante daŭrigi kun la tempoj, iliaj novaj versioj estas liberigitaj, en la mondo de kvalita certiga programaro (Kvalito Assurance, QA), multaj novaj produktoj konstante aperas. Kun tia riĉeco de elekto, elekti la ĝustan ilon ne estas facila tasko.
Inter ĉiuj ekzistantaj CI/KD-iloj, estas du projektoj, kiuj certe indas atenti iu, kiu serĉas ion el ĉi tiu areo. Ni parolas pri Jenkins kaj la ilo GitLab CI / KD, kiu estas parto de la platformo GitLab. Jenkins havas pli ol
Prenu, ekzemple, datumojn de la platformo G2, kiu amasigas recenzojn pri ampleksa vario de produktoj kaj la taksojn, kiujn la uzantoj donas al ili. Jen la averaĝa takso
Se ni parolas pri la populareco de Jenkins kompare kun aliaj similaj platformoj, ni rimarkas, ke ni, publikiginte artikolon komparantan la platformojn Travis CI kaj Jenkins, aranĝis enketon. 85 uzantoj partoprenis en ĝi. Respondantoj estis petitaj elekti la CI/KD-ilon, kiun ili plej ŝatas. 79% elektis Jenkins, 5% elektis Travis CI, kaj 16% indikis, ke ili preferas aliajn ilojn.
Enketaj rezultoj
Inter aliaj CI/CD-iloj, GitLab CI/CD estis menciita plej ofte.
Se vi estas serioza pri DevOps, tiam vi devas zorge elekti la taŭgajn ilojn, konsiderante la specifaĵojn de la projekto, ĝian buĝeton kaj aliajn postulojn. Por helpi vin fari la ĝustan elekton, ni revizios Jenkins kaj GitLab CI/CD. Ĉi tio espereble helpos vin fari la ĝustan elekton.
Enkonduko al Jenkins
La Jenkins-programistoj kreis alian projekton, Jenkins X, kiu estas desegnita por funkcii en Kubernetes-medio. Jenkins X integras Helm, la Jenkins CI/KD-servilon, Kubernetes, kaj aliajn ilojn por konstrui CI/KD-duktojn, kiuj sekvas DevOps plej bonajn praktikojn. Ekzemple, GitOps estas uzata ĉi tie.
Oni povas aldoni al la trezorejo de la avantaĝoj de Jenkins la fakton, ke ĝiaj skriptoj estas tre bone strukturitaj, kompreneblaj kaj facile legeblaj. La Jenkins-teamo kreis ĉirkaŭ 1000 kromaĵojn, kiuj celas organizi la interagadon de Jenkins kun ampleksa vario de teknologioj. Skriptoj povas uzi aŭtentigajn sistemojn, kiuj, ekzemple, permesas vin konekti al diversaj fermitaj sistemoj.
Dum la funkciado de la dukto Jenkins, vi povas observi kio okazas ĉe ĉiu paŝo, ĉu certaj etapoj de laboro estis kompletigitaj sukcese aŭ ne. Vi povas spekti ĉion ĉi, tamen, sen uzi certan grafikan interfacon, sed uzante la kapablojn de la terminalo.
Trajtoj de Jenkins
Inter la konataj trajtoj de Jenkins estas facileco de aranĝo, alta nivelo de aŭtomatigo de diversaj operacioj kaj bonega dokumentado. Se ni parolas pri solvado de taskoj de DevOps, jen Jenkins estas konsiderata tre fidinda ilo, uzante kiu, kiel regulo, ne havas sencon atente kontroli la tutan procezon de projekt-prilaborado. Ĉi tio ne estas la kazo kun aliaj CI/CD-iloj. Ni parolu pri iuj el la plej gravaj trajtoj de Jenkins.
▍1. Senpaga, malferma fonto, plurplatforma subteno
Jenkins povas funkcii per platformoj macOS, Vindozo kaj Linukso. Ĝi ankaŭ povas funkcii en Docker-medio, kiu ebligas al vi organizi unuforman kaj rapidan plenumon de aŭtomatigitaj taskoj. Ĉi tiu ilo ankaŭ povas funkcii kiel servleto en Java-ebligitaj ujoj kiel Apache Tomcat kaj GlassFish. Instalado de Jenkins kvalite
▍2. Evoluinta kromsistemo ekosistemo
La aldonaĵa ekosistemo de Jenkins ŝajnas esti multe pli matura ol la aldonaĵaj ekosistemoj de aliaj CI/KD-iloj. Nuntempe ekzistas pli ol 1500 aldonaĵoj por Jenkins. Ĉi tiuj kromaĵoj celas solvi ampleksan gamon de taskoj, kun ilia helpo vi povas aŭtomatigi diversajn projektojn. La riĉeco de senpagaj aldonaĵoj elekteblaj signifas, ke se vi uzas Jenkins, vi ne devas aĉeti multekostajn pagitajn kromaĵojn. Estas ebleco
▍3. Facila instalado kaj agordo
Jenkins estas sufiĉe facila por instali kaj agordi. Samtempe, la procezo de ĝisdatigo de la sistemo ankaŭ estas tre oportuna. Ĉi tie, denove, indas mencii la kvaliton de la dokumentado, ĉar en ĝi vi povas trovi respondojn al diversaj demandoj rilataj al instalo kaj agordo de Jenkins.
▍4. Amika komunumo
Kiel jam menciite, Jenkins estas malfermkoda projekto, kies ekosistemo inkluzivas grandegan nombron da kromprogramoj. Granda komunumo de uzantoj kaj programistoj formiĝis ĉirkaŭ Jenkins por helpi evoluigi la projekton. La komunumo estas unu el la faktoroj, kiuj pelas la evoluon de Jenkins.
▍5. Havebleco de REST API
Laborante kun Jenkins, vi povas uzi la REST API, kiu pligrandigas la kapablojn de la sistemo. API por fora aliro al la sistemo estas prezentita en tri versioj: XML, JSON kun JSONP-subteno, Python.
▍6. Subteno por paralela plenumado de taskoj
Jenkins subtenas paraleligon de DevOps-taskoj. Ĝi povas esti facile integrita kun rilataj iloj kaj ricevi sciigojn pri la rezultoj de taskoj. Kodtestado povas esti akcelita organizante paralelan konstruon de la projekto uzante malsamajn virtualajn maŝinojn.
▍7. Subteno por laboro en distribuitaj medioj
Jenkins permesas vin organizi distribuitajn konstruaĵojn uzante plurajn komputilojn. Ĉi tiu funkcio estas aplikebla en grandaj projektoj kaj uzas skemon de laboro, laŭ kiu ekzistas unu majstra Jenkins-servilo kaj pluraj sklavaj maŝinoj. Sklavaj maŝinoj ankaŭ povas esti uzataj en situacioj, kie necesas organizi testadon de projekto en malsamaj medioj. Ĉi tiuj trajtoj apartigas Jenkins de aliaj similaj projektoj.
Enkonduko al GitLab
GitLab CI/CD estis origine publikigita kiel memstara projekto, sed en 2015 tiu aro de iloj estis integrita en GitLab 8.0. Ununura GitLab CI/CD-servilo povas subteni pli ol 25000 uzantojn. Surbaze de tiaj serviloj, vi povas krei sistemojn tre disponeblajn.
GitLab CI/CD kaj la ĉefa GitLab-projekto estas skribitaj en Ruby and Go. Ili estas liberigitaj sub la MIT-licenco. GitLab CI/CD, krom la kutimaj trajtoj de CI/CD-iloj, ankaŭ subtenas kromajn funkciojn rilatajn, ekzemple, al laborplanado.
Integri GitLab CI/CD en projekton estas tre facila. Kiam vi uzas GitLab CI/CD, la procezo de prilaborado de projektkodo estas dividita en stadiojn, ĉiu el kiuj povas konsisti el pluraj taskoj faritaj en certa ordo. Taskoj povas esti fajnagorditaj.
Taskoj povas ruliĝi paralele. Post agordo de la sekvenco de stadioj kaj taskoj, la CI/CD-dukto estas preta iri. Vi povas kontroli ĝian progreson monitorante la staton de taskoj. Kiel rezulto, uzi GitLab CI / KD estas tre oportuna, eble pli oportuna ol aliaj similaj iloj.
Trajtoj de GitLab CI/CD kaj GitLab
GitLab CI/CD estas unu el la plej popularaj DevOps-iloj. La projekto distingiĝas per altkvalita dokumentaro, ĝiaj funkcioj estas facilaj kaj oportunaj por uzi. Se vi ankoraŭ ne konas GitLab CI/CD, la sekva listo de la funkcioj de ĉi tiu ilo donos al vi ĝeneralan ideon pri tio, kion vi povas atendi de ĝi. Oni devas rimarki, ke multaj el ĉi tiuj funkcioj rilatas al la platformo GitLab mem, en kiu GitLab CI/KD estas integrita.
▍1. Populareco
GitLab CI/CD estas relative nova ilo, kiu trovis vastan uzon. GitLab CI/KD malrapide fariĝis tre populara CI/KD-ilo uzata por aŭtomata testado kaj programaro deplojo. Ĝi estas simpla agordi. Ĝi ankaŭ estas senpaga CI/KD-ilo konstruita en la platformon GitLab.
▍2. Subteno por GitLab Pages kaj Jekyll
Jekyll estas senmova reteja generatoro, kiu povas esti uzata ene de la GitLab Pages-sistemo por krei retejojn bazitajn sur GitLab-deponejoj. La sistemo prenas la fontmaterialojn kaj generas pretan statikan retejon bazitan sur ili. Vi povas kontroli la aspekton kaj funkciojn de tiaj retejoj redaktante la dosieron _config.yml
, uzita fare de Jekyll.
▍3. Projektplanadkapabloj
Danke al la kapablo plani la stadiojn de projektoj, la oportuno de spurado de problemoj kaj iliaj grupoj pliiĝas. Ĉi tio permesas al vi administri la organizon de laboro en projektoj, plani ilian efektivigon en specifa dato.
▍4. Aŭtomata skalado de CI-kurantoj
Danke al la aŭtomata skalo de kuristoj respondecaj por plenumi specifajn taskojn, vi povas ŝpari multe pri la kosto de luado de servilaj kapabloj. Ĉi tio estas tre grava, precipe kiam temas pri medioj, kie projektoj estas testataj paralele. Krome, ĉi tio estas grava por grandaj projektoj konsistantaj el pluraj deponejoj.
▍5. Problemaj spuriloj
La potencaj temoj spurantaj kapabloj de GitLab igis multajn malfermfontajn projektojn uzi la platformon. GitLab CI/CD permesas paralelan testadon de malsamaj kodbranĉoj. Testrezultoj estas oportune analizitaj en la sistema interfaco. Ĉi tio apartigas GitLab CI/CD de Jenkins.
▍6. Limigante aliron al deponejoj
La platformo GitLab subtenas limigi aliron al deponejoj. Ekzemple, tiuj, kiuj kunlaboras pri projekto en deponejo, povas ricevi permesojn taŭgajn por siaj roloj. Ĉi tio validas precipe por kompaniaj projektoj.
▍7. Aktiva komunuma subteno
Aktiva komunumo formiĝis ĉirkaŭ GitLab, kiu kontribuas al la evoluo de ĉi tiu platformo kaj ĝiaj iloj, precipe, GitLab CI / KD. Profunda integriĝo de GitLab CI/CD kaj GitLab, interalie, faciligas trovi respondojn al demandoj, kiuj aperas kiam vi laboras kun GitLab CI/CD.
▍8. Subteno por diversaj versio-kontrolsistemoj
GitLab CI/CD estas sistemo kiu povas funkcii kun pli ol nur kodo gastigita en GitLab-deponejoj. Ekzemple, la kodo povas esti stokita en GitHub-deponejo, kaj la CI/KD-dukto povas esti organizita surbaze de GitLab uzante GitLab CI/KD.
Komparo de Jenkins kaj GitLab CI/CD
Jenkins kaj GitLab CI/CD estas tre bonaj iloj, kiuj ambaŭ kapablas fari la CI/KD-dukton glate funkcii. Sed se ni komparas ilin, montriĝas ke, kvankam ili estas multrilate similaj, ili diferencas unu de la alia iel.
Характеристика
Jenkins
GitLab CI/KD
Malferma fonto aŭ fermita fonto
malferma fonto
malferma fonto
fikso
Bezonata.
Ne necesas ĉar ĉi tio estas enkonstruita funkcio de la platformo GitLab.
Unika Trajtoj
Kromsubteno.
Profunda integriĝo en versio-kontrolsistemo.
subteno
Mankas.
Disponebla.
Instalado kaj agordo
Malfacilaĵoj ne kaŭzas
Malfacilaĵoj ne kaŭzas
Mem-deplojo de la sistemo
Ĉi tiu estas la sola maniero uzi la sistemon.
Subtenita.
Kreante CI/CD-duktojn
Subtenita, uzante Jenkins Pipeline.
Subtenita.
Monitorado de agado de aplikaĵo
Mankas.
Disponebla.
Ekosistemo
Estas pli ol 1000 kromaĵojn.
La sistemo estas disvolvita ene de GitLab.
API
Subtenas altnivelan API-sistemon.
Proponas API por pli profunda integriĝo en projektojn.
JavaScript subteno
Disponebla.
Disponebla.
Integriĝo kun aliaj iloj
Integriĝo kun aliaj iloj kaj platformoj estas subtenata (Slack, GitHub).
Multaj iloj por integriĝo kun triaj sistemoj, precipe - kun GitHub kaj Kubernetes.
Koda kvalitkontrolo
Subtenita - uzante la SonarQube kromaĵojn kaj aliajn kromaĵojn.
Subtenita.
Diferencoj inter Jenkins kaj GitLab CI/CD
Priskribinte kaj komparinte Jenkins kaj GitLab CI/CD, ni koncentriĝu pri la diferencoj inter ĉi tiuj DevOps-iloj. Koni ĉi tiujn diferencojn helpos vin kompreni tiujn, kiuj preferas unu el ĉi tiuj iloj super la alia.
- GitLab CI/CD povas plene kontroli Git-deponejojn. Ni parolas pri administrado de deponejoj kaj iuj aliaj funkcioj. Sed Jenkins, kvankam ĝi povas funkcii kun deponejoj, ne donas la saman nivelon de kontrolo super ili kiel GitLab CI / KD.
- Jenkins estas senpaga malfermkoda projekto. Tiu, kiu elektas ĝin, deplojas ĝin sendepende. Kaj GitLab CI / KD estas inkluzivita en la platformo GitLab, ĉi tio estas ŝlosila solvo.
- GitLab CI/CD subtenas altnivelajn ilojn pri administrado de taskoj, kiuj funkcias ĉe la projektnivelo. Ĉi tiu flanko de Jenkins estas malpli evoluinta.
Jenkins kaj GitLab CI/CD: fortoj kaj malfortoj
Nun vi havas iom da ideo pri Jenkins kaj GitLab CI/CD. Nun, por ke vi eĉ pli bone konatiĝu kun ĉi tiuj iloj, ni rigardu iliajn fortojn kaj malfortojn. Ni supozas, ke vi jam decidis, kiun ilon vi bezonas. Espereble, ĉi tiu sekcio permesos vin testi vin.
▍Fortoj de Jenkins
- Granda nombro da kromaĵojn.
- Plena kontrolo de ilo-instalado.
- Simpla elpurigo de kuristoj.
- Facila noda agordo.
- Facila koda deplojo.
- Tre bona sistemo de administrado de akreditaĵoj.
- Fleksebleco kaj ĉiuflankeco.
- Subteno por diversaj programlingvoj.
- La sistemo estas komprenebla sur intuicia nivelo.
▍Malfortoj de Jenkins
- Kromaĵoj povas esti malfacilaj uzi.
- Kiam vi uzas Jenkins en malgrandaj projektoj, la tempo bezonata por mem agordi ĝin povas esti senracie granda.
- Manko de ĝeneralaj analizaj informoj pri CI/KD-ĉenoj.
▍Fortoj de GitLab CI/CD
- Bona integriĝo kun Docker.
- Simpla skalo de kuristoj.
- Paralela plenumo de taskoj kiuj estas parto de la stadioj de la CI/CD-dukto.
- Uzante la direktitan aciklan grafeomodelon dum starigado de taskaj rilatoj.
- Alta nivelo de skaleblo pro la ebleco de paralela ekzekuto de kuristoj.
- Facileco aldoni taskojn.
- Simpla konflikta solvado.
- Fidinda sekureca sistemo.
▍Malfortoj de GitLab CI/CD
- Por ĉiu tasko, vi devas priskribi kaj alŝuti / elŝuti artefaktojn.
- Vi ne povas testi la rezultojn de kunfandado de branĉoj antaŭ ol ili estas efektive kunfanditaj.
- Priskribante la stadiojn de la CI / KD-dukto, ankoraŭ ne eblas distingi individuajn stadiojn en ili.
Rezultoj
Kaj Jenkins kaj GitLab CI/CD havas fortojn kaj malfortojn. La respondo al la demando pri tio, kion elekti dependas de la bezonoj kaj karakterizaĵoj de aparta projekto. Ĉiu el la CI/KD-iloj reviziitaj hodiaŭ havas certajn funkciojn, kvankam ĉi tiuj iloj estis kreitaj por solvi la saman problemon. Samtempe, Jenkins estas memstara ilo, kaj GitLab CI / KD estas parto de platformo dizajnita por kunlabori pri kodo.
Elektante CI / KD-sistemon, krom ĝiaj kapabloj, indas konsideri la kostojn, kiuj povas esti asociitaj kun ĝi, kaj kun kio ĝuste DevOps-inĝenieroj, kiuj subtenas la projekton, kutimas labori.
Kiajn CI/KD-iloj vi uzas?
fonto: www.habr.com