Ni awọn ọdun mẹwa to koja, awọn ilọsiwaju pataki ni a ti ṣe ni idagbasoke awọn irinṣẹ fun iṣọpọ ilọsiwaju (Ilọsiwaju Ilọsiwaju, CI) ati imuṣiṣẹ ilọsiwaju (Ifijiṣẹ Ilọsiwaju, CD). Idagbasoke ti awọn imọ-ẹrọ fun sisọpọ idagbasoke sọfitiwia ati iṣẹ (Awọn iṣẹ idagbasoke, DevOps) ti yori si ilosoke iyara ni ibeere fun awọn irinṣẹ CI / CD. Awọn iṣeduro ti o wa tẹlẹ ti wa ni ilọsiwaju nigbagbogbo, igbiyanju lati tọju awọn akoko, awọn ẹya tuntun wọn ti tu silẹ, ni agbaye ti sọfitiwia idaniloju didara (Idaniloju Didara, QA), ọpọlọpọ awọn ọja titun ti n han nigbagbogbo. Pẹlu iru ọrọ yiyan, yiyan ọpa ti o tọ kii ṣe iṣẹ ti o rọrun.
Lara gbogbo awọn irinṣẹ CI / CD ti o wa tẹlẹ, awọn iṣẹ akanṣe meji wa ti o tọ lati san ifojusi si ẹnikan ti o n wa nkan lati agbegbe yii. A n sọrọ nipa Jenkins ati ohun elo GitLab CI / CD, eyiti o jẹ apakan ti pẹpẹ GitLab. Jenkins ni diẹ sii ju
Mu, fun apẹẹrẹ, data lati ori pẹpẹ G2, eyiti o ṣajọpọ awọn atunwo ti ọpọlọpọ awọn ọja ati awọn iwọntunwọnsi ti awọn olumulo fun wọn. Eyi ni idiyele apapọ
Ti a ba sọrọ nipa olokiki ti Jenkins ni akawe pẹlu awọn iru ẹrọ miiran ti o jọra, a ṣe akiyesi pe a, ti ṣe atẹjade nkan kan ti o ṣe afiwe awọn iru ẹrọ Travis CI ati Jenkins, ṣeto iwadi kan. Awọn olumulo 85 ṣe alabapin ninu rẹ. A beere lọwọ awọn oludahun lati yan ohun elo CI/CD ti wọn fẹran julọ. 79% yan Jenkins, 5% yan Travis CI, ati 16% fihan pe wọn fẹ awọn irinṣẹ miiran.
Awọn abajade idibo
Lara awọn irinṣẹ CI/CD miiran, GitLab CI/CD ni a mẹnuba nigbagbogbo.
Ti o ba ṣe pataki nipa DevOps, lẹhinna o nilo lati farabalẹ yan awọn irinṣẹ ti o yẹ, ni akiyesi awọn pato ti iṣẹ akanṣe, isuna rẹ, ati awọn ibeere miiran. Lati ṣe iranlọwọ fun ọ lati ṣe yiyan ti o tọ, a yoo ṣe atunyẹwo Jenkins ati GitLab CI/CD. Eyi yoo ni ireti ran ọ lọwọ lati ṣe yiyan ti o tọ.
Ifihan to Jenkins
Awọn olupilẹṣẹ Jenkins ti ṣẹda iṣẹ akanṣe miiran, Jenkins X, eyiti a ṣe apẹrẹ lati ṣiṣẹ ni agbegbe Kubernetes kan. Jenkins X ṣepọ Helm, Jenkins CI / CD Server, Kubernetes, ati awọn irinṣẹ miiran lati kọ awọn opo gigun ti CI / CD ti o tẹle awọn iṣe ti o dara julọ DevOps. Fun apẹẹrẹ, GitOps ti lo nibi.
Ẹnikan le ṣafikun si ile-iṣura ti awọn anfani ti Jenkins ni otitọ pe awọn iwe afọwọkọ rẹ ti ṣeto daradara, oye, ati rọrun lati ka. Ẹgbẹ Jenkins ti ṣẹda nipa awọn afikun 1000 ti o ni ero lati ṣeto ibaraenisepo ti Jenkins pẹlu ọpọlọpọ awọn imọ-ẹrọ lọpọlọpọ. Awọn iwe afọwọkọ le lo awọn ọna ṣiṣe ijẹrisi, eyiti, fun apẹẹrẹ, gba ọ laaye lati sopọ si ọpọlọpọ awọn ọna ṣiṣe pipade.
Lakoko isẹ ti opo gigun ti epo Jenkins, o le ṣe akiyesi ohun ti o ṣẹlẹ ni igbesẹ kọọkan, boya awọn ipele iṣẹ kan ti pari ni aṣeyọri tabi rara. O le wo gbogbo eyi, sibẹsibẹ, laisi lilo wiwo ayaworan kan, ṣugbọn lilo awọn agbara ti ebute naa.
Awọn ẹya ara ẹrọ ti Jenkins
Lara awọn ẹya ti a mọ daradara ti Jenkins jẹ irọrun ti iṣeto, ipele giga ti adaṣe ti awọn iṣẹ ṣiṣe lọpọlọpọ, ati awọn iwe ti o dara julọ. Ti a ba sọrọ nipa lohun awọn iṣẹ-ṣiṣe DevOps, lẹhinna nibi Jenkins ni a kà si ohun elo ti o gbẹkẹle, lilo eyiti, gẹgẹbi ofin, ko ṣe oye lati ṣe atẹle ni pẹkipẹki gbogbo ilana ti iṣelọpọ ise agbese. Eyi kii ṣe ọran pẹlu awọn irinṣẹ CI/CD miiran. Jẹ ki a sọrọ nipa diẹ ninu awọn ẹya pataki julọ ti Jenkins.
▍1. Ọfẹ, orisun ṣiṣi, atilẹyin ọna ẹrọ pupọ
Jenkins le ṣiṣẹ lori awọn iru ẹrọ MacOS, Windows ati Lainos. O tun le ṣiṣẹ ni agbegbe Docker kan, eyiti o fun ọ laaye lati ṣeto aṣọ ile ati ipaniyan iyara ti awọn iṣẹ ṣiṣe adaṣe. Ọpa yii tun le ṣiṣẹ bi servlet ni awọn apoti ti o ṣiṣẹ Java gẹgẹbi Apache Tomcat ati GlassFish. Fifi sori ẹrọ ti Jenkins qualitatively
▍2. Idagbasoke ilolupo itanna
Eto ilolupo ohun itanna Jenkins han pe o dagba pupọ diẹ sii ju awọn ilolupo ohun itanna ti awọn irinṣẹ CI/CD miiran. Lọwọlọwọ awọn afikun 1500 wa fun Jenkins. Awọn afikun wọnyi jẹ ifọkansi lati yanju ọpọlọpọ awọn iṣẹ ṣiṣe, pẹlu iranlọwọ wọn o le ṣe adaṣe adaṣe ọpọlọpọ awọn iṣẹ akanṣe. Ọrọ ti awọn afikun ọfẹ lati yan lati tumọ si pe ti o ba nlo Jenkins, o ko ni lati ra awọn afikun isanwo gbowolori. O ṣeeṣe wa
▍3. Fifi sori ẹrọ rọrun ati iṣeto
Jenkins jẹ iṣẹtọ rọrun lati fi sori ẹrọ ati tunto. Ni akoko kanna, ilana ti imudojuiwọn eto tun rọrun pupọ. Nibi, lẹẹkansi, o tọ lati darukọ didara iwe naa, nitori ninu rẹ o le wa awọn idahun si ọpọlọpọ awọn ibeere ti o ni ibatan si fifi sori ẹrọ ati tunto Jenkins.
▍4. awujo ore
Gẹgẹbi a ti sọ tẹlẹ, Jenkins jẹ iṣẹ akanṣe orisun ṣiṣi, ilolupo eyiti o pẹlu nọmba nla ti awọn afikun. Agbegbe nla ti awọn olumulo ati awọn idagbasoke ti ni idagbasoke ni ayika Jenkins lati ṣe iranlọwọ idagbasoke iṣẹ akanṣe naa. Agbegbe jẹ ọkan ninu awọn okunfa ti o ṣe idagbasoke idagbasoke ti Jenkins.
▍5. Wiwa ti REST API
Lakoko ti o n ṣiṣẹ pẹlu Jenkins, o le lo API REST, eyiti o faagun awọn agbara ti eto naa. API fun iraye si latọna jijin si eto naa ni a gbekalẹ ni awọn ẹya mẹta: XML, JSON pẹlu atilẹyin JSONP, Python.
▍6. Atilẹyin fun ipaniyan ni afiwe ti awọn iṣẹ-ṣiṣe
Jenkins ṣe atilẹyin isọdọkan ti awọn iṣẹ-ṣiṣe DevOps. O le ni irọrun ṣepọ pẹlu awọn irinṣẹ ti o yẹ ati gba awọn iwifunni nipa awọn abajade ti awọn iṣẹ ṣiṣe. Idanwo koodu le jẹ isare nipasẹ siseto kikọ ti o jọra ti iṣẹ akanṣe nipa lilo awọn ẹrọ foju oriṣiriṣi.
▍7. Atilẹyin fun iṣẹ ni awọn agbegbe pinpin
Jenkins gba ọ laaye lati ṣeto awọn itumọ ti a pin kaakiri nipa lilo awọn kọnputa pupọ. Ẹya yii wulo ni awọn iṣẹ akanṣe nla ati lo ero iṣẹ kan, ni ibamu si eyiti o wa olupin Jenkins titunto si ati ọpọlọpọ awọn ẹrọ ẹrú. Awọn ẹrọ ẹrú tun le ṣee lo ni awọn ipo nibiti o jẹ dandan lati ṣeto idanwo ti iṣẹ akanṣe ni awọn agbegbe oriṣiriṣi. Awọn ẹya wọnyi ṣeto Jenkins yatọ si awọn iṣẹ akanṣe miiran.
Ifihan si GitLab
GitLab CI/CD ni akọkọ ti tu silẹ bi iṣẹ akanṣe kan, ṣugbọn ni ọdun 2015 ṣeto awọn irinṣẹ yii ti ṣepọ sinu GitLab 8.0. Olupin GitLab CI/CD kan le ṣe atilẹyin fun awọn olumulo 25000. Da lori iru awọn olupin, o le ṣẹda awọn ọna šiše ti o wa ni gíga.
GitLab CI/CD ati iṣẹ akanṣe GitLab akọkọ ni a kọ sinu Ruby ati Go. Wọn ti wa ni idasilẹ labẹ iwe-aṣẹ MIT. GitLab CI/CD, ni afikun si awọn ẹya deede ti awọn irinṣẹ CI/CD, tun ṣe atilẹyin awọn ẹya afikun ti o ni ibatan, fun apẹẹrẹ, si ṣiṣe eto iṣẹ.
Ṣiṣẹpọ GitLab CI/CD sinu iṣẹ akanṣe kan rọrun pupọ. Nigbati o ba nlo GitLab CI/CD, ilana ilana koodu ise agbese ti pin si awọn ipele, ọkọọkan eyiti o le ni awọn iṣẹ ṣiṣe lọpọlọpọ ti a ṣe ni aṣẹ kan. Awọn iṣẹ-ṣiṣe le ṣe atunṣe daradara.
Awọn iṣẹ-ṣiṣe le ṣiṣẹ ni afiwe. Lẹhin ti ṣeto lẹsẹsẹ ti awọn ipele ati awọn iṣẹ-ṣiṣe, opo gigun ti epo CI/CD ti ṣetan lati lọ. O le ṣe atẹle ilọsiwaju rẹ nipa mimojuto ipo awọn iṣẹ ṣiṣe. Bi abajade, lilo GitLab CI / CD jẹ irọrun pupọ, boya rọrun diẹ sii ju awọn irinṣẹ iru miiran lọ.
Awọn ẹya ara ẹrọ ti GitLab CI/CD ati GitLab
GitLab CI/CD jẹ ọkan ninu awọn irinṣẹ DevOps olokiki julọ. Ise agbese na jẹ iyatọ nipasẹ iwe-giga didara, awọn ẹya ara ẹrọ rẹ rọrun ati rọrun lati lo. Ti o ko ba faramọ pẹlu GitLab CI / CD, atokọ atẹle ti awọn ẹya irinṣẹ yii yoo fun ọ ni imọran gbogbogbo ti ohun ti o le nireti lati ọdọ rẹ. O yẹ ki o ṣe akiyesi pe ọpọlọpọ awọn ẹya wọnyi ni ibatan si pẹpẹ GitLab funrararẹ, ninu eyiti GitLab CI / CD ti ṣepọ.
▍1. Gbajumo
GitLab CI/CD jẹ ohun elo tuntun ti o jo ti o ti rii lilo ni ibigbogbo. GitLab CI/CD laiyara di ohun elo CI/CD olokiki olokiki ti a lo fun idanwo adaṣe ati imuṣiṣẹ sọfitiwia. O rọrun lati ṣeto. O tun jẹ ohun elo CI / CD ọfẹ ti a ṣe sinu pẹpẹ GitLab.
▍2. Atilẹyin fun Awọn oju-iwe GitLab ati Jekyll
Jekyll jẹ olupilẹṣẹ aaye aimi ti o le ṣee lo laarin eto Awọn oju-iwe GitLab lati ṣẹda awọn aaye ti o da lori awọn ibi ipamọ GitLab. Eto naa gba awọn ohun elo orisun ati ṣe ipilẹṣẹ aaye aimi ti o ṣetan ti o da lori wọn. O le ṣakoso irisi ati awọn ẹya ti iru awọn aaye yii nipa ṣiṣatunṣe faili naa _config.yml
, Jekyll lo.
▍3. Awọn agbara igbogun ise agbese
Ṣeun si agbara lati gbero awọn ipele ti awọn iṣẹ akanṣe, irọrun ti awọn iṣoro ipasẹ ati awọn ẹgbẹ wọn pọ si. Eyi n gba ọ laaye lati ṣakoso iṣeto iṣẹ lori awọn iṣẹ akanṣe, gbero imuse wọn ni ọjọ kan pato.
▍4. Aifọwọyi igbelosoke ti CI asare
Ṣeun si wiwọn aifọwọyi ti awọn asare ti o ni iduro fun ṣiṣe awọn iṣẹ ṣiṣe kan pato, o le fipamọ pupọ lori idiyele ti iyalo awọn agbara olupin. Eyi ṣe pataki pupọ, paapaa nigbati o ba de awọn agbegbe nibiti a ti ṣe idanwo awọn iṣẹ akanṣe ni afiwe. Ni afikun, eyi ṣe pataki fun awọn iṣẹ akanṣe nla ti o ni awọn ibi ipamọ pupọ.
▍5. Ọrọ titele irinṣẹ
Awọn agbara ipasẹ ọrọ GitLab ti o lagbara ti mu ọpọlọpọ awọn iṣẹ akanṣe orisun ṣiṣi lati lo pẹpẹ naa. GitLab CI/CD ngbanilaaye idanwo afiwera ti awọn ẹka koodu oriṣiriṣi. Awọn abajade idanwo ni a ṣe atupale ni irọrun ni wiwo eto. Eyi ṣeto GitLab CI / CD yato si Jenkins.
▍6. Idinamọ wiwọle si awọn ibi ipamọ
Syeed GitLab n ṣe atilẹyin ihamọ wiwọle si awọn ibi ipamọ. Fun apẹẹrẹ, awọn ti o ṣe ifọwọsowọpọ lori iṣẹ akanṣe kan ni ibi-ipamọ kan le ṣe iyasọtọ awọn igbanilaaye ti o yẹ si awọn ipa wọn. Eyi jẹ otitọ paapaa fun awọn iṣẹ akanṣe.
▍7. Ti nṣiṣe lọwọ awujo support
Agbegbe ti nṣiṣe lọwọ ti ni idagbasoke ni ayika GitLab, eyiti o ṣe alabapin si idagbasoke pẹpẹ yii ati awọn irinṣẹ rẹ, ni pataki GitLab CI / CD. Ijọpọ jinlẹ ti GitLab CI / CD ati GitLab, laarin awọn ohun miiran, jẹ ki o rọrun lati wa awọn idahun si awọn ibeere ti o dide nigbati o n ṣiṣẹ pẹlu GitLab CI/CD.
▍8. Atilẹyin fun ọpọlọpọ awọn ọna ṣiṣe iṣakoso ẹya
GitLab CI/CD jẹ eto ti o le ṣiṣẹ pẹlu diẹ ẹ sii ju koodu kan ti o gbalejo ni awọn ibi ipamọ GitLab. Fun apẹẹrẹ, koodu naa le wa ni ipamọ ni ibi ipamọ GitHub kan, ati pe opo gigun ti epo CI / CD le jẹ ṣeto lori ipilẹ GitLab nipa lilo GitLab CI / CD.
Ifiwera ti Jenkins ati GitLab CI/CD
Jenkins ati GitLab CI / CD jẹ awọn irinṣẹ to dara pupọ, mejeeji ti o lagbara lati jẹ ki opo gigun ti epo CI / CD ṣiṣẹ ni irọrun. Ṣugbọn ti o ba ṣe afiwe wọn, o wa ni pe, botilẹjẹpe wọn jọra ni ọpọlọpọ awọn ọna, wọn yatọ si ara wọn ni awọn ọna kan.
Характеристика
Jenkins
GitLab CI/CD
Ṣii orisun tabi orisun pipade
ìmọ orisun
ìmọ orisun
eto
Ti beere fun.
Ko nilo nitori eyi jẹ ẹya ti a ṣe sinu ti pẹpẹ GitLab.
Oto Awọn ẹya ara ẹrọ
Atilẹyin ohun itanna.
Isọpọ jinlẹ sinu eto iṣakoso ẹya.
.Оддержка
Kò sí.
Wa.
Fifi sori ẹrọ ati iṣeto ni
Awọn iṣoro ko fa
Awọn iṣoro ko fa
Ṣiṣe-ara-ara ti eto naa
Eyi ni ọna kan ṣoṣo lati lo eto naa.
Atilẹyin.
Ṣiṣẹda CI / CD Pipelines
Atilẹyin, lilo Jenkins Pipeline.
Atilẹyin.
Abojuto iṣẹ elo
Kò sí.
Wa.
Eto ilolupo
Awọn afikun 1000 lo wa.
Eto naa ti ni idagbasoke laarin GitLab.
API
Ṣe atilẹyin eto API to ti ni ilọsiwaju.
Nfun API kan fun isọpọ jinle sinu awọn iṣẹ akanṣe.
JavaScript atilẹyin
Wa.
Wa.
Integration pẹlu awọn irinṣẹ miiran
Idarapọ pẹlu awọn irinṣẹ miiran ati awọn iru ẹrọ jẹ atilẹyin (Slack, GitHub).
Ọpọlọpọ awọn irinṣẹ fun iṣọpọ pẹlu awọn eto ẹnikẹta, ni pataki - pẹlu GitHub ati Kubernetes.
Iṣakoso didara koodu
Atilẹyin - lilo ohun itanna SonarQube ati awọn afikun miiran.
Atilẹyin.
Awọn iyatọ laarin Jenkins ati GitLab CI/CD
Lehin ti ṣe apejuwe ati ṣe afiwe Jenkins ati GitLab CI/CD, jẹ ki a dojukọ awọn iyatọ laarin awọn irinṣẹ DevOps wọnyi. Mọ awọn iyatọ wọnyi yoo ran ọ lọwọ lati loye awọn ti o fẹ ọkan ninu awọn irinṣẹ wọnyi ju ekeji lọ.
- GitLab CI/CD le ṣakoso awọn ibi ipamọ Git ni kikun. A n sọrọ nipa ṣiṣakoso awọn ẹka ibi ipamọ ati diẹ ninu awọn ẹya miiran. Ṣugbọn Jenkins, botilẹjẹpe o le ṣiṣẹ pẹlu awọn ibi ipamọ, ko fun ni ipele kanna ti iṣakoso lori wọn bi GitLab CI / CD.
- Jenkins jẹ iṣẹ akanṣe orisun ṣiṣi ọfẹ. Ẹniti o yan a gbe lọ ni ominira. Ati GitLab CI / CD wa ninu pẹpẹ GitLab, eyi jẹ ojutu bọtini bọtini kan.
- GitLab CI/CD ṣe atilẹyin awọn irinṣẹ iṣakoso iṣẹ ṣiṣe ilọsiwaju ti o ṣiṣẹ ni ipele iṣẹ akanṣe. Apa yii ti Jenkins ko ni idagbasoke.
Jenkins ati GitLab CI/CD: awọn agbara ati ailagbara
Bayi o ni imọran diẹ nipa Jenkins ati GitLab CI/CD. Bayi, lati jẹ ki o mọ paapaa dara julọ pẹlu awọn irinṣẹ wọnyi, jẹ ki a wo awọn agbara ati ailagbara wọn. A ro pe o ti pinnu tẹlẹ iru irinṣẹ ti o nilo. Ireti, apakan yii yoo gba ọ laaye lati ṣe idanwo ararẹ.
▍ Awọn agbara ti Jenkins
- Nọmba nla ti awọn afikun.
- Iṣakoso kikun lori fifi sori ẹrọ irinṣẹ.
- Irọrun n ṣatunṣe aṣiṣe ti awọn aṣaju.
- Eto ipade ti o rọrun.
- Rọrun imuṣiṣẹ koodu.
- Eto iṣakoso ijẹrisi ti o dara pupọ.
- Ni irọrun ati versatility.
- Atilẹyin fun orisirisi awọn ede siseto.
- Eto naa jẹ oye lori ipele oye.
▍ Awọn ailagbara ti Jenkins
- Awọn afikun le jẹ ẹtan lati lo.
- Nigbati o ba nlo Jenkins ni awọn iṣẹ akanṣe kekere, akoko ti o nilo lati tunto funrararẹ le jẹ nla lainidi.
- Aini alaye itupalẹ gbogbogbo lori awọn ẹwọn CI/CD.
▍ Awọn agbara ti GitLab CI/CD
- Ijọpọ ti o dara pẹlu Docker.
- Simple igbelosoke ti asare.
- Ipaniyan ti o jọra ti awọn iṣẹ ṣiṣe ti o jẹ apakan ti awọn ipele ti opo gigun ti epo CI/CD.
- Lilo awoṣe ayaworan acyclic ti a dari nigbati o ṣeto awọn ibatan iṣẹ-ṣiṣe.
- Ipele giga ti scalability nitori o ṣeeṣe ti ipaniyan ti o jọra ti awọn aṣaju.
- Irọrun ti fifi awọn iṣẹ-ṣiṣe kun.
- Ipinnu rogbodiyan ti o rọrun.
- Eto aabo ti o gbẹkẹle.
▍ Awọn ailagbara ti GitLab CI/CD
- Fun iṣẹ-ṣiṣe kọọkan, o nilo lati ṣapejuwe ati gbejade / ṣe igbasilẹ awọn ohun-ọṣọ.
- O ko le ṣe idanwo awọn abajade ti awọn ẹka ti o dapọ ṣaaju ki wọn to dapọ.
- Nigbati o ba n ṣe apejuwe awọn ipele ti opo gigun ti epo CI / CD, ko ṣee ṣe lati ṣe iyasọtọ awọn ipele kọọkan ninu wọn.
Awọn esi
Mejeeji Jenkins ati GitLab CI/CD ni awọn agbara ati ailagbara. Idahun si ibeere ti kini lati yan da lori awọn iwulo ati awọn abuda ti iṣẹ akanṣe kan. Ọkọọkan awọn irinṣẹ CI/CD ti a ṣe atunyẹwo loni ni awọn ẹya kan, botilẹjẹpe a ṣẹda awọn irinṣẹ wọnyi lati yanju iṣoro kanna. Ni akoko kanna, Jenkins jẹ ohun elo adaduro, ati GitLab CI / CD jẹ apakan ti pẹpẹ ti a ṣe apẹrẹ fun ifowosowopo lori koodu.
Nigbati o ba yan eto CI / CD kan, ni afikun si awọn agbara rẹ, o tọ lati ṣe akiyesi awọn idiyele ti o le ni nkan ṣe pẹlu rẹ, ati kini awọn onimọ-ẹrọ DevOps deede ti o ṣe atilẹyin iṣẹ akanṣe naa ni a lo lati ṣiṣẹ pẹlu.
Awọn irinṣẹ CI/CD wo ni o lo?
orisun: www.habr.com