Şerê Jenkins û GitLab CI/CD

Di deh salên dawî de, pêşkeftinên girîng di pêşkeftina amûrên ji bo yekbûna domdar (Integrasyona Berdewam, CI) û bicîhkirina domdar (Radestkirina Berdewam, CD) de hatine çêkirin. Pêşkeftina teknolojiyên ji bo yekkirina pêşkeftin û xebitandina nermalavê (Operasyonên Pêşveçûnê, DevOps) bûye sedema zêdebûna bilez a daxwazê ​​​​ji bo amûrên CI / CD. Çareseriyên heyî bi domdarî têne baştir kirin, hewl didin ku bi demê re bimeşin, guhertoyên wan ên nû têne berdan, di cîhana nermalava ewlehiya kalîteyê de (Quality Assurance, QA), gelek hilberên nû bi domdarî xuya dibin. Digel bijarek wusa dewlemend, hilbijartina amûrek rast ne karekî hêsan e.

Şerê Jenkins û GitLab CI/CD

Di nav hemî amûrên CI / CD yên heyî de, du proje hene ku bê guman hêja ne ku bala xwe bidin kesê ku li tiştek ji vê deverê digere. Em li ser Jenkins û amûra GitLab CI / CD, ku beşek ji platforma GitLab e, diaxivin. Jenkins bêtir ji 16000 stêrên li ser GitHub. Depoya GitLab-ê ya li ser gitlab.com piçek bêtir gol avêt 2000 stars. Ger em populerbûna depoyan bidin ber hev, derdikeve holê ku Jenkins ji platforma ku GitLab CI / CD tê de 8 qat zêdetir stêrk stendiye. Lê gava ku amûrek CI / CD hilbijêrin, ev ji nîşana yekane ku divê hûn bala xwe bidinê dûr e. Gelekên din hene, û ev rave dike ku çima di gelek berhevdanan de, Jenkins û GitLab CI / CD pir nêzî hev in.

Mînakî, daneyên ji platforma G2 bigirin, ku nirxandinên cûrbecûr hilberan û nirxanên ku bikarhêner didin wan berhev dike. Li vir rêjeya navîn e Jenkins, li ser bingeha 288 nirxandinan, 4,3 stêrk e. Oh oh GitLab 270 nirxandin hene, rêjeya navînî ji bo vê amûrê 4,4 stêrk e. Em ê şaş nebin ku dibêjin Jenkins û GitLab CI / CD di şertên wekhev de bi hev re pêşbaziyê dikin. Balkêş e ku projeya Jenkins di 2011-an de xuya bû û ji hingê ve ew ji bo ceribandinan amûrek bijare ye. Lê di heman demê de, projeya GitLab CI / CD, ku di sala 2014-an de hate destpêkirin, bi saya taybetmendiyên pêşkeftî yên ku ji hêla vê platformê ve têne pêşkêş kirin, pozîsyona xwe, pir bilind girtiye.

Ger em li ser populerbûna Jenkins li gorî platformên din ên wekhev biaxivin, em destnîşan dikin ku me, ku gotarek berhevkirina platformên Travis CI û Jenkins weşand, anketek saz kir. 85 bikarhêner beşdarî wê bûn. Ji bersivdaran hat xwestin ku amûra CI/CD-ê ya ku ew herî zêde jê hez dikin hilbijêrin. 79% Jenkins, 5% Travis CI hilbijart, û 16% destnîşan kir ku ew amûrên din tercîh dikin.

Şerê Jenkins û GitLab CI/CD
Encamên anketê

Di nav amûrên din ên CI / CD de, GitLab CI / CD pir caran hate gotin.

Heke hûn di derbarê DevOps de ciddî ne, wê hingê hûn hewce ne ku bi baldarî amûrên guncan hilbijêrin, ku taybetmendiyên projeyê, budceya wê û hewcedariyên din bihesibînin. Ji bo ku hûn bijartina rast bikin, em ê Jenkins û GitLab CI/CD binirxînin. Ev hêvîdarim ku ji we re bibe alîkar ku hûn bijartina rast bikin.

Destpêka Jenkins

Şerê Jenkins û GitLab CI/CD
Jenkins Amûrek CI/CD-ya naskirî û maqûl e ku ji bo otomatkirina gelek karên ku bi projeyên nermalavê ve girêdayî ne hatî çêkirin. Jenkins bi tevahî li Java-yê hatî nivîsandin û di bin lîsansa MIT-ê de tê berdan. Ew xwedan komek taybetmendiyên hêzdar e ku armanc ew e ku karûbarên ku bi avakirin, ceribandin, bicîhkirin, yekbûn û berdana nermalavê ve girêdayî ne otomatîk bikin. Ev amûr dikare li ser pergalên xebitandinê yên cihêreng were bikar anîn. Di nav wan de macOS, Windows, û gelek belavkirinên Linux-ê yên wekî OpenSUSE, Ubuntu, û Red Hat hene. Ji bo Jenkins pakêtên sazkirinê hene ku ji bo OS-yên cihêreng hatine sêwirandin, ev amûr dikare li ser Docker û li ser her pergala ku JRE (Java Runtime Java) heye were saz kirin.

Pêşdebirên Jenkins projeyek din çêkirine, Jenkins X, ku ji bo xebatê di hawîrdorek Kubernetes de hatî çêkirin. Jenkins X Helm, Jenkins CI/CD Server, Kubernetes, û amûrên din yek dike da ku boriyên CI/CD-ê yên ku pratîkên çêtirîn ên DevOps dişopînin ava bike. Mînakî, GitOps li vir tê bikar anîn.

Mirov dikare vê rastiyê li xezîneya avantajên Jenkins zêde bike ku nivîsarên wê pir baş hatine saz kirin, têgihîştin û xwendinê hêsan in. Tîma Jenkins bi qasî 1000 pêvekên ku bi mebesta organîzekirina danûstendina Jenkins bi cûrbecûr teknolojiyên re têne çêkirin çêkirine. Skrîpt dikarin pergalên erêkirinê bikar bînin, ku, mînakî, dihêle hûn bi pergalên cihêreng ên girtî ve girêbidin.

Di dema xebata boriyê ya Jenkins de, hûn dikarin binihêrin ka di her gavê de çi diqewime, gelo hin qonaxên xebatê bi serfirazî qediyane an na. Hûn dikarin van hemîyan temaşe bikin, lêbelê, bêyî karanîna pêwendiyek grafîkî, lê bi karanîna kapasîteyên termînalê.

Taybetmendiyên Jenkins

Di nav taybetmendiyên naskirî yên Jenkins de hêsankirina sazkirinê, astek bilind a otomatîkî ya operasyonên cihêreng, û belgeyên hêja ne. Ger em li ser çareserkirina peywirên DevOps biaxivin, wê hingê li vir Jenkins amûrek pir pêbawer tê hesibandin, ku bikar tîne, wekî qaîdeyek, ne wate ye ku meriv ji nêz ve çavdêriya tevahiya pêvajoya pêvajoyê ya projeyê bike. Ev yek bi amûrên din ên CI/CD re ne wusa ye. Ka em li ser hin taybetmendiyên herî girîng ên Jenkins biaxivin.

1. Piştgiriya belaş, çavkaniya vekirî, pir-platform

Jenkins dikare li ser platformên macOS, Windows û Linux-ê bixebite. Di heman demê de ew dikare di hawîrdorek Docker de jî bixebite, ku destûrê dide te ku hûn pêkanîna yekreng û bilez a karên otomatîkî organîze bikin. Ev amûr dikare di konteynerên Java-çalakkirî yên wekî Apache Tomcat û GlassFish de jî wekî servletek bixebite. Sazkirina Jenkins bi kalîte belgekirî.

±2. Ekosîstema pêvekê ya pêşkeftî

Ekosîstema pêveka Jenkins ji ekosîstemên pêvekê yên amûrên din ên CI/CD-ê pir mazintir xuya dike. Niha zêdetirî 1500 pêvekên ji bo Jenkins hene. Van pêvekan ji bo çareserkirina cûrbecûr peywiran têne armanc kirin, bi alîkariya wan hûn dikarin cûrbecûr projeyan otomatîk bikin. Hilbijartina dewlemendiya pêvekên belaş tê vê wateyê ku heke hûn Jenkins bikar tînin, ne hewce ye ku hûn pêvekên biha yên biha bikirin. Îhtimal heye pêxistinî Jenkins bi gelek amûrên DevOps re.

º3. Sazkirin û sazkirina hêsan

Jenkins sazkirin û mîhengkirin pir hêsan e. Di heman demê de, pêvajoya nûvekirina pergalê jî pir hêsan e. Li vir, dîsa, hêjayî gotinê ye ku kalîteya belgeyê, ji ber ku di wê de hûn dikarin bersivên cûrbecûr pirsên têkildarî sazkirin û mîhengkirina Jenkins bibînin.

4. Civaka heval

Wekî ku berê jî behs kir, Jenkins projeyek çavkaniyek vekirî ye, ekosîstema ku hejmareke mezin ji pêvekan vedihewîne. Civatek mezin a bikarhêner û pêşdebiran li dora Jenkins pêşve çûye da ku alîkariya pêşkeftina projeyê bike. Civak yek ji wan faktoran e ku pêşveçûna Jenkins dimeşîne.

º5. Hebûna REST API

Dema ku bi Jenkins re dixebitin, hûn dikarin REST API-ê bikar bînin, ku kapasîteyên pergalê berfireh dike. API ji bo gihîştina dûr a pergalê di sê guhertoyan de tê pêşkêş kirin: XML, JSON bi piştgiriya JSONP, Python. vir Rûpelê belgekirinê ku hûrguliyên li ser xebata bi Jenkins REST API re vedigire.

º6. Piştgiriya ji bo pêkanîna paralel ya karan

Jenkins paralelkirina karên DevOps piştgirî dike. Ew dikare bi hêsanî bi amûrên têkildar re were yek kirin û di derbarê encamên karan de agahdariyan bistînin. Testkirina kodê dikare bi organîzekirina avahiyek paralel a projeyê bi karanîna makîneyên virtual yên cihêreng were bilez kirin.

7. Piştgiriya ji bo xebatê li hawîrdorên belavkirî

Jenkins dihêle hûn bi karanîna gelek komputeran avahiyên belavbûyî birêxistin bikin. Ev taybetmendî di projeyên mezin de tê sepandin û nexşeyek xebatê bikar tîne, ku li gorî wê serverek master Jenkins û çend makîneyên xulam hene. Makîneyên koledar jî dikarin di rewşên ku hewce ye ku ceribandina projeyek di hawîrdorên cihêreng de organîze bikin de werin bikar anîn. Van taybetmendiyan Jenkins ji projeyên din ên wekhev vediqetînin.

Destpêka GitLab

Şerê Jenkins û GitLab CI/CD
GitLab CI/CD dikare wekî yek ji nûtirîn û herî hezkirî amûrên DevOps were binav kirin. Vê amûra çavkaniya vekirî ya belaş di pergala kontrola guhertoya GitLab de hatî çêkirin. Platforma GitLab xwedan guhertoyek civakê ye, ew rêveberiya depoyê, amûrên şopandina pirsgirêkê, rêxistina vekolîna kodê, mekanîzmayên belge-oriented piştgirî dike. Pargîdan dikarin GitLab li herêmî saz bikin, ji bo destûrnameya bikarhênerê ewledar û pejirandina wê bi serverên Active Directory û LDAP ve girêdin.

vir Dersek vîdyoyek ku ji we re bibe alîkar ku hûn fêr bibin ka meriv çawa bi karanîna kapasîteyên GitLab CI/CD boriyên CI/CD-ê biafirîne.

GitLab CI/CD di destpêkê de wekî projeyek serbixwe hate berdan, lê di sala 2015-an de ev koma amûran di GitLab 8.0 de hate yek kirin. Pêşkêşkarek yek GitLab CI/CD dikare zêdetirî 25000 bikarhêneran piştgirî bike. Li ser bingeha serverên weha, hûn dikarin pergalên ku pir berdest in biafirînin.

GitLab CI/CD û projeya sereke ya GitLab di Ruby û Go de têne nivîsandin. Bi lîsansa MÎT'ê tên berdan. GitLab CI/CD, ji bilî taybetmendiyên asayî yên amûrên CI/CD, di heman demê de taybetmendiyên din ên girêdayî, mînakî, bi plansazkirina xebatê re jî piştgirî dike.

Yekkirina GitLab CI/CD di projeyekê de pir hêsan e. Dema ku GitLab CI/CD bikar tîne, pêvajoya pêvajoya koda projeyê li qonaxan tê dabeş kirin, ku her yek dikare ji çend peywiran pêk were ku bi rêzek diyarkirî têne kirin. Karûbar dikarin baş werin sererast kirin.

Karûbar dikarin paralel bimeşin. Piştî sazkirina rêza qonax û peywiran, lûleya CI/CD amade ye ku biçe. Hûn dikarin bi şopandina rewşa karan ve pêşkeftina wê bişopînin. Wekî encamek, karanîna GitLab CI / CD pir hêsan e, belkî ji amûrên din ên wekhev hêsantir e.

Taybetmendiyên GitLab CI/CD û GitLab

GitLab CI/CD yek ji amûrên DevOps-ê yên herî populer e. Proje ji hêla belgeyên bilind-kalîteyê ve tê veqetandin, taybetmendiyên wê karanîna hêsan û hêsan in. Heke hûn hîna bi GitLab CI/CD-ê nizanin, navnîşa jêrîn a taybetmendiyên vê amûrê dê ji we re ramanek gelemperî bide ka hûn dikarin ji wê çi hêvî bikin. Divê were zanîn ku gelek ji van taybetmendiyan bi platforma GitLab bixwe ve girêdayî ne, ku tê de GitLab CI / CD yekbûyî ye.

1. Popularity

GitLab CI/CD amûrek nisbeten nû ye ku karanîna berbelav dîtiye. GitLab CI/CD hêdî hêdî bûye amûrek CI/CD-ê ya pir populer ku ji bo ceribandina otomatîk û bicîhkirina nermalavê tê bikar anîn. Sazkirina wê hêsan e. Di heman demê de ew amûrek belaş a CI/CD-ê ye ku di platforma GitLab de hatî çêkirin.

±2. Piştgiriya ji bo Rûpelên GitLab û Jekyll

Jekyll hilberkerek malperê statîk e ku dikare di nav pergala Rûpelên GitLab de were bikar anîn da ku malperan li ser bingeha depoyên GitLab biafirîne. Pergal materyalên çavkaniyê digire û li ser bingeha wan malperek statîk a qedandî çêdike. Hûn dikarin xuyang û taybetmendiyên van malperên bi guherandina pelê kontrol bikin _config.yml, ji hêla Jekyll ve tê bikaranîn.

º3. Kapasîteyên plansazkirina projeyê

Bi saya şiyana plansazkirina qonaxên projeyan, rehetiya şopandina pirsgirêkan û komên wan zêde dibe. Ev dihêle hûn rêxistina xebata li ser projeyan birêve bibin, pêkanîna wan di rojek diyar de plan bikin.

4. Pîvana otomatîkî ya CI-yê rêvevan

Spas ji pîvandina otomatîkî ya bezvanên ku ji bo pêkanîna karên taybetî berpirsiyar in, hûn dikarin li ser lêçûna kirêkirina kapasîteyên serverê pir xilas bikin. Ev pir girîng e, nemaze dema ku dor tê hawîrdorên ku proje bi paralel têne ceribandin. Wekî din, ev ji bo projeyên mezin ên ku ji çend depoyan pêk tên girîng e.

º5. Amûrên şopandina pirsgirêkê

Kapasîteyên şopandina pirsgirêka hêzdar a GitLab rê kiriye ku gelek projeyên çavkaniya vekirî platformê bikar bînin. GitLab CI/CD destûrê dide ceribandina paralel a şaxên kodê yên cihê. Encamên testê bi hêsanî di navgîniya pergalê de têne analîz kirin. Ev GitLab CI/CD ji Jenkins cuda dike.

º6. Sînordarkirina gihîştina depoyan

Platforma GitLab bi sînorkirina gihîştina depoyan piştgirî dike. Mînakî, kesên ku li ser projeyek di depoyek de hevkariyê dikin, dikarin li gorî rolên xwe destûrnameyên xwe bidin. Ev bi taybetî ji bo projeyên pargîdanî rast e.

7. Piştgiriya civakê ya çalak

Civakek çalak li dora GitLab pêşve çûye, ku beşdarî pêşkeftina vê platformê û amûrên wê, bi taybetî, GitLab CI / CD dibe. Yekbûna kûr a GitLab CI/CD û GitLab, di nav tiştên din de, peydakirina bersivên pirsên ku dema ku bi GitLab CI/CD re dixebitin re hêsan dike.

8. Piştgiriya pergalên kontrolkirina guhertoyên cihêreng

GitLab CI/CD pergalek e ku dikare ji kodên ku di depoyên GitLab de têne mêvandar kirin bêtir bixebite. Mînakî, kod dikare di depoyek GitHub de were hilanîn, û lûleya CI / CD dikare li ser bingeha GitLab bi karanîna GitLab CI / CD were organîze kirin.

Berhevdana Jenkins û GitLab CI/CD

Jenkins û GitLab CI/CD amûrên pir baş in, ku her du jî dikarin lûleya CI/CD bi rêkûpêk bixebitin. Lê heke hûn wan bidin ber hev, derdikeve holê ku her çend di gelek waran de dişibin hev jî, di hin awayan de ji hev cûda dibin.

Taybetmendiyên
Jenkins
GitLab CI/CD

Çavkaniya vekirî an çavkaniya girtî
çavkaniya vekirî
çavkaniya vekirî

mîhengê
Required.
Ne hewce ye ji ber ku ev taybetmendiyek çêkirî ya platforma GitLab e.

Taybetmendiyên Yekgirtî
Piştgiriya Plugin.
Yekbûna kûr di pergala kontrola guhertoyê de.

alîkarî
Tine ye.
Berdeste.

Sazkirin û veavakirina
Zehmetî nabe sedema
Zehmetî nabe sedema

Xwe bicîkirina pergalê
Ev yekane rêya bikaranîna sîstemê ye.
Piştgirî kirin.

Afirandina boriyên CI/CD
Piştgirî, bi karanîna Jenkins Pipeline.
Piştgirî kirin.

Şopandina performansa sepanê
Tine ye.
Berdeste.

Ekosîstem
Zêdetirî 1000 pêvek hene.
Pergal di nav GitLab de tê pêşve xistin.

API
Pergalek API-ya pêşkeftî piştgirî dike.
Ji bo yekbûna kûrtir di projeyan de API pêşkêşî dike.

Piştgiriya JavaScript
Berdeste.
Berdeste.

Yekbûna bi amûrên din
Yekbûn bi amûr û platformên din re tê piştgirî kirin (Slack, GitHub).
Gelek amûrên ji bo entegrasyonê bi pergalên partiya sêyemîn re, bi taybetî - bi GitHub û Kubernetes.

Kontrola kalîteya kodê
Piştgirî - pêveka SonarQube û pêvekên din bikar bînin.
Piştgirî kirin.

Cûdahî di navbera Jenkins û GitLab CI/CD de

Piştî ku Jenkins û GitLab CI/CD şirove û berhev kirin, em li ser cûdahiyên di navbera van amûrên DevOps de bisekinin. Zanîna van cûdahiyan dê ji we re bibe alîkar ku hûn ên ku yek ji van amûran li ser ya din tercîh dikin fam bikin.

  • GitLab CI/CD dikare bi tevahî depoyên Git kontrol bike. Em li ser birêvebirina şaxên depoyê û hin taybetmendiyên din diaxivin. Lê Jenkins, her çend ew dikare bi depoyan re bixebite, lê heman astê kontrolê li ser wan wekî GitLab CI / CD nade.
  • Jenkins projeyek çavkaniya vekirî ya belaş e. Yê ku wê hildibijêre, wê serbixwe bi cih dike. Û GitLab CI / CD di platforma GitLab de tê de heye, ev çareseriyek kilît e.
  • GitLab CI/CD amûrên rêveberiya peywirê yên pêşkeftî yên ku di asta projeyê de dixebitin piştgirî dike. Ev aliyê Jenkins kêm pêşketî ye.

Jenkins û GitLab CI/CD: hêz û qelsî

Naha hûn di derbarê Jenkins û GitLab CI/CD de ramanek we heye. Naha, ji bo ku hûn hîn çêtir van amûran nas bikin, werin em li hêz û qelsiyên wan mêze bikin. Em texmîn dikin ku we berê biryar daye ku hûn kîjan amûrê hewce ne. Hêvîdarim, ev beş dê bihêle ku hûn xwe biceribînin.

▍Hêzên Jenkins

  • Hejmarek mezin a pêvekan.
  • Kontrola tevahî li ser sazkirina amûrê.
  • Debugging Simple ji runners.
  • Sazkirina nodê hêsan.
  • Sazkirina kodê hêsan.
  • Pergala rêveberiya pêbaweriyê ya pir baş.
  • Flexibility û piralîûçalakîyê.
  • Piştgiriya ji bo zimanên bernameyên cuda.
  • Pergal li ser astek intuitive tê fêm kirin.

▍Weaknesses of Jenkins

  • Plugin dikarin bikar bînin dijwar be.
  • Dema ku Jenkins di projeyên piçûk de bikar bînin, wextê ku hewce dike ku hûn bixwe mîheng bikin dikare bêaqil mezin be.
  • Nebûna agahdariya analîtîk a gelemperî li ser zincîreyên CI / CD.

▍Hêzên GitLab CI/CD

  • Yekbûnek baş bi Docker re.
  • Pîvana hêsan a bazdan.
  • Pêkanîna paralel a karên ku beşek ji qonaxên lûleya CI/CD ne.
  • Dema ku têkiliyên peywirê saz dikin, modela grafiya acyclîk a rêvekirî bikar bînin.
  • Asta bilindbûna pîvandinê ji ber îhtîmala pêkanîna paralel a bezê.
  • Hêsaniya zêdekirina peywiran.
  • Çareserkirina nakokiya hêsan.
  • Pergala ewlehiyê ya pêbawer.

▍Lewaziyên GitLab CI/CD

  • Ji bo her peywirê, hûn hewce ne ku huneran diyar bikin û barkirin / dakêşin.
  • Hûn nekarin encamên yekbûna şaxên berî ku ew bi rastî werin yek kirin ceribandin.
  • Dema danasîna qonaxên lûleya CI / CD-yê, hîn ne gengaz e ku meriv qonaxên kesane di wan de yekalî bike.

Encam

Hem Jenkins û hem jî GitLab CI/CD xwedî hêz û qels in. Bersiva pirsa ka çi hilbijêrin bi hewcedarî û taybetmendiyên projeyek taybetî ve girêdayî ye. Her yek ji amûrên CI / CD yên ku îro têne vekolîn xwedan hin taybetmendî ne, her çend ev amûr ji bo çareserkirina heman pirsgirêkê hatine afirandin. Di heman demê de, Jenkins amûrek serbixwe ye, û GitLab CI / CD beşek platformek e ku ji bo hevkariyê li ser kodê hatî çêkirin.

Dema ku pergalek CI / CD hilbijêrin, ji bilî kapasîteyên wê, hêja ye ku meriv lêçûnên ku bi wê re têkildar be jî were hesibandin, û bi rastî endezyarên DevOps-ê yên ku piştgiriyê didin projeyê bi çi re dixebitin têne bikar anîn.

Hûn kîjan amûrên CI/CD bikar tînin?

Şerê Jenkins û GitLab CI/CD

Şerê Jenkins û GitLab CI/CD

Source: www.habr.com

Add a comment