{"id":96161,"date":"2020-10-08T19:42:48","date_gmt":"2020-10-08T17:42:48","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd"},"modified":"2020-10-08T19:42:48","modified_gmt":"2020-10-08T17:42:48","slug":"bitva-jenkins-i-gitlab-ci-cd","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd","title":{"rendered":"Jenkins ja GitLab CI\/CD lahing","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Viimase k\u00fcmne aasta jooksul on saavutatud m\u00e4rkimisv\u00e4\u00e4rset edu pideva integreerimise (Continuous Integration, CI) ja pideva juurutamise (Continuous Delivery, CD) t\u00f6\u00f6riistade arendamisel. Arendusoperatsioonide (Development Operations, DevOps) tehnikate areng on kiiresti suurendanud n\u00f5udlust CI\/CD t\u00f6\u00f6riistade j\u00e4rele. Eksisteerivad lahendused paranevad pidevalt, p\u00fc\u00fcdledes ajaga sammu pidada, ilmuvad nende uued versioonid ning programmeerimise kvaliteedikontrolli (Quality Assurance, QA) valdkonnas tekib pidevalt hulk uusi tooteid. Sellise valikurikkuse juures \u00f5ige t\u00f6\u00f6riista leidmine ei ole kerge \u00fclesanne.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/522334\/\"><img decoding=\"async\" alt=\"Jenkins ja GitLab CI\/CD lahing\" src=\"\/wp-content\/uploads\/2020\/10\/6cf6dfa92ebec7d6e44776e9c9bfbb6d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>K\u00f5igi olemasolevate CI\/CD t\u00f6\u00f6riistade seas on kaks projekti, millele tasub kindlasti p\u00f6\u00f6rata t\u00e4helepanu, kui otsite midagi sellest valdkonnast. R\u00e4\u00e4gime Jenkinsist ja GitLab CI\/CD t\u00f6\u00f6riistast, mis on osa GitLab platvormist. Jenkinsil on \u00fcle <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jenkinsci\/jenkins\">16000<\/a><\/noindex> t\u00e4he GitHubis. GitLabi repostiit gitlab.com-is on kogunud pisut rohkem kui <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab\">2000<\/a><\/noindex> t\u00e4he. Kui v\u00f5rrelda repostiitide populaarsust, selgub, et Jenkins on kogunud 8 korda rohkem t\u00e4hti kui platvorm, kuhu kuulub GitLab CI\/CD. Kuid CI\/CD t\u00f6\u00f6riista valimisel pole see kaugeltki ainus n\u00e4itaja, millele tuleks t\u00e4helepanu p\u00f6\u00f6rata. On palju teisi ja see seletab, miks Jenkins ja GitLab CI\/CD on paljude v\u00f5rdluste puhul v\u00e4ga l\u00e4hedal \u00fcksteisele.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nV\u00f5tame n\u00e4iteks andmed G2 platvormilt, mis kogub arvustusi erinevate toodete kohta ja hinnanguid, mida kasutajad neile annavad. Siin on keskmine hinnang <noindex><a rel=\"nofollow\" href=\"https:\/\/www.g2.com\/products\/jenkins\/reviews\">Jenkinsile<\/a><\/noindex>, mille aluseks on 288 arvustust, 4,3 t\u00e4hte. Ja <noindex><a rel=\"nofollow\" href=\"https:\/\/www.g2.com\/products\/gitlab\/reviews\">GitLab<\/a><\/noindex> siin on 270 arvustust, mille keskmine hinnang on 4,4 t\u00e4hte. Me ei eksi, kui v\u00e4idame, et Jenkins ja GitLab CI\/CD konkureerivad \u00fcksteisega v\u00f5rdselt. Huvitav on m\u00e4rkida, et Jenkins projekt k\u00e4ivitus 2011. aastal ja on olnud lemmik t\u00f6\u00f6riist testijate seas. Kuid samal ajal on projet GitLab CI\/CD, k\u00e4ivitatud 2014. aastal, oma positsioonid k\u00f5rgele t\u00f5stnud t\u00e4nu sellele platvormile pakutavatele uuenduslikele v\u00f5imalustele.<\/p>\n<p>Kui r\u00e4\u00e4kida Jenkins'i populaarsusest v\u00f5rreldes teiste sarnaste platvormidega, siis m\u00e4rgime, et p\u00e4rast meie artikli avaldamist, milles v\u00f5rreldi Travis CI ja Jenkins'i platvorme, korraldasime k\u00fcsitluse. K\u00fcsitluses osales 85 kasutajat. Respondentidele pakuti valida CI\/CD t\u00f6\u00f6riist, mis neile k\u00f5ige rohkem meeldib. 79% valis Jenkins'i, 5% valis Travis CI ja 16% m\u00e4rkis, et eelistavad teisi t\u00f6\u00f6riistu.<\/p>\n<p><img decoding=\"async\" alt=\"Jenkins ja GitLab CI\/CD lahing\" src=\"\/wp-content\/uploads\/2020\/10\/b66b5d3d5f27f3310c8bf0fc68f4c636.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>K\u00fcsitluse tulemused<\/i><\/p>\n<p>Teiste CI\/CD t\u00f6\u00f6riistade seas mainiti k\u00f5ige sagedamini GitLab CI\/CD.<\/p>\n<p>Kui te tegeleten t\u00f5siselt DevOps'iga, peate hoolikalt valima sobivad t\u00f6\u00f6riistad, arvestades projekti omadusi, selle eelarvet ja muid n\u00f5udmisi. Selleks, et aidata teil teha \u00f5ige valik, kavatseme anal\u00fc\u00fcsida Jenkins'i ja GitLab CI\/CD. Loodame, et see aitab teil teha \u00f5ige valiku.<\/p>\n<h2>Tutvumine Jenkins'iga<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Jenkins ja GitLab CI\/CD lahing\" src=\"\/wp-content\/uploads\/2020\/10\/f7df92d1fb3f81f785fc59da82a943b7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.jenkins.io\/\">Jenkinsile<\/a><\/noindex> on laialdaselt tuntud, paindlik CI\/CD t\u00f6\u00f6riist, mis on m\u00f5eldud paljude tarkvaraprojektidega seotud \u00fclesannete automatiseerimiseks. Jenkins on t\u00e4ielikult kirjutatud Java's ja see on litsentseeritud MIT all. Tal on v\u00f5imas funktsioonide kogum, mis on suunatud \u00fclesannete automatiseerimisele, mis on seotud koostamise, testimise, juurutamise, integreerimise ja tarkvara vabastamisega. Seda t\u00f6\u00f6riista saab kasutada erinevates operatsioonis\u00fcsteemides. Nende hulgas on macOS, Windows ja mitmed Linux'i jaotused, n\u00e4iteks OpenSUSE, Ubuntu ja Red Hat. Jenkins'i installipakette on loodud erinevate operatsioonis\u00fcsteemide jaoks, seda t\u00f6\u00f6riista saab installida Dockerisse ja igas s\u00fcsteemis, kus on JRE (Java Runtime Environment).<\/p>\n<p>Jenkins'i arendajad l\u00f5id veel \u00fche projekti, Jenkins X, mis on m\u00f5eldud t\u00f6\u00f6tamiseks Kubernetes'i keskkonnas. Jenkins X sisaldab Helm'i, Jenkins CI\/CD serverit, Kubernetes'i ja teisi t\u00f6\u00f6riistu, mis on m\u00f5eldud CI\/CD konveierite loomiseks, mis vastavad DevOps'i parimatele praktikatele. N\u00e4iteks kasutatakse siin GitOps'i.<\/p>\n<p>Jenkins'i eeliste hulka v\u00f5ib lisada ka asjaolu, et tema skriptid on v\u00e4ga h\u00e4sti struktureeritud, arusaadavad ja neid on lihtne lugeda. Jenkins'i meeskond on loonud umbes 1000 pistikprogrammi, mis on suunatud Jenkins'i ja erinevate tehnoloogiate koost\u00f6\u00f6 korraldamisele. Skriptides saab kasutada autentimiss\u00fcsteeme, mis n\u00e4iteks v\u00f5imaldab \u00fchenduda erinevate kinniste s\u00fcsteemidega.<\/p>\n<p>Jenkinsi konveieri t\u00f6\u00f6 k\u00e4igus on v\u00f5imalik j\u00e4lgida, mis toimub igas selle etapis, ja kas teatud t\u00f6\u00f6etapid on edukalt l\u00f5petatud v\u00f5i mitte. K\u00f5ike seda on v\u00f5imalik j\u00e4lgida, kasutades mitte m\u00f5nda graafilist kasutajaliidest, vaid terminali v\u00f5imalusi.<\/p>\n<h2>Jenkinsi omadused<\/h2>\n<p>\nJenkinsi laialdaselt tuntud omaduste hulgas on lihtne seadistamine, k\u00f5rge automatiseerimise tase ja suurep\u00e4rane dokumentatsioon. DevOps \u00fclesannete lahendamisel peetakse Jenkinsit usaldusv\u00e4\u00e4rseks t\u00f6\u00f6riistaks, mille kasutamisel ei ole tavaliselt m\u00f5tet pidevalt kogu projekti t\u00f6\u00f6tlemisprotsessi j\u00e4lgida. Teiste CI\/CD t\u00f6\u00f6riistade puhul see nii ei ole. R\u00e4\u00e4gime m\u00f5nest Jenkins'i olulisest v\u00f5imalusest.<\/p>\n<h3>\u258d1. Tasuta, avatud l\u00e4htekood, mitme platvormi tugi<\/h3>\n<p>\nJenkins t\u00f6\u00f6tab platvormidel macOS, Windows ja Linux. Seda on v\u00f5imalik kasutada ka Dockeris, mis v\u00f5imaldab korraldada \u00fchtlast ja kiiret automatiseeritud \u00fclesannete t\u00e4itmist. See t\u00f6\u00f6riist saab samuti t\u00f6\u00f6tada servletina konteinerites, mis toetavad Java'd, nagu Apache Tomcat ja GlassFish. Jenkins'i installimine on kvaliteetselt dokumenteeritud <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jenkins.io\/doc\/book\/installing\/\">dokumenteeritud<\/a><\/noindex>.<\/p>\n<h3>\u258d2. Arenenud pluginite \u00f6kos\u00fcsteem<\/h3>\n<p>\nJenkinsi pluginite \u00f6kos\u00fcsteem n\u00e4eb v\u00e4lja palju arenenum v\u00f5rreldes teiste CI\/CD t\u00f6\u00f6riistade lisamoodulite \u00f6kos\u00fcsteemidega. Praegu on olemas \u00fcle 1500 plugina Jenkins'i jaoks. Need pluginad on suunatud laia valiku probleemide lahendamisele, nende abil saab automatiseerida k\u00f5ige erinevamaid projekte. Tasuta pluginite rikkalik valik t\u00e4hendab, et Jenkins'i kasutajal ei ole teravat vajadust osta kalleid tasulisi pluginaid. On v\u00f5imalus <noindex><a rel=\"nofollow\" href=\"https:\/\/www.lambdatest.com\/support\/docs\/jenkins-with-lambdatest\/\">integreerimise<\/a><\/noindex> Jenkins mitmekesiste DevOps-t\u00f6\u00f6riistadega.<\/p>\n<h3>\u258d3. Lihtne paigaldamine ja seadistamine<\/h3>\n<p>\nJenkins'i paigaldamine ja seadistamine on \u00fcsna lihtne. Samuti on s\u00fcsteemi uuendamise protsess v\u00e4ga mugav. Siinkohal tasub taas mainida dokumentatsiooni kvaliteeti, kuna sealt on v\u00f5imalik leida vastuseid erinevatele k\u00fcsimustele, mis on seotud Jenkins'i paigaldamise ja seadistamisega.<\/p>\n<h3>\u258d4. S\u00f5bralik kogukond<\/h3>\n<p>\nNagu juba \u00f6eldud, on Jenkins avatud koodiga projekt, mille \u00f6kos\u00fcsteem sisaldab tohutut hulka pluginaid. Jenkins'i \u00fcmber on tekkinud suur kasutajate ja arendajate kogukond, kes aitavad projekti arengut. Kogukond on \u00fcks tegur, mis toetab Jenkins'i arengut.<\/p>\n<h3>\u258d5. REST API olemasolu<\/h3>\n<p>\nJenkins'iga t\u00f6\u00f6tades on v\u00f5imalik kasutada REST API-d, mis laiendab s\u00fcsteemi v\u00f5imalusi. S\u00fcsteemi kaugjuhtimise API on saadaval kolmes variandis: XML, JSON koos JSONP toega, Python. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jenkins.io\/doc\/book\/using\/remote-access-api\/\">Siin<\/a><\/noindex> dokumentatsioonileht, mis avab \u00fcksikasjad Jenkins REST API t\u00f6\u00f6 kohta.<\/p>\n<h3>\u258d6. \u00dclesannete paralleelse t\u00e4itmise toetus<\/h3>\n<p>\nJenkins toetab DevOps'i \u00fclesannete paralleelset t\u00e4itmist. Seda on lihtne integreerida vastavate t\u00f6\u00f6riistadega ja saada teateid \u00fclesannete t\u00e4itmise tulemustest. Koodi testimise kiirus v\u00f5ib suureneda projekti paralleelsete \u00fclesannete t\u00e4itmise korraldamise kaudu erinevate virtuaalmasinate abil.<\/p>\n<h3>\u258d7. Tugi jaotatud keskkondadesse t\u00f6\u00f6tamiseks<\/h3>\n<p>\nJenkins v\u00f5imaldab korraldada jaotatud \u00fclesandeid mitmete arvutite abil. See v\u00f5imalus on rakendatav suurtes projektides ning kasutab t\u00f6\u00f6p\u00f5him\u00f5tet, mille kohaselt on olemas \u00fcks peamine Jenkins'i server ja mitu alluvat masinat. Alluvad masinad v\u00f5ivad olla kasutusel ka olukordades, kus on vaja korraldada projekti testimist erinevates keskkondades. Need v\u00f5imalused eristavad Jenkins'i soodsalt teistest sarnastest projektidest.<\/p>\n<h2>Tutvumine GitLab'iga<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Jenkins ja GitLab CI\/CD lahing\" src=\"\/wp-content\/uploads\/2020\/10\/aa89f462b8378c8efefef142ff0ca6be.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/\">GitLab CI\/CD<\/a><\/noindex> on \u00fcks uusimaid ja armastatumaid DevOps'i inseneride t\u00f6\u00f6riistu. See tasuta avatud koodiga t\u00f6\u00f6riist on integreeritud versioonihalduss\u00fcsteemi GitLab. GitLab'i platvormil on community-versioon, mis toetab hoidlate haldust, probleemide j\u00e4lgimise t\u00f6\u00f6riistu, koodikontrolli korraldamist, dokumentatsiooni loomise suunatud mehhanisme. Ettev\u00f5tted saavad paigaldada GitLab'i kohalikult, seostades selle s\u00fcsteemi Active Directory ja LDAP-serveritega, et korraldada turvalist autoriseerimist ja autentimist.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/3quCZ7ZMg0Y\">Siin<\/a><\/noindex> videojuhend, mis aitab teil \u00f5ppida, kuidas luua CI\/CD torujuhtmeid kasutades GitLab CI\/CD v\u00f5imalusi.<\/p>\n<p>Alguses oli GitLab CI\/CD iseseisev projekt, kuid 2015. aastal integreeriti see t\u00f6\u00f6riistade kogum GitLabi versiooniga 8.0. Eraldi GitLab CI\/CD-server suudab toeta \u00fcle 25000 kasutaja t\u00f6\u00f6. Taolistele serveritele saab luua s\u00fcsteeme, mis pakuvad k\u00f5rget k\u00e4ttesaadavust.<\/p>\n<p>GitLab CI\/CD ja p\u00f5hi-GitLab projekt on kirjutatud Ruby ja Go keeles. Need on avaldatud MIT litsentsi alusel. GitLab CI\/CD toetab tavaliste CI\/CD-t\u00f6\u00f6riistade funktsioonide k\u00f5rval ka t\u00e4iendavaid v\u00f5imalusi, n\u00e4iteks t\u00f6\u00f6de ajastamist.<\/p>\n<p>GitLab CI\/CD integreerimine projekti on v\u00e4ga lihtne. GitLab CI\/CD kasutamisel jaguneb projekti koodiprotsess etappideks, millest iga\u00fches v\u00f5ib olla mitu \u00fclesannet, mida tehakse kindlas j\u00e4rjestuses. \u00dclesandeid saab t\u00e4pselt kohandada.<\/p>\n<p>\u00dclesandeid saab t\u00e4ita paralleelselt. P\u00e4rast etappide ja CI\/CD-protsessi \u00fclesannete j\u00e4rjekorra seadistamist on CI\/CD torujuhe t\u00f6\u00f6valmis. Selle teostuse k\u00e4iku saab j\u00e4lgida, j\u00e4lgides \u00fclesannete staatust. Seet\u00f5ttu on GitLab CI\/CD kasutamine \u00e4\u00e4rmiselt mugav, v\u00f5ib-olla mugavam kui teiste sarnaste t\u00f6\u00f6riistade puhul.<\/p>\n<h2>GitLab CI\/CD ja GitLab omadused<\/h2>\n<p>\nGitLab CI\/CD on \u00fcks populaarsemaid DevOps-t\u00f6\u00f6riistu. Projekt eristub kvaliteetse dokumentatsiooni poolest, mis on lihtne ja mugav kasutada. Kui te pole veel GitLab CI\/CD-ga tuttav, siis j\u00e4rgmine t\u00f6\u00f6riistade omaduste loetelu annab teile \u00fcldise \u00fclevaate sellest, mida oodata. Tuleb m\u00e4rkida, et paljud neist omadustest on seotud ise GitLab platvormiga, kuhu on integreeritud GitLab CI\/CD.<\/p>\n<h3>\u258d1. Populaarsus<\/h3>\n<p>\nGitLab CI\/CD on suhteliselt uus t\u00f6\u00f6riist, mille kasutamine on laialt levinud. GitLab CI\/CD on j\u00e4rk-j\u00e4rgult muutunud \u00e4\u00e4rmiselt populaarseks CI\/CD-t\u00f6\u00f6riistaks, mida kasutatakse tarkvara automatiseeritud testimiseks ja juurutamiseks. Selle seadistamine on lihtne. Lisaks on see tasuta CI\/CD-t\u00f6\u00f6riist, mis on integreeritud GitLab platvormi.<\/p>\n<h3>\u258d2. GitLab Pages ja Jekylli tugi<\/h3>\n<p>\nJekyll on staatiliste veebilehtede generaator, mida saab kasutada GitLab Pages s\u00fcsteemis GitLabi hoidlate alusel veebilehtede loomiseks. S\u00fcsteem v\u00f5tab sisendmaterjalid ja genereerib nende p\u00f5hjal valmis staatilise veebilehe. Selliste veebilehtede v\u00e4limust ja v\u00f5imalusi saab hallata, muutes faili <code>_config.yml<\/code>, mida Jekyll kasutab.<\/p>\n<h3>\u258d3. Projektide planeerimise v\u00f5imalused<\/h3>\n<p>\nProjektide etappide planeerimise v\u00f5imaluste t\u00f5ttu on probleemide j\u00e4lgimine ja nende r\u00fchmitamine lihtsam. See v\u00f5imaldab hallata projektit\u00f6id, planeerides nende t\u00e4itmist kindlaksm\u00e4\u00e4ratud kuup\u00e4evaks.<\/p>\n<h3>\u258d4. CI- jooksjate automaatne skaleerimine<\/h3>\n<p>\nCI- jooksjate automaatne skaleerimine, mille eest vastutavad konkreetsed \u00fclesanded, aitab t\u00f5siselt kokku hoida serverite rentimise kulusid. See on eriti oluline, kui testitakse projekte paralleelselt. Samuti on see oluline suurte projektide puhul, mis koosnevad mitmest hoidlast.<\/p>\n<h3>\u258d5. Probleemide j\u00e4lgimise vahendid<\/h3>\n<p>\nGitLabi v\u00f5imsad probleemide j\u00e4lgimise v\u00f5imalused on viinud selleni, et paljusid avatud l\u00e4htekoodiga projekte kasutab just see platvorm. GitLab CI\/CD v\u00f5imaldab erinevate koodiharu paralleelset testimist. Katsetamise tulemusi on mugav s\u00fcsteemi liideses anal\u00fc\u00fcsida. See eristab GitLab CI\/CD-d Jenkinsist.<\/p>\n<h3>\u258d6. Juurdep\u00e4\u00e4su piiramise v\u00f5imalused hoidlatele<\/h3>\n<p>\nGitLab platvorm toetab hoidlate juurdep\u00e4\u00e4su piiranguid. N\u00e4iteks neile, kes t\u00f6\u00f6tavad koos projektis mingis hoidlas, saab m\u00e4\u00e4rata \u00f5igused vastavalt nende rollidele. See on eriti aktuaalne ettev\u00f5tete projektide jaoks.<\/p>\n<h3>\u258d7. Kogukonna aktiivne toetus<\/h3>\n<p>\nGitLabi \u00fcmber on kujunenud aktiivne kogukond, mis toetab selle platvormi ja t\u00f6\u00f6riistade, sealhulgas GitLab CI\/CD, arengut. GitLab CI\/CD ja GitLabi s\u00fcgav integreerimine lihtsustab ka vastuste leidmist GitLab CI\/CD t\u00f6\u00f6protsesside k\u00e4igus esinevatele k\u00fcsimustele.<\/p>\n<h3>\u258d8. Tugi erinevatele versioonihalduse s\u00fcsteemidele<\/h3>\n<p>\nGitLab CI\/CD on s\u00fcsteem, mis suudab t\u00f6\u00f6tada mitte ainult GitLabi hoidlatest p\u00e4rineva koodiga. N\u00e4iteks v\u00f5ib koodi hoida GitHubi hoidlas, kuid CI\/CD kanali v\u00f5ib organiseerida GitLabi alusel, kasutades GitLab CI\/CD-d.<\/p>\n<h2>Jenkins ja GitLab CI\/CD v\u00f5rdlus<\/h2>\n<p>\nJenkins ja GitLab CI\/CD on v\u00e4ga head t\u00f6\u00f6riistad, mis suudavad tagada CI\/CD kanali normaalse t\u00f6\u00f6. Kuid nende v\u00f5rdlemisel selgub, et kuigi nad on paljuski sarnased, on nad teatud aspektides \u00fcksteisest erinevad.<\/p>\n<p><strong>Omadus<\/strong><br \/>\n<strong>Jenkinsile<\/strong><br \/>\n<strong>GitLab CI\/CD<\/strong><\/p>\n<p>Avaalne v\u00f5i suletud kood<br \/>\nAvaalne kood<br \/>\nAvaalne kood<\/p>\n<p>Paigaldamine<br \/>\nN\u00f5utav.<br \/>\nEi ole vajalik, kuna see on GitLabi platvormi sisseehitatud funktsioon.<\/p>\n<p>Ainulaadsed omadused<br \/>\nPluginatugi.<br \/>\nS\u00fcgav integreerimine versioonihalduss\u00fcsteemi.<\/p>\n<p>Tugi<br \/>\nPuudub.<br \/>\nOn olemas.<\/p>\n<p>Paigaldamine ja seadistamine<br \/>\nEi p\u00f5hjusta keerukusi<br \/>\nEi p\u00f5hjusta keerukusi<\/p>\n<p>Iseseisev s\u00fcsteemi juurutamine<br \/>\nSee on ainus v\u00f5imalus s\u00fcsteemi kasutamiseks.<br \/>\nTugineb.<\/p>\n<p>CI\/CD torujuhtmete loomine<br \/>\nTugineb, kasutab Jenkins Pipeline'i.<br \/>\nTugineb.<\/p>\n<p>Rakenduste j\u00f5udluse j\u00e4lgimine<br \/>\nPuudub.<br \/>\nOn olemas.<\/p>\n<p>\u00d6kos\u00fcsteem<br \/>\nRohkem kui 1000 pluginat on olemas.<br \/>\nS\u00fcsteem areneb GitLab'i raames.<\/p>\n<p>API<br \/>\nToetab arenenud API s\u00fcsteemi.<br \/>\nPakub API-d s\u00fcgavamaks integreerimiseks projektidesse.<\/p>\n<p>JavaScripti tugi<br \/>\nOn olemas.<br \/>\nOn olemas.<\/p>\n<p>Integreerimine teiste t\u00f6\u00f6riistadega<br \/>\nToetab integreerimist teiste t\u00f6\u00f6riistade ja platvormidega (Slack, GitHub).<br \/>\nRohkem vahendeid kolmandate osapoolte s\u00fcsteemidega integreerimiseks, sealhulgas GitHub'i ja Kubernetesega.<\/p>\n<p>Koodi kvaliteedi kontroll<br \/>\nToetatakse \u2014 SonarQube'i ja teiste pluginatega.<br \/>\nTugineb.<\/p>\n<p><\/p>\n<h2>Erinevused Jenkins'i ja GitLab CI\/CD vahel<\/h2>\n<p>\nKirjeldades ja v\u00f5rreldes Jenkins'i ja GitLab CI\/CD-d, keskendugem n\u00fc\u00fcd nende DevOps-t\u00f6\u00f6riistade erinevustele. Need erinevused aitavad m\u00f5ista, miks m\u00f5ned eelistavad \u00fchte t\u00f6\u00f6riista teisele.<\/p>\n<ul>\n<li>GitLab CI\/CD suudab t\u00e4ielikult hallata Git-repositooriaid. See t\u00e4hendab, et nad saavad hallata repositooriumide harusid ja m\u00f5ningaid teisi v\u00f5imalusi. Siiski Jenkin, kuigi suudab repositooriumidega t\u00f6\u00f6tada, ei paku sama taset nende \u00fcle kontrollimiseks nagu GitLab CI\/CD.<\/li>\n<li>Jenkins on tasuta avatud l\u00e4htekoodiga projekt. Keegi, kes selle valib, juurutab selle iseseisvalt. GitLab CI\/CD on aga osa GitLabi platvormist, olles valmis lahenduseks.<\/li>\n<li>GitLab CI\/CD toetab arenenud \u00fclesannete haldamise vahendeid, mis t\u00f6\u00f6tavad projektitasandil. Jenkin selle osa on v\u00e4hem arenenud.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Jenkins ja GitLab CI\/CD: tugevused ja n\u00f5rkused<\/h2>\n<p>\nN\u00fc\u00fcd on teil olemas \u00fclevaade Jenkins'ist ja GitLab CI\/CD-st. Et veel paremini nendega tutvuda, vaatame nende tugevaid ja n\u00f5rku k\u00fclgi. Lootame, et olete juba otsustanud, milline t\u00f6\u00f6riist teile k\u00f5ige paremini sobib. Loodame, et see jaotis aitab teil ennast kontrollida.<\/p>\n<h3>\u258dJenkins'i tugevad k\u00fcljed<\/h3>\n<p><\/p>\n<ul>\n<li>Suur hulk pluginaid.<\/li>\n<li>T\u00e4ielik kontroll t\u00f6\u00f6riista seadistamise \u00fcle.<\/li>\n<li>Lihtne runner'ite t\u00f5rkeotsing.<\/li>\n<li>Lihtne s\u00f5lmede seadistamine.<\/li>\n<li>Lihtne koodi juurutamine.<\/li>\n<li>Very good user management system.<\/li>\n<li>Flexibility and versatility.<\/li>\n<li>Support for various programming languages.<\/li>\n<li>The system is understandable on an intuitive level.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u258dWeaknesses of Jenkins<\/h3>\n<p><\/p>\n<ul>\n<li>Using plugins can lead to difficulties.<\/li>\n<li>When using Jenkins in small projects, the time required for its independent setup can be unjustifiably high.<\/li>\n<li>Lack of overall analytics on CI\/CD pipelines.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u258dStrengths of GitLab CI\/CD<\/h3>\n<p><\/p>\n<ul>\n<li>Good integration with Docker.<\/li>\n<li>Easy scaling of runners.<\/li>\n<li>Parallel execution of tasks involved in the CI\/CD pipeline stages.<\/li>\n<li>Using a directed acyclic graph model for configuring task relationships.<\/li>\n<li>High scalability due to the ability to run runners in parallel.<\/li>\n<li>Ease of adding tasks.<\/li>\n<li>Simple resolution of conflicts.<\/li>\n<li>Reliable security system.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u258dWeaknesses of GitLab CI\/CD<\/h3>\n<p><\/p>\n<ul>\n<li>For each task, it is necessary to describe and upload\/download artifacts.<\/li>\n<li>One cannot test the results of branch merges before the actual merging.<\/li>\n<li>When describing CI\/CD pipeline stages, one cannot currently distinguish separate phases.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Summary<\/h2>\n<p>\nBoth Jenkins and GitLab CI\/CD have strengths and weaknesses. The choice of which one to pick depends on the needs and specifics of the particular project. Each of the CI\/CD tools discussed today has certain features, although these tools are created to solve the same issue. Jenkins is a standalone tool, while GitLab CI\/CD is part of a collaboration platform for code.<\/p>\n<p>When choosing a CI\/CD system, aside from its capabilities, it is important to consider the costs that may be associated with it and what DevOps engineers are accustomed to working with.<\/p>\n<p>What CI\/CD tools do you use?<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/ruvds.com\/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=perevod&amp;utm_content=bitva_jenkins_i_gitlab_ci_cd#order\"><img decoding=\"async\" alt=\"Jenkins ja GitLab CI\/CD lahing\" src=\"\/wp-content\/uploads\/2020\/10\/cc25a9353b43773d11028a7a2caf96f1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/ruvds.com\/ru-rub\/news\/read\/123?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=perevod&amp;utm_content=bitva_jenkins_i_gitlab_ci_cd\"><img decoding=\"async\" alt=\"Jenkins ja GitLab CI\/CD lahing\" src=\"\/wp-content\/uploads\/2020\/10\/efaafe7301c2f6a2fb00a22e7a0fa41a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/522334\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (Continuous Integration, CI) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f (Continuous Delivery, CD). \u0420\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u041f\u041e (Development Operations, DevOps) \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443 \u0440\u043e\u0441\u0442\u0443 \u0441\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 CI\/CD-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0430\u044e\u0442\u0441\u044f, \u0441\u0442\u0440\u0435\u043c\u044f\u0441\u044c \u0438\u0434\u0442\u0438 \u0432 \u043d\u043e\u0433\u0443 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0438\u0445 \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u0432 \u043c\u0438\u0440\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":96162,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-96161","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (Continuous Integration, CI) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f (Continuous Delivery, CD).\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0411\u0438\u0442\u0432\u0430 Jenkins \u0438 GitLab CI\/CD | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (Continuous Integration, CI) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f (Continuous Delivery, CD).\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-08T17:42:48+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-08T17:42:48+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Battle of Jenkins and GitLab CI\/CD | ProHoster","description":"Significant progress has been made in the last decade in the development of continuous integration (CI) and continuous delivery (CD) tools.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0411\u0438\u0442\u0432\u0430 Jenkins \u0438 GitLab CI\/CD | ProHoster","og:description":"\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (Continuous Integration, CI) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f (Continuous Delivery, CD).","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-08T17:42:48+00:00","article:modified_time":"2020-10-08T17:42:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"96161","title":null,"description":null,"keywords":null,"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:51:00","updated":"2026-08-11 12:50:09","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/96161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=96161"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/96161\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/96162"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=96161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=96161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=96161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}