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.
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
Võtke näiteks andmed G2 platvormilt, mis kogub arvustusi paljude erinevate toodete ja kasutajate neile antud hinnangute kohta. Siin on keskmine hinnang
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.
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 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
▍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
▍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.
▍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
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?
Allikas: www.habr.com