Jenkins ja GitLab CI/CD lahing

Viimase kümne aasta jooksul on saavutatud märkimisväärseid edusamme pideva integreerimise (Continuous Integration, CI) ja pideva juurutamise (Continuous Delivery, CD) tööriistade arendamisel. Arenduse ja operatsioonide (Development Operations, DevOps) integreerimise tehnoloogiate areng on kaasa toonud CI/CD tööriistade kiiret kasvu. Olemasolevaid lahendusi täiustatakse pidevalt, et jõuda ajaga ühte sammu, ning turule tulevad uued versioonid; tarkvarakvaliteedi (Quality Assurance, QA) valdkonnas ilmneb pidevalt uusi tooteid. Sellise valikurikkuse korral osutub sobiva tööriistade komplekti leidmine keeruliseks ülesandeks.

Jenkins ja GitLab CI/CD lahing

Kõigi olemasolevate CI/CD tööriistade seas on kaks projekti, millele väärib tähelepanu, kui otsite midagi selle valdkonna jaoks. Need on Jenkins ja instrument GitLab CI/CD, mis on osa GitLab platvormist. Jenkins'il on üle 16000 tähe GitHubis. GitLabi hoidla gitlab.com-is on kogunud veidi rohkem 2000 täht. Kui võrrelda hoidlate populaarsust, selgub, et Jenkins on saanud 8 korda rohkem tähti kui platvorm, mille hulka kuulub GitLab CI/CD. Kuid CI/CD tööriista valimisel pole see kaugeltki ainus näitaja, millele tasub tähelepanu pöörata. On ka palju teisi, ja see selgitab, miks Jenkins ja GitLab CI/CD paljudes võrdlustes üksteisega väga lähedased on.

Võtame näiteks andmed platvormilt G2, mis kogub arvustusi erinevate toodete kohta ja hinnanguid, mida neile annavad kasutajad. Siin on keskmine reiting Jenkins, mis on saadud 288 arvustuse põhjal, 4,3 tähte. Ja GitLab siin on 270 arvustust, mille keskmine reiting on 4,4 tähte. Me ei eksi, kui väidame, et Jenkins ja GitLab CI/CD konkureerivad omavahel võrdselt. Huvi pakub, et projekt Jenkins käivitas 2011. aastal ja sellest ajast alates on see olnud testijate lemmik tööriist. Kuid samas käivitatud projekt GitLab CI/CD 2014. aastal on oma positsioone saavutanud, tänu sellele platvormile pakutavatele uusimatele võimalustele.

Kui rääkida Jenkins'i populaarsusest võrreldes teiste sarnaste platvormidega, siis tuleb märkida, et pärast artikli avaldamist, kus võrreldi Travis CI ja Jenkins'i, läbi viidud küsitlusel osales 85 kasutajat. Küsitletutele pakuti valida CI/CD tööriist, mis neile kõige rohkem meeldib. 79% valis Jenkins'i, 5% valis Travis CI ja 16% märkis, et nad eelistavad teisi tööriistu.

Jenkins ja GitLab CI/CD lahing
Küsitluse tulemused

Teiste CI/CD tööriistade seas mainiti kõige sagedamini GitLab CI/CD-d.

Kui tegelete tõsiselt DevOpsiga, peate hoolikalt valima sobivad tööriistad, arvesse võttes projekti eripära, selle eelarvet ja muid nõudeid. Teie õigete valikute tegemisel aitab teid Jenkins'i ja GitLab CI/CD analüüs. See, loodame, aitab teil teha õige valiku.

Tutvumine Jenkins'iga

Jenkins ja GitLab CI/CD lahing
Jenkins — on laialdaselt tuntud paindlik CI/CD tööriist, mis on mõeldud paljude tarkvaraprojektidega seotud ülesannete automatiseerimiseks. Jenkins on täielikult kirjutatud Java keeles ja see on välja antud MIT litsentsi alusel. Sellel on tugev funktsioonide komplekt, mis on suunatud ülesannete automatiseerimisele, mis on seotud ehitamise, testimise, juurutamise, integreerimise ja tarkvara tootmisega. Seda tööriista saab kasutada erinevates operatsioonisüsteemides, sealhulgas macOS-is, Windowsis ja paljudes Linuxi distributsioonides, nagu OpenSUSE, Ubuntu ja Red Hat. Jenkinsil on erinevatele operatsioonisüsteemidele mõeldud installimispakette ning seda saab installida Dockerisse või mis tahes süsteemi, kus on olemas JRE (Java Runtime Environment).

Jenkins'e arendajad lõid veel ühe projekti, Jenkins X, mis on mõeldud töötamiseks Kubernetes keskkonnas. Jenkins X-is on integreeritud Helm, Jenkins CI/CD server, Kubernetes ja muud tööriistad, mis on mõeldud CI/CD torujuhtmete loomiseks, järgides DevOps-i parimaid praktikaid. Näiteks kasutatakse siin GitOps'i.

Jenkins'i tugevuste hulka kuulub ka see, et tema skriptid on väga hästi struktureeritud, arusaadavad ja kergesti loetavad. Jenkins'i meeskond on loonud umbes 1000 plugina, mis on suunatud Jenkins'i koostöö korraldamisele erinevate tehnoloogiatega. Skriptides saab kasutada autentimissüsteeme, mis võimaldab näiteks ühenduda erinevate suletud süsteemidega.

Jenkins'i torujuhtme tööprotsessi käigus on võimalik jälgida, mis toimub igas selle etapis ning kas tööülesanded lõpetatakse edukalt või mitte. Kõike seda saab jälgida, kuigi mitte mingit graafilist kasutajaliidest kasutades, vaid terminali funktsioone rakendades.

Jenkins'i omadused

Jenkins'i tuntud omaduste hulka kuuluvad lihtne seadistamine, kõrge automatiseerimise tase ja suurepärane dokumentatsioon. DevOps ülesannete lahendamiseks peetakse Jenkinsit usaldusväärseks tööriistaks, mille kasutamine ei nõua tavaliselt projekti töötlemise kogu protsessi hoolikat jälgimist. Muude CI/CD tööriistade puhul see nii ei ole. Räägime Jenkins'i mõnest olulisest võimalusest.

▍1. Tasuta, avatud lähtekood, toimetab paljusid platvorme

Jenkins töötab macOS, Windows ja Linux platvormidel. Samuti võib ta töötada Docker keskkonnas, võimaldades automaatsete ülesannete ühtlast ja kiiret täitmist. See tööriist võib lisaks töötada servletina Java-d toetavates konteinerites, nagu Apache Tomcat ja GlassFish. Jenkins'i installimine on hästi dokumenteeritud.

▍2. Arendatud pluginte ökosüsteem

Jenkins'i plugin-ökosüsteem on palju arenenum kui teiste CI/CD tööriistade lisamoodulite ökoloogilised süsteemid. Hetkel on Jenkinsile olemas üle 1500 plugina. Need pluginad on suunatud laiaulatuslike ülesannete lahendamisele, võimaldades automatiseerida erinevaid projekte. Tasuta lisamoodulite rikkus tähendab, et Jenkinsit kasutaval isikul pole hädavajalik osta kalliseid tasulisi pluginaid. On võimalus integreerimise Jenkinsit koos paljude DevOps-tööriistadega.

▍3. Lihtne installimine ja seadistamine

Jenkinsit on üsna lihtne installida ja seadistada. Samuti on süsteemi värskendamise protsess väga mugav. Siinkohal tuleks taas rõhutada dokumentatsiooni kvaliteeti, kuna sellest leiab vastuseid erinevatele küsimustele, mis on seotud Jenkins'i installimise ja seadistamisega.

▍4. Sõbralik kogukond

Nagu juba mainitud, on Jenkins avatud lähtekoodiga projekt, mille ökosüsteem hõlmab suurt hulka lisandmooduleid. Jenkins'i ümber on moodustunud suur kasutajate ja arendajate kogukond, mis aitab projekti arendada. Kogukond on üks teguritest, mis soodustab Jenkins'i arengut.

▍5. REST API olemasolu

Jenkins'i kasutamise käigus on võimalik kasutada REST API-d, mis laiendab süsteemi võimalusi. Süsteemi kaugjuhtimise API on esitatud kolmes variandis: XML, JSON koos JSONP toega, Python. Siin on dokumendileht, mis avab üksikasju Jenkins'i REST API kasutamise kohta.

▍6. Ülesannete samaaegse täitmise tugi

Jenkins toetab DevOps-ülesannete samaaegset täitmist. Seda on lihtne integreerida vastavate tööriistadega ning saada teateid ülesannete tegevuse tulemustest. Koodi testimise kiirus võib suureneda projekti paralleelse koostamise korraldamise kaudu erinevate virtuaalmasinate kasutamisega.

▍7. Tugi jaotatud keskkondades

Jenkins võimaldab korraldada hajutatud kogumisi mitme arvuti abil. See funktsioon sobib suurematele projektidele ja kasutab töökorraldust, mille kohaselt on olemas üks peamine Jenkins server ja mitmed alammasinad. Alammasinaid saab kasutada ka olukordades, kus tuleb korraldada projekti testimine erinevates keskkondades. Need võimalused eristavad Jenkinsit soodsalt teistest sarnastest projektidest.

Tutvumine GitLabiga

Jenkins ja GitLab CI/CD lahing
GitLab CI/CD võib nimetada üheks kõige uuemaks ja armastatumaks DevOps-inseneride tööriistaks. See tasuta avatud lähtekoodiga tööriist on integreeritud GitLabi versioonihaldussüsteemi. GitLabi platvormil on olemas community-versioon, mis toetab reposte haldamist, probleemide jälgimise vahendeid, koodi ülevaatamise korraldamist ja dokumentatsiooni loomisele suunatud mehhanisme. Ettevõtted saavad paigaldada GitLabi kohalikult, sidudes selle süsteemi Active Directory ja LDAP-serveritega kasutajate turvalise autoriseerimise ja autentimise korraldamiseks.

Siin on videosuuna, mis aitab teil õppida, kuidas luua CI/CD torustikke, kasutades GitLabi CI/CD võimalusi.

Alguses anti GitLab CI/CD välja iseseisva projektina, kuid 2015. aastal integreeriti see tööriistade komplekt GitLabi versiooni 8.0. Eraldi GitLab CI/CD server suudab toetada rohkem kui 25 000 kasutajat. Selliste serverite põhjal saab luua süsteeme, mis pakuvad kõrget saadavust.

GitLab CI/CD ja peamine GitLabi projekt on kirjutatud Ruby ja Go keeles. Need on välja antud MIT litsentsi all. GitLab CI/CD, lisaks tavalistele CI/CD tööriistade võimalustele, toetab ka täiendavaid funktsioone, näiteks tööde ajastamist.

GitLab CI/CD integreerimine projekti on väga lihtne. GitLab CI/CD kasutamisel jaguneb projekti kooditöötlus etappideks, millest igaühes võib olla mitu ülesannet, mida täidetakse kindlas järjekorras. Ülesandeid saab kohandada.

Ülesandeid saab täita paralleelselt. Pärast etappide ja CI/CD torujuhtme ülesannete järjekorra seadistamist on see tööks valmis. Torujuhtme täitmise käiku saab jälgida, jälgides ülesannete seisu. Tulemuseks on see, et GitLab CI/CD on väga mugav kasutada, võib-olla isegi mugavam kui teised sarnased tööriistad.

GitLab CI/CD ja GitLabi omadused

GitLab CI/CD on üks populaarsemaid DevOps-tööriistu. Projekt eristub kvaliteetse dokumentatsiooni poolest ning selle võimalusi on lihtne ja mugav kasutada. Kui te pole GitLab CI/CD-ga veel tuttav, annab järgmine nimekiri selle tööriista funktsioonidest teile ülevaate sellest, mida oodata. Tuleb märkida, et paljusid neist funktsioonidest seostatakse GitLab platvormiga, kuhu on integreeritud GitLab CI/CD.

▍1. Populaarsus

GitLab CI/CD on suhteliselt uus tööriist, mis on leidnud laialdast rakendust. GitLab CI/CD on järk-järgult muutunud äärmiselt populaarseks CI/CD-tööriistaks, mida kasutatakse automatiseeritud tarkvara testimiseks ja juurutamiseks. Selle seadistamine on lihtne. See on ka tasuta CI/CD-tööriist, mis on integreeritud GitLab platvormiga.

▍2. GitLab Pages ja Jekylli tugi

Jekyll on staatiliste veebilehtede genereerija, mida saab kasutada GitLab Pages süsteemis GitLab-repositooriumide põhjal veebilehtede loomiseks. Süsteem võtab lähteressursid ja genereerib nende põhjal valmis staatilise veebilehe. Nende veebilehtede välimust ja funktsioone saab hallata, redigeerides faili _config.yml, mida Jekyll kasutab.

▍3. Projektide planeerimise võimalused

Projektide etappide planeerimise võimaluse tõttu tõuseb probleemide jälgimise ja nende grupi mugavus. See võimaldab hallata projektitööde korraldust ja planeerida nende täitmist kindlale kuupäevale.

▍4. CI-runnereid automaatne skaleerimine

Automaatse skaleerimise abil, mis vastutab konkreetsete ülesannete täitmise eest, on võimalik tõsiselt säästa serverivõimsuse rendikulu. See on väga oluline, eriti keskkondades, kus projektide testimine toimub samas režiimis. Samuti on see oluline suurte projektide jaoks, mis koosnevad mitmest repositooriumist.

▍5. Probleemide jälgimise vahendid

GitLab'i probleemide jälgimise võimsad võimalused on teinud sellest platvormist paljude avatud lähtekoodiga projektide valiku. GitLab CI/CD võimaldab erinevate koodiharude paralleelset testimist. Testitulemusi on mugav analüüsida süsteemi liideses. See eristab GitLab CI/CD-d Jenkinsist.

▍6. Juurdepääsu piiramine repodele

GitLab platvorm toetab repodele juurdepääsu piiramist. Näiteks saab projektiga samaaegselt töötavatele isikutele määrata õigusi vastavalt nende rollidele. See on eriti oluline ettevõtete projektide puhul.

▍7. Aktiivne kogukonna tugi

GitLab'i ümber on moodustunud aktiivne kogukond, mis toetab selle platvormi ja tööriistade arendamist, sealhulgas GitLab CI/CD. GitLab CI/CD sügav integreerimine GitLab'iga teeb muu hulgas küsimustele vastuste leidmise lihtsamaks, kui töötate GitLab CI/CD-ga.

▍8. Toetamine erinevate versioonihaldussüsteemide kasutusele

GitLab CI/CD on süsteem, mis suudab töötada mitte ainult GitLabis hostitud koodiga. Näiteks võib koodi hoida GitHubi repodes, samas kui CI/CD torujuhe saab korraldada GitLabi alusel, kasutades GitLab CI/CD-d.

Jenkins ja GitLab CI/CD võrdlus

Jenkins ja GitLab CI/CD on väga head tööriistad, millest igaüks suudab tagada CI/CD torujuhi nõuetekohase toimimise. Kuid nende võrdlemisel selgub, et kuigi nad on paljuski sarnased, on neil mõned erinevused.

Omadus
Jenkins
GitLab CI/CD

Ava- või suletud kood
Avaallikakood
Avaallikakood

Installeerimine
Nõutav.
Ei ole nõutav, kuna see on GitLabi platvormi sisseehitatud funktsioon.

Ainulaadsed omadused
Pluginatugi.
Sügav integreerimine versioonihaldussüsteemiga.

Toetamine
Puudub.
On olemas.

Installeerimine ja seadistamine
Ei tekita raskusi
Ei tekita raskusi

Süsteemi iseseisev juurutamine
See on ainus võimalus süsteemi kasutamiseks.
Toetatud.

CI/CD torujuhtmete loomine
Toetatud, kasutatakse Jenkins Pipeline'i.
Toetatud.

Rakenduste jõudluse jälgimine
Puudub.
On olemas.

Ökosüsteem
Existeerib üle 1000 pistiku.
Süsteem areneb GitLabi raames.

API
Toetab arenenud API süsteemi.
Pakub API-d sügavamaks integreerimiseks projektidesse.

JavaScripti tugi
On olemas.
On olemas.

Integreerimine teiste tööriistadega
Toetatakse integreerimist teiste tööriistade ja platvormidega (Slack, GitHub).
Palju vahendeid kolmandate osapoolte süsteemidega integreerimiseks, sealhulgas GitHubi ja Kubernetesega.

Koodikvaliteedi kontroll
Toetatakse — SonarQube'i ja teiste pluginatega.
Toetatud.

Erinevused Jenkins'i ja GitLab CI/CD vahel

Kirjeldades ja võrreldes Jenkins'i ja GitLab CI/CD-d, keskendume nüüd nende DevOps-tööriistade erinevustele. Nende erinevuste tundmine aitab mõista, miks keegi eelistab ühte tööriista teisele.

  • GitLab CI/CD suudab täielikult hallata Git-repositooriume. See tähendab, et tegemist on harude haldamise ja mõningate teiste funktsioonidega. Kuigi Jenkins suudab ka repositooriumidega töötada, ei paku ta nende üle sama tasemega kontrolli nagu GitLab CI/CD.
  • Jenkins on tasuta avatud lähtekoodiga projekt. Selle valinud kasutaja peaks selle ise üles seadma. GitLab CI/CD on aga osa GitLab platvormist, olles valmis lahendus.
  • GitLab CI/CD toetab arenenud ülesannete haldamise vahendeid, mis töötavad projekti tasemel. Jenkins'i selles osas on arengud nõrgemad.

Jenkins ja GitLab CI/CD: tugevused ja nõrkused

Nüüd on teil juba mingi arusaam Jenkinsist ja GitLab CI/CD-st. Järgmine samm, et paremini nende tööriistadega tutvuda, on nende tugevuste ja nõrkuste analüüsimine. Eeldame, et olete juba otsustanud, milline tööriist teile sobib. Lootame, et see jaotis aitab teil ennast kontrollida.

▍Jenkins'i tugevused

  • Suurepärane pluginate hulk.
  • Täielik kontroll tööriista installimise üle.
  • Lihtne runnerite tõrkeotsing.
  • Lihtne sõlmede seadistamine.
  • Lihtne koodi juurutamine.
  • Väga hea kasutajatehaldus süsteem.
  • Paindlikkus ja universaalsus.
  • Toetab erinevaid programmeerimiskeeli.
  • Süsteem on intuitiivselt arusaadav.

▍Jenkins'i nõrkused

  • Pluginate kasutamisega võivad tekkida probleemid.
  • Väikestes projektides võib Jenkins'i iseseisva seadistamise ajakulu olla põhjendamatu.
  • Üldiste analüüsitulemuste puudumine CI/CD ahelate kohta.

▍GitLab CI/CD tugevused

  • Hea integreeritus Dockeriga.
  • Runnerite lihtne skaleerimine.
  • Ülesannete samaaegne täitmine CI/CD toru etappide osana.
  • Tasku seoste seadistamisel kasutatakse suunatud suletud graafide mudelit.
  • Kõrge skaleeritavuse tase tänu runnerite samasugusele täitmisele.
  • Kergesti saab lisada uusi ülesandeid.
  • Lihtne konfliktide lahendamine.
  • Usaldusväärne turvasüsteem.

▍GitLab CI/CD nõrkused

  • Iga ülesande jaoks tuleb artefakte kirjeldada ja üles laadida/allalaadida.
  • Harude ühinemise tulemusi ei saa enne tegelikku ühinemist testida.
  • CI/CD toru etappide kirjeldamisel ei saa seni eraldi etappe välja tuua.

Kokkuvõte

N nii Jenkins kui GitLab CI/CD-l on omad tugevused ja nõrkused. Küsimus, mida valida, sõltub konkreetse projekti vajadustest ja eripäradest. Iga täna käsitletud CI/CD tööriist erineb mõningate omadustega, kuigi need on loodud sama eesmärgi täitmiseks. Samal ajal on Jenkins iseseisev tööriist, samas kui GitLab CI/CD on osaks koostööplatvormist, mis on mõeldud koodi ühiseks tööhõivamiseks.

CI/CD süsteemi valimisel on oluline lisaks selle võimalustele arvestada ka kulusid, mis võivad sellega kaasneda, ning seda, millega DevOps insenerid, kes projekti toetavad, on harjunud töötama.

Milliseid CI/CD tööriistu te kasutate?

Jenkins ja GitLab CI/CD lahing

Jenkins ja GitLab CI/CD lahing

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster