Jenkinsi lahing ja GitLabi CI/CD

Viimase kümnendi jooksul on tehtud olulisi edusamme pideva integratsiooni (Continuous Integration, CI) ja pideva juurutamise (Continuous Delivery, CD) tööriistade väljatöötamisel. Tarkvaraarenduse ja -töö integreerimise tehnoloogiate (arendusoperatsioonid, DevOps) arendamine on viinud nõudluse kiire kasvuni CI / CD tööriistade järele. Olemasolevaid lahendusi täiustatakse pidevalt, püüdes ajaga kaasas käia, ilmuvad nende uued versioonid, kvaliteedi tagamise tarkvara (Quality Assurance, QA) maailmas ilmub pidevalt palju uusi tooteid. Sellise valikurikkuse korral pole õige tööriista valimine lihtne ülesanne.

Jenkinsi lahing ja GitLabi CI/CD

Kõigi olemasolevate CI / CD tööriistade hulgas on kaks projekti, mis kindlasti väärivad tähelepanu sellele, kes sellest valdkonnast midagi otsib. Me räägime Jenkinsist ja GitLabi CI / CD tööriistast, mis on osa GitLabi platvormist. Jenkinsil on rohkem kui 16000 staarid GitHubis. GitLabi hoidla saidil gitlab.com sai veidi rohkem punkte 2000 tähed. Kui võrrelda hoidlate populaarsust, selgub, et Jenkins sai 8 korda rohkem tähti kui platvorm, mis sisaldab GitLab CI / CD-d. Kuid CI / CD tööriista valimisel pole see kaugeltki ainus näitaja, millele peaksite tähelepanu pöörama. On palju teisi ja see selgitab, miks paljudes võrdlustes on Jenkins ja GitLab CI / CD üksteisele väga lähedased.

Võtke näiteks andmed G2 platvormilt, mis kogub arvustusi paljude erinevate toodete ja kasutajate neile antud hinnangute kohta. Siin on keskmine hinnang Jenkins, mis põhineb 288 arvustusel, on 4,3 tärni. Oh oh GitLab arvustusi on 270, selle tööriista keskmine hinnang on 4,4 tärni. Me ei eksi, öeldes, et Jenkins ja GitLab CI / CD konkureerivad üksteisega võrdsetel tingimustel. Huvitav on märkida, et Jenkinsi projekt ilmus 2011. aastal ja sellest ajast alates on see olnud testijate lemmiktööriist. Kuid samal ajal on 2014. aastal käivitatud GitLabi CI / CD projekt tänu selle platvormi pakutavatele täiustatud funktsioonidele võtnud oma positsiooni väga kõrgele.

Kui räägime Jenkinsi populaarsusest võrreldes teiste sarnaste platvormidega, siis märgime, et pärast Travis CI ja Jenkinsi platvorme võrdleva artikli avaldamist korraldasime küsitluse. Selles osales 85 kasutajat. Vastajatel paluti valida CI/CD tööriist, mis neile kõige rohkem meeldib. 79% valis Jenkinsi, 5% valis Travis CI ja 16% märkis, et eelistab muid tööriistu.

Jenkinsi lahing ja GitLabi CI/CD
Küsitluse tulemused

Teistest CI/CD tööriistadest mainiti kõige sagedamini GitLabi CI/CD-d.

Kui suhtute DevOpsi tõsiselt, peate hoolikalt valima sobivad tööriistad, võttes arvesse projekti eripära, selle eelarvet ja muid nõudeid. Et aidata teil õiget valikut teha, vaatame üle Jenkinsi ja GitLab CI/CD. Loodetavasti aitab see teil teha õige valiku.

Jenkinsi tutvustus

Jenkinsi lahing ja GitLabi CI/CD
Jenkins on tuntud, paindlik CI/CD tööriist, mis on loodud paljude tarkvaraprojektidega seotud ülesannete automatiseerimiseks. Jenkins on kirjutatud täielikult Java keeles ja välja antud MIT litsentsi all. Sellel on võimas funktsioonide komplekt, mille eesmärk on tarkvara loomise, testimise, juurutamise, integreerimise ja vabastamisega seotud ülesannete automatiseerimine. Seda tööriista saab kasutada erinevates operatsioonisüsteemides. Nende hulka kuuluvad macOS, Windows ja paljud Linuxi distributsioonid, nagu OpenSUSE, Ubuntu ja Red Hat. Jenkinsi jaoks on installipaketid, mis on loodud erinevate operatsioonisüsteemide jaoks, seda tööriista saab installida Dockerisse ja igasse süsteemi, millel on JRE (Java Runtime Environment).

Jenkinsi arendajad on loonud veel ühe projekti Jenkins X, mis on mõeldud Kubernetese keskkonnas töötamiseks. Jenkins X integreerib Helmi, Jenkinsi CI/CD serveri, Kubernetese ja muud tööriistad, et luua CI/CD torujuhtmeid, mis järgivad DevOpsi parimaid tavasid. Siin kasutatakse näiteks GitOpsi.

Jenkinsi eeliste hulka võib lisada asjaolu, et selle skriptid on väga hästi struktureeritud, arusaadavad ja kergesti loetavad. Jenkinsi meeskond on loonud umbes 1000 pistikprogrammi, mille eesmärk on korraldada Jenkinsi suhtlust paljude erinevate tehnoloogiatega. Skriptides saab kasutada autentimissüsteeme, mis võimaldab näiteks ühenduda erinevate suletud süsteemidega.

Jenkinsi torujuhtme töötamise ajal saate jälgida, mis igal etapil toimub, kas teatud tööetapid on edukalt läbitud või mitte. Seda kõike saab aga vaadata ilma teatud graafilist liidest kasutamata, vaid terminali võimalusi kasutades.

Jenkinsi omadused

Jenkinsi tuntud funktsioonide hulgas on seadistamise lihtsus, erinevate toimingute kõrge automatiseerituse tase ja suurepärane dokumentatsioon. Kui me räägime DevOpsi ülesannete lahendamisest, siis siin peetakse Jenkinsit väga usaldusväärseks tööriistaks, mille kasutamisel pole reeglina mõtet kogu projekti töötlemise protsessi tähelepanelikult jälgida. Teiste CI/CD tööriistade puhul see nii ei ole. Räägime mõnest Jenkinsi kõige olulisemast funktsioonist.

▍1. Tasuta avatud lähtekoodiga mitme platvormi tugi

Jenkins saab töötada macOS-i, Windowsi ja Linuxi platvormidel. See võib toimida ka Dockeri keskkonnas, mis võimaldab korraldada automatiseeritud ülesannete ühtlast ja kiiret täitmist. See tööriist võib töötada ka servletina Java-toega konteinerites, nagu Apache Tomcat ja GlassFish. Jenkinsi paigaldamine kvalitatiivselt dokumenteeritud.

▍2. Arendatud pistikprogrammide ökosüsteem

Jenkinsi pistikprogrammide ökosüsteem näib olevat palju küpsem kui muude CI/CD tööriistade pistikprogrammide ökosüsteemid. Praegu on Jenkinsi jaoks üle 1500 pistikprogrammi. Need pistikprogrammid on mõeldud paljude ülesannete lahendamiseks, nende abiga saate automatiseerida mitmesuguseid projekte. Tasuta pistikprogrammide rikkalik valik tähendab, et kui kasutate Jenkinsi, ei pea te ostma kalleid tasulisi pistikprogramme. Võimalus on olemas integratsiooni Jenkins paljude DevOpsi tööriistadega.

▍3. Lihtne paigaldus ja seadistamine

Jenkinsi on üsna lihtne paigaldada ja konfigureerida. Samal ajal on ka süsteemi värskendamise protsess väga mugav. Siinkohal tasub taas mainida dokumentatsiooni kvaliteeti, kuna sealt leiate vastused mitmesugustele Jenkinsi installimise ja konfigureerimisega seotud küsimustele.

▍4. Sõbralik kogukond

Nagu juba mainitud, on Jenkins avatud lähtekoodiga projekt, mille ökosüsteem sisaldab tohutul hulgal pluginaid. Jenkinsi ümber on arenenud suur kogukond kasutajaid ja arendajaid, kes aitavad projekti arendada. Kogukond on üks tegureid, mis Jenkinsi arengut juhib.

▍5. REST API saadavus

Jenkinsiga töötades saate kasutada REST API-d, mis laiendab süsteemi võimalusi. Süsteemile kaugjuurdepääsu API on esitatud kolmes versioonis: XML, JSON JSONP toega, Python. siin on Dokumentatsioonileht, mis hõlmab Jenkinsi REST API-ga töötamise üksikasju.

▍6. Ülesannete paralleelse täitmise tugi

Jenkins toetab DevOpsi ülesannete paralleelstamist. Seda saab hõlpsasti integreerida asjakohaste tööriistadega ja saada teateid ülesannete tulemuste kohta. Koodi testimist saab kiirendada, kui korraldada projekti paralleelne ehitamine, kasutades erinevaid virtuaalmasinaid.

▍7. Tugi tööks hajutatud keskkondades

Jenkins võimaldab teil korraldada hajutatud ehitusi mitme arvuti abil. See funktsioon on rakendatav suurtes projektides ja kasutab tööskeemi, mille kohaselt on üks Jenkinsi peaserver ja mitu alammasinat. Slave masinaid saab kasutada ka olukordades, kus on vaja korraldada projekti testimine erinevates keskkondades. Need funktsioonid eristavad Jenkinsi teistest sarnastest projektidest.

Sissejuhatus GitLabi

Jenkinsi lahing ja GitLabi CI/CD
GitLab CI/CD võib nimetada üheks uusimaks ja armastatuimaks DevOpsi tööriistaks. See tasuta avatud lähtekoodiga tööriist on sisse ehitatud GitLabi versioonikontrollisüsteemi. GitLabi platvormil on kogukonna versioon, see toetab hoidlate haldust, probleemide jälgimise tööriistu, koodide ülevaatuse korraldamist, dokumentatsioonile orienteeritud mehhanisme. Ettevõtted saavad GitLabi kohapeal installida, sidudes selle Active Directory ja LDAP-serveritega kasutajate turvaliseks autoriseerimiseks ja autentimiseks.

siin on Videoõpetus, mis aitab teil õppida, kuidas luua GitLabi CI/CD võimalusi kasutades CI/CD torujuhtmeid.

GitLabi CI/CD ilmus algselt eraldiseisva projektina, kuid 2015. aastal integreeriti see tööriistakomplekt GitLab 8.0-sse. Üks GitLabi CI/CD server võib toetada üle 25000 XNUMX kasutaja. Selliste serverite põhjal saate luua süsteeme, mis on väga kättesaadavad.

GitLabi CI/CD ja GitLabi peamine projekt on kirjutatud Ruby and Go keeles. Need vabastatakse MIT-i litsentsi alusel. GitLab CI/CD toetab lisaks tavapärastele CI/CD tööriistade funktsioonidele ka lisafunktsioone, mis on seotud näiteks töögraafikuga.

GitLabi CI/CD integreerimine projekti on väga lihtne. GitLab CI/CD kasutamisel on projekti koodi töötlemise protsess jagatud etappideks, millest igaüks võib koosneda mitmest kindlas järjekorras sooritatavast ülesandest. Ülesandeid saab täpsustada.

Ülesanded võivad töötada paralleelselt. Pärast etappide ja ülesannete järjestuse seadistamist on CI/CD konveier kasutamiseks valmis. Selle edenemist saate jälgida ülesannete olekut jälgides. Selle tulemusena on GitLab CI / CD kasutamine väga mugav, võib-olla mugavam kui muud sarnased tööriistad.

GitLabi CI/CD ja GitLabi omadused

GitLab CI/CD on üks populaarsemaid DevOpsi tööriistu. Projekti eristab kvaliteetne dokumentatsioon, selle funktsioone on lihtne ja mugav kasutada. Kui te pole GitLabi CI/CD-ga veel tuttav, annab järgmine selle tööriista funktsioonide loend teile üldise ettekujutuse sellest, mida saate sellelt oodata. Tuleb märkida, et paljud neist funktsioonidest on seotud GitLabi platvormi endaga, millesse on integreeritud GitLab CI / CD.

▍1. Populaarsus

GitLab CI/CD on suhteliselt uus tööriist, mis on leidnud laialdast kasutust. GitLabi CI/CD-st on aeglaselt saanud ülipopulaarne CI/CD tööriist, mida kasutatakse automatiseeritud testimiseks ja tarkvara juurutamiseks. Selle seadistamine on lihtne. See on ka GitLabi platvormi sisse ehitatud tasuta CI/CD tööriist.

▍2. GitLabi lehtede ja Jekylli tugi

Jekyll on staatiline saidigeneraator, mida saab kasutada GitLabi lehtede süsteemis GitLabi hoidlatel põhinevate saitide loomiseks. Süsteem võtab lähtematerjalid ja genereerib nende põhjal valmis staatilise saidi. Saate juhtida selliste saitide välimust ja funktsioone, muutes faili _config.yml, mida kasutab Jekyll.

▍3. Projekti planeerimise võimalused

Tänu võimalusele planeerida projektide etappe suureneb probleemide ja nende rühmade jälgimise mugavus. See võimaldab juhtida projektidega töötamise korraldust, planeerida nende elluviimist kindlal kuupäeval.

▍4. CI jooksjate automaatne skaleerimine

Tänu konkreetsete ülesannete täitmise eest vastutavate jooksjate automaatsele skaleerimisele saate serveri võimsuste rentimise kuludelt palju kokku hoida. See on väga oluline, eriti kui tegemist on keskkondadega, kus projekte testitakse paralleelselt. Lisaks on see oluline suurte projektide puhul, mis koosnevad mitmest hoidlast.

▍5. Probleemide jälgimise tööriistad

GitLabi võimsad probleemide jälgimise võimalused on viinud paljude avatud lähtekoodiga projektide platvormi kasutama. GitLab CI/CD võimaldab paralleelselt testida erinevaid koodiharusid. Testitulemusi analüüsitakse mugavalt süsteemiliideses. See eristab GitLabi CI/CD-d Jenkinsist.

▍6. Hoidlatele juurdepääsu piiramine

GitLabi platvorm toetab hoidlatele juurdepääsu piiramist. Näiteks neile, kes teevad hoidlas projekti kallal koostööd, saab määrata nende rollidele vastavad õigused. See kehtib eriti ettevõtete projektide kohta.

▍7. Aktiivne kogukonna tugi

GitLabi ümber on välja kujunenud aktiivne kogukond, mis aitab kaasa selle platvormi ja selle tööriistade, eelkõige GitLab CI / CD arendamisele. GitLab CI/CD ja GitLabi sügav integreerimine võimaldab muuhulgas hõlpsalt leida vastuseid küsimustele, mis tekivad GitLab CI/CD-ga töötades.

▍8. Erinevate versioonikontrollisüsteemide tugi

GitLabi CI/CD on süsteem, mis võib töötada enamaga kui lihtsalt GitLabi hoidlates hostitud koodiga. Näiteks saab koodi salvestada GitHubi hoidlasse ja CI / CD torujuhtme saab korraldada GitLabi alusel, kasutades GitLabi CI / CD-d.

Jenkinsi ja GitLabi CI/CD võrdlus

Jenkins ja GitLab CI/CD on väga head tööriistad, mis mõlemad suudavad CI/CD torujuhtme sujuvalt töötada. Aga kui neid võrrelda, siis selgub, et kuigi nad on paljuski sarnased, erinevad nad üksteisest mõnes mõttes.

Iseloomustus
Jenkins
GitLab CI/CD

Avatud lähtekoodiga või suletud lähtekoodiga
avatud lähtekoodiga
avatud lähtekoodiga

Paigaldamine
Nõutud.
Pole nõutav, kuna see on GitLabi platvormi sisseehitatud funktsioon.

Ainulaadsed omadused
Plugina tugi.
Sügav integratsioon versioonikontrollisüsteemi.

Toetama
Puudub.
Saadaval.

Paigaldamine ja seadistamine
Raskused ei põhjusta
Raskused ei põhjusta

Süsteemi isekasutamine
See on ainus viis süsteemi kasutamiseks.
Toetatud.

CI/CD torujuhtmete loomine
Toetatud, kasutades Jenkinsi torujuhet.
Toetatud.

Rakenduse jõudluse jälgimine
Puudub.
Saadaval.

Ökosüsteem
Seal on üle 1000 pistikprogrammi.
Süsteemi arendatakse GitLabi raames.

API
Toetab täiustatud API-süsteemi.
Pakub API-d projektidesse sügavamaks integreerimiseks.

JavaScripti tugi
Saadaval.
Saadaval.

Integreerimine teiste tööriistadega
Toetatud on integreerimine teiste tööriistade ja platvormidega (Slack, GitHub).
Paljud tööriistad integreerimiseks kolmandate osapoolte süsteemidega, eriti GitHubi ja Kubernetesiga.

Koodi kvaliteedikontroll
Toetatud - SonarQube'i pistikprogrammi ja muude pistikprogrammide kasutamine.
Toetatud.

Erinevused Jenkinsi ja GitLabi CI/CD vahel

Olles kirjeldanud ja võrrelnud Jenkinsi ja GitLabi CI/CD-d, keskendume nende DevOpsi tööriistade erinevustele. Nende erinevuste tundmine aitab teil mõista neid, kes eelistavad ühte neist tööriistadest teisele.

  • GitLabi CI/CD suudab Giti hoidlaid täielikult juhtida. Räägime hoidla harude haldamisest ja mõnest muust funktsioonist. Kuid Jenkins, kuigi see võib töötada koos hoidlatega, ei anna nende üle samal tasemel kontrolli kui GitLab CI / CD.
  • Jenkins on tasuta avatud lähtekoodiga projekt. See, kes selle valib, võtab selle iseseisvalt kasutusele. Ja GitLabi CI / CD on lisatud GitLabi platvormile, see on võtmed kätte lahendus.
  • GitLab CI/CD toetab täiustatud ülesannete haldamise tööriistu, mis töötavad projekti tasemel. See Jenkinsi pool on vähem arenenud.

Jenkins ja GitLab CI/CD: tugevad ja nõrgad küljed

Nüüd on teil Jenkinsi ja GitLabi CI/CD kohta aimu. Et teid nende tööriistadega veelgi paremini tundma õppida, vaatame nüüd nende tugevaid ja nõrku külgi. Eeldame, et olete juba otsustanud, millist tööriista vajate. Loodetavasti võimaldab see jaotis teil end proovile panna.

▍Jenkinsi tugevused

  • Suur hulk pluginaid.
  • Täielik kontroll tööriista paigaldamise üle.
  • Jooksjate lihtne silumine.
  • Lihtne sõlme seadistamine.
  • Lihtne koodi juurutamine.
  • Väga hea volikirjade haldussüsteem.
  • Paindlikkus ja mitmekülgsus.
  • Erinevate programmeerimiskeelte tugi.
  • Süsteem on arusaadav intuitiivsel tasandil.

▍Jenkinsi nõrkused

  • Pluginate kasutamine võib olla keeruline.
  • Kui kasutate Jenkinsi väikestes projektides, võib selle enda seadistamiseks kuluv aeg olla ebamõistlikult pikk.
  • Üldise analüütilise teabe puudumine CI/CD ahelate kohta.

▍GitLabi CI/CD tugevused

  • Hea integratsioon Dockeriga.
  • Jooksjate lihtne skaleerimine.
  • CI/CD konveieri etappidesse kuuluvate ülesannete paralleelne täitmine.
  • Suunatud atsüklilise graafiku mudeli kasutamine ülesannete seoste seadistamisel.
  • Kõrge skaleeritavus tänu jooksjate paralleelse täitmise võimalusele.
  • Ülesannete lisamise lihtsus.
  • Lihtne konfliktide lahendamine.
  • Usaldusväärne turvasüsteem.

▍GitLabi CI/CD nõrkused

  • Iga ülesande jaoks peate kirjeldama ja üles / alla laadima artefakte.
  • Filiaalide ühendamise tulemusi ei saa testida enne, kui need on tegelikult ühendatud.
  • CI / CD konveieri etappide kirjeldamisel ei ole veel võimalik nendes üksikuid etappe välja tuua.

Tulemused

Nii Jenkinsil kui ka GitLab CI/CD-l on tugevaid ja nõrku külgi. Vastus küsimusele, mida valida, sõltub konkreetse projekti vajadustest ja omadustest. Igal täna üle vaadatud CI/CD tööriistal on teatud funktsioonid, kuigi need tööriistad loodi sama probleemi lahendamiseks. Samal ajal on Jenkins iseseisev tööriist ja GitLab CI / CD on osa platvormist, mis on loodud koodiga koostööks.

CI / CD süsteemi valimisel tasub lisaks selle võimalustele arvestada sellega kaasneda võivate kuludega ning sellega, millega täpsemalt on projekti toetavad DevOpsi insenerid harjunud töötama.

Milliseid CI/CD tööriistu te kasutate?

Jenkinsi lahing ja GitLabi CI/CD

Jenkinsi lahing ja GitLabi CI/CD

Allikas: www.habr.com

Lisa kommentaar