Pakanga o Jenkins me GitLab CI/CD

I roto i nga tau tekau kua pahure ake nei, he nui te ahunga whakamua i roto i te whakawhanaketanga o nga taputapu mo te whakauru tonu (Continuous Integration, CI) me te tuku tonu (Continuous Delivery, CD). Ko te whakawhanaketanga o nga hangarau mo te whakauru i te whakawhanaketanga rorohiko me te mahi (Nga Mahi Whakawhanaketanga, DevOps) kua tere ake te tono mo nga taputapu CI / CD. Kei te whakapai tonu nga otinga o naianei, e ngana ana ki te whai i nga waa, ka tukuna o raatau putanga hou, i roto i te ao o te rorohiko whakapumau kounga (Quality Assurance, QA), he maha nga hua hou kei te puta tonu. Na te maha o nga whiringa, ko te whiriwhiri i te taputapu tika ehara i te mea ngawari.

Pakanga o Jenkins me GitLab CI/CD

I roto i nga taputapu CI / CD katoa, e rua nga kaupapa e tika ana kia aro ki tetahi e rapu ana i tetahi mea mai i tenei rohe. Kei te korero matou mo Jenkins me te taputapu GitLab CI / CD, he waahanga o te papaaho GitLab. He nui ake a Jenkins 16000 whetu i GitHub. He iti ake te whiwhinga o te putunga GitLab i gitlab.com 2000 whetu. Mena ka whakatauritea e tatou te rongonui o nga putunga, ka kitea e 8 nga wa nui atu o nga whetu a Jenkins i te papaaho, kei roto ko GitLab CI / CD. Engari i te wa e whiriwhiri ana koe i tetahi taputapu CI / CD, he tawhiti tenei mai i te tohu anake me aro koe. He maha ano etahi atu, ka whakamarama he aha i roto i te maha o nga whakataurite, he tino tata a Jenkins me GitLab CI / CD tetahi ki tetahi.

Tangohia, hei tauira, nga raraunga mai i te papaaho G2, e whakaemi ana i nga arotake mo te tini o nga momo hua me nga whakatau ka tukuna e nga kaiwhakamahi. Anei te whakatauranga toharite Jenkins, i runga i nga arotake 288, he 4,3 nga whetu. Aue aue GitLab 270 nga arotake, ko te whakatauranga toharite mo tenei taputapu he 4,4 whetu. E kore matou e pohehe ki te kii ko Jenkins me GitLab CI / CD e whakataetae ana tetahi ki tetahi i runga i nga tikanga rite. He mea rawe ki te kite i puta mai te kaupapa Jenkins i te tau 2011, mai i tera wa he taputapu tino pai mo te hunga whakamatautau. Engari i te wa ano, ko te kaupapa GitLab CI / CD, i whakarewahia i te tau 2014, kua eke ki tona turanga, he tino tiketike, he mihi ki nga ahuatanga matatau e tukuna ana e tenei turanga.

Mena ka korerohia e matou te rongonui o Jenkins ki te whakataurite ki etahi atu papaaho rite, ka kite matou, na matou i whakaputa i tetahi tuhinga e whakataurite ana i nga kaupapa Travis CI me Jenkins, kua whakaritea he rangahau. 85 nga kaiwhakamahi i uru ki roto. I tonohia nga kaiwhakautu ki te whiriwhiri i te taputapu CI/CD e tino paingia ana e ratou. 79% i whiriwhiria a Jenkins, 5% i whiriwhiria a Travis CI, a 16% i tohu he pai ki a raatau etahi atu taputapu.

Pakanga o Jenkins me GitLab CI/CD
Nga hua pooti

I roto i etahi atu taputapu CI / CD, ko GitLab CI / CD te nuinga o te korero.

Mena kei te tino whakaaro koe ki a DevOps, me ata whiriwhiri e koe nga taputapu e tika ana, me te whakaaro ki nga waahanga o te kaupapa, tana tahua, me etahi atu whakaritenga. Hei awhina i a koe ki te whiriwhiri tika, ka arotakehia e matou a Jenkins me GitLab CI/CD. Ko te tumanako ka awhina tenei ki a koe ki te whiriwhiri tika.

Introduction to Jenkins

Pakanga o Jenkins me GitLab CI/CD
Jenkins he taputapu CI/CD rongonui, ngawari i hangaia hei whakaaunoa i nga mahi maha e pa ana ki nga kaupapa rorohiko. Kua tuhia katoatia a Jenkins ki Java ka tukuna i raro i te raihana MIT. He huinga tino kaha e whai ana ki te whakaaunoa i nga mahi e pa ana ki te hanga, ki te whakamatautau, ki te tuku, ki te whakauru, ki te tuku i nga rorohiko. Ka taea te whakamahi i tenei taputapu ki nga punaha whakahaere rereke. Kei roto i enei ko te macOS, Windows, me te maha o nga tohatoha Linux penei i a OpenSUSE, Ubuntu, me te Red Hat. He kete whakaurunga mo Jenkins i hangaia mo nga momo OS, ka taea te whakauru i tenei taputapu ki runga Docker me tetahi punaha kei a JRE (Java Runtime Environment).

Kua hangaia e nga kaihanga Jenkins tetahi atu kaupapa, Jenkins X, i hangaia hei mahi i roto i te taiao Kubernetes. Ka whakauru a Jenkins X i a Helm, Jenkins CI/CD Server, Kubernetes, me etahi atu taputapu hei hanga i nga paipa CI/CD e whai ana i nga mahi pai a DevOps. Hei tauira, ka whakamahia a GitOps i konei.

Ka taea e tetahi te whakauru atu ki te putea o nga painga o Jenkins te mea he tino pai te hanganga o ana tuhinga, he maamaa, he ngawari ki te panui. Kua hanga e te roopu Jenkins mo te 1000 monomai e whai ana ki te whakarite i te taunekeneke a Jenkins me te maha o nga momo hangarau. Ka taea e nga tuhinga te whakamahi i nga punaha motuhēhēnga, hei tauira, ka taea e koe te hono atu ki nga momo punaha kati.

I te wa e whakahaerea ana te paipa a Jenkins, ka taea e koe te kite he aha nga mahi i ia hikoinga, ahakoa kua tutuki angitu etahi waahanga mahi, kaore ranei. Ka taea e koe te maataki i enei mea katoa, heoi, me te kore e whakamahi i tetahi atanga kauwhata, engari ma te whakamahi i nga kaha o te tauranga.

Nga ahuatanga o Jenkins

I roto i nga ahuatanga rongonui o Jenkins ko te ngawari o te tatūnga, te taumata teitei o te mahi aunoatanga o nga momo mahi, me nga tuhinga pai. Mena ka korero tatou mo te whakaoti i nga mahi a DevOps, na konei ka kiia a Jenkins he taputapu tino pono, ma te whakamahi, hei tikanga, kaore he tikanga ki te aro turuki i nga mahi katoa o te tukatuka kaupapa. Ehara tenei i te ahua o etahi atu taputapu CI / CD. Me korero tatou mo etahi o nga ahuatanga tino nui o Jenkins.

▍1. Kore utu, puna tuwhera, tautoko papa-maha

Ka taea e Jenkins te whakahaere i runga i nga papaaho macOS, Windows me Linux. Ka taea hoki te mahi i roto i te taiao Docker, e taea ai e koe te whakarite i nga mahi rite me te tere o nga mahi aunoa. Ka taea hoki e tenei taputapu te whakahaere hei servlet i roto i nga ipu Java-whakahohea penei i a Apache Tomcat me GlassFish. Ko te whakaurunga o Jenkins i runga i te kounga tuhia.

▍2. I whakawhanakehia te rauwiringa kaiao mono

Ko te ahua o te rauwiringa kaiao mono Jenkins he tino pakeke ake i nga rauwiringa kaiao mono o etahi atu taputapu CI/CD. Neke atu i te 1500 nga taputapu mo Jenkins i tenei wa. Ko enei monomai e whai ana ki te whakaoti i te tini o nga mahi, me o raatau awhina ka taea e koe te whakaaunoa i nga momo kaupapa. Ko te nui o nga monomai kore utu hei whiriwhiri mai i te tikanga mena kei te whakamahi koe i a Jenkins, kaore koe e hoko i nga taputapu utu utu nui. He he pea whakauru Jenkins me nga taputapu DevOps maha.

▍3. He ngawari te whakaurunga me te tatūnga

He tino ngawari a Jenkins ki te whakauru me te whirihora. I te wa ano, he tino watea te tukanga o te whakahou i te punaha. I konei ano, he pai ki te whakahua i te kounga o nga tuhinga, na te mea ka kitea e koe nga whakautu ki nga momo paatai ​​​​e pa ana ki te whakauru me te whirihora i a Jenkins.

▍4. Hapori atawhai

Ka rite ki te korero i mua ake nei, ko Jenkins he kaupapa puna tuwhera, kei roto i te rauwiringa kaiao te maha o nga taapiri. He hapori nui o nga kaiwhakamahi me nga kaiwhakawhanake kua whakawhanakehia huri noa i Jenkins hei awhina i te whakawhanaketanga o te kaupapa. Ko te hapori tetahi o nga mea e akiaki ana i te whanaketanga o Jenkins.

▍5. Te waatea o REST API

I a koe e mahi tahi ana me Jenkins, ka taea e koe te whakamahi i te REST API, e whakanui ana i nga kaha o te punaha. Ko te API mo te uru mamao ki te punaha ka whakaatuhia i roto i nga waahanga e toru: XML, JSON me te tautoko JSONP, Python. konei Te wharangi tuhinga e hipoki ana i nga korero mo te mahi me te Jenkins REST API.

▍6. Tautoko mo te mahi whakarara o nga mahi

Kei te tautoko a Jenkins i te whakarara o nga mahi DevOps. Ka taea te whakauru ngawari ki nga taputapu e tika ana me te whiwhi whakamohiotanga mo nga hua o nga mahi. Ka taea te whakatere i te whakamatautau waehere ma te whakarite i te hanga whakarara o te kaupapa ma te whakamahi i nga miihini mariko rereke.

▍7. Tautoko mo te mahi i roto i nga taiao toha

Ka taea e Jenkins te whakarite i nga hanga toha ma te whakamahi rorohiko maha. Ko tenei ahuatanga e pa ana ki nga kaupapa nui me te whakamahi i tetahi kaupapa mahi, e ai ki tetahi o nga rangatira rangatira a Jenkins me etahi miihini pononga. Ka taea hoki te whakamahi i nga miihini pononga i nga waahi e tika ana ki te whakarite i nga whakamatautau o tetahi kaupapa i roto i nga taiao rereke. Ko enei ahuatanga ka wehe a Jenkins i etahi atu kaupapa rite.

Whakataki ki GitLab

Pakanga o Jenkins me GitLab CI/CD
GitLab CI/CD ka kiia ko tetahi o nga taputapu DevOps hou me te tino aroha. Kua hangaia tenei taputapu puna tuwhera kore utu ki roto i te punaha whakahaere putanga GitLab. Ko te papaaapapa GitLab he putanga hapori, e tautoko ana i te whakahaere putunga, nga taputapu aroturuki take, te whakahaere arotake waehere, nga tikanga e pa ana ki nga tuhinga. Ka taea e nga kamupene te whakauru i a GitLab ki te rohe, me te hono atu ki nga tūmau Active Directory me te LDAP mo te whakamanatanga a te kaiwhakamahi me te motuhēhēnga.

konei He akoranga ataata hei awhina i a koe ki te ako me pehea te hanga paipa CI/CD ma te whakamahi i nga kaha GitLab CI/CD.

I tukuna tuatahi a GitLab CI/CD hei kaupapa motuhake, engari i te tau 2015 i whakauruhia tenei huinga taputapu ki a GitLab 8.0. Ka taea e tetahi tūmau GitLab CI/CD te tautoko neke atu i te 25000 nga kaiwhakamahi. I runga i nga kaitoro penei, ka taea e koe te hanga i nga punaha e tino waatea ana.

GitLab CI/CD me te kaupapa matua GitLab kua tuhia ki Ruby me Haere. Ka tukuna i raro i te raihana MIT. Ko te GitLab CI/CD, i tua atu i nga ahuatanga o mua o nga taputapu CI/CD, ka tautoko hoki i etahi atu waahanga e pa ana, hei tauira, ki te whakarite mahi.

He tino ngawari te whakauru i te GitLab CI/CD ki tetahi kaupapa. I te wa e whakamahi ana i te GitLab CI/CD, ka wehewehea te tukanga tukatuka waehere kaupapa ki nga waahanga, ka taea e ia o nga mahi maha e mahia ana i roto i tetahi ota. Ka taea te whakatika i nga mahi.

Ka taea e nga mahi te mahi whakarara. I muri i te whakarite i te raupapa o nga waahanga me nga mahi, kua rite te paipa CI/CD ki te haere. Ka taea e koe te aroturuki i tana ahunga whakamua ma te aro turuki i te mana o nga mahi. Ko te mutunga, ko te whakamahi i te GitLab CI / CD he tino watea, he pai ake pea i etahi atu taputapu rite.

Nga ahuatanga o GitLab CI/CD me GitLab

Ko GitLab CI/CD tetahi o nga taputapu DevOps tino rongonui. Ko te kaupapa e tohuhia ana e nga tuhinga kounga teitei, he ngawari, he watea hoki te whakamahi i ona ahuatanga. Mena kaore koe i te mohio ki a GitLab CI/CD, ko te rarangi e whai ake nei o nga ahuatanga o tenei taputapu ka whai whakaaro nui koe mo nga mea ka taea e koe te tumanako mai i tera. Me tohu ko te nuinga o enei ahuatanga e pa ana ki te papaaho GitLab ake, i whakauruhia ai a GitLab CI / CD.

▍1. Te rongonui

Ko GitLab CI/CD he taputapu hou kua kitea te whakamahinga whanui. Ko GitLab CI/CD kua noho puhoi hei taputapu CI/CD tino rongonui e whakamahia ana mo te whakamatautau aunoa me te whakatakoto rorohiko. He ngawari ki te whakarite. He taputapu CI/CD kore utu hoki i hangaia ki te papaaho GitLab.

▍2. Tautoko mo nga Whārangi GitLab me Jekyll

Ko te Jekyll he kaihanga pae pateko ka taea te whakamahi i roto i te punaha Whārangi GitLab ki te hanga pae i runga i nga putunga putunga a GitLab. Ka tangohia e te punaha nga rauemi matatiki me te whakaputa i tetahi waahi tuuturu kua oti i runga i a raatau. Ka taea e koe te whakahaere i te ahua me nga ahuatanga o aua waahi ma te whakatika i te konae _config.yml, whakamahia e Jekyll.

▍3. Te kaha ki te whakamahere kaupapa

He mihi ki te kaha ki te whakamahere i nga waahanga o nga kaupapa, ka piki ake te waatea o nga raruraru aroturuki me o raatau roopu. Ma tenei ka taea e koe te whakahaere i te whakaritenga o nga mahi i runga i nga kaupapa, te whakamahere i to raatau whakatinanatanga i tetahi ra motuhake.

▍4. Whakanuia aunoa o nga kaiwhaiwhai CI

He mihi ki te whakatauira aunoa o nga kaiwhaiwhai kawenga mo te mahi i nga mahi motuhake, ka taea e koe te penapena nui i runga i te utu mo te reti i nga kaha o nga kaitoro. He mea tino nui tenei, ina koa ka tae mai ki nga taiao e whakamatauria ai nga kaupapa i roto i te whakarara. I tua atu, he mea nui tenei mo nga kaupapa nui he maha nga putunga.

▍5. Nga taputapu aroturuki take

Ko nga kaha a GitLab ki te tirotiro take i arahi i te maha o nga kaupapa puna tuwhera ki te whakamahi i te papanga. Ka taea e GitLab CI/CD te whakamatautau whakarara o nga peka waehere rereke. He pai te tātari i nga hua whakamatautau ki te atanga punaha. Ka wehe tenei i a GitLab CI/CD mai i a Jenkins.

▍6. Te aukati i te urunga ki nga whare pupuri

Kei te tautoko te papaaho GitLab ki te aukati i te uru ki nga putunga. Hei tauira, ko te hunga e mahi tahi ana ki tetahi kaupapa i roto i te putunga ka taea te hoatu whakaaetanga e tika ana mo o raatau mahi. He tino pono tenei mo nga kaupapa umanga.

▍7. Te tautoko kaha o te hapori

Kua whakawhanakehia he hapori kaha huri noa i a GitLab, e whai waahi ana ki te whakawhanaketanga o tenei papaaho me ana taputapu, ina koa, GitLab CI / CD. Ko te whakauru hohonu o GitLab CI/CD me GitLab, i roto i era atu mea, he ngawari ki te rapu whakautu ki nga paatai ​​ka puta mai i te wa e mahi ana me GitLab CI/CD.

▍8. Tautoko mo nga momo punaha whakahaere putanga

Ko te GitLab CI/CD he punaha ka taea te mahi me te nui atu i te waehere e whakahaerehia ana i roto i nga whare pupuri a GitLab. Hei tauira, ka taea te penapena i te waehere ki roto i te rehitatanga GitHub, ka taea te whakarite te paipa CI / CD i runga i te kaupapa o GitLab ma te whakamahi i te GitLab CI / CD.

Te whakataurite o Jenkins me GitLab CI/CD

He taputapu tino pai a Jenkins me GitLab CI/CD, e rua enei e kaha ana ki te whakahaere pai i te paipa CI/CD. Engari ki te whakatairitehia e koe, ka puta mai, ahakoa he rite te ahua o nga ahuatanga maha, he rereke nga ahuatanga o tetahi ki tetahi.

Характеристика
Jenkins
GitLab CI/CD

Puna tuwhera, puna kati ranei
puna tuwhera
puna tuwhera

tāutanga
E hiahiatia ana.
Kaore e hiahiatia na te mea he waahanga hanga-i roto i te papaaho GitLab.

Nga ahuatanga ahurei
Tautoko monomai.
Te whakauru hohonu ki te punaha whakahaere putanga.

support
Kei te ngaro.
Kei te waatea.

Whakauru me te whirihoranga
Ko nga uaua kaore e puta
Ko nga uaua kaore e puta

Te tuku whaiaro o te punaha
Koinei anake te huarahi hei whakamahi i te punaha.
Tautokohia.

Te hanga CI/CD Pipelines
Ka tautokohia, ma te whakamahi i te Jenkins Pipeline.
Tautokohia.

Aroturuki mahi tono
Kei te ngaro.
Kei te waatea.

Te haukori
Neke atu i te 1000 monomai.
Kei te whakawhanakehia te punaha i roto i te GitLab.

API
Ka tautokohia he punaha API matatau.
Ka tukuna he API mo te whakauru hohonu ki nga kaupapa.

Tautoko JavaScript
Kei te waatea.
Kei te waatea.

Te whakauru ki etahi atu taputapu
Ko te whakauru ki etahi atu taputapu me nga papaaho e tautokohia ana (Slack, GitHub).
He maha nga taputapu mo te whakauru ki nga punaha tuatoru, ina koa - me GitHub me Kubernetes.

Te mana kounga o te waehere
Tautokohia - te whakamahi i te mono SonarQube me etahi atu monomai.
Tautokohia.

Nga rereketanga i waenga i a Jenkins me GitLab CI/CD

I te whakaahuatanga me te whakataurite i a Jenkins me GitLab CI/CD, kia aro tatou ki nga rereketanga o enei taputapu DevOps. Ma te mohio ki enei rereketanga ka awhina koe ki te mohio ki te hunga e pai ake ana ki tetahi o enei taputapu i tetahi atu.

  • Ka taea e GitLab CI/CD te whakahaere katoa i nga putunga a Git. Kei te korero matou mo te whakahaere i nga manga putunga me etahi atu waahanga. Engari ko Jenkins, ahakoa ka taea e ia te mahi me nga whare putunga, kaore i te rite te taumata o te mana whakahaere ki a raatau ki a GitLab CI / CD.
  • He kaupapa tuwhera kore utu a Jenkins. Ko te tangata e whiriwhiri ana ka tukuna e ia takitahi. A ko GitLab CI / CD kei roto i te papaaho GitLab, he otinga turnkey tenei.
  • Kei te tautoko a GitLab CI/CD i nga taputapu whakahaere mahi matatau e mahi ana i te taumata kaupapa. Ko tenei taha o Jenkins he iti ake te whakawhanake.

Jenkins me GitLab CI/CD: nga kaha me nga ngoikoretanga

Inaianei kei a koe etahi whakaaro mo Jenkins me GitLab CI/CD. Inaianei, kia mohio ake koe ki enei taputapu, me titiro ki o raatau kaha me o raatau ngoikoretanga. Ki ta matou whakaaro kua whakatauhia e koe ko tehea taputapu e hiahia ana koe. Ko te tumanako, ma tenei waahanga ka taea e koe te whakamatautau i a koe ano.

▍ Nga Kaha o Jenkins

  • He maha nga monomai.
  • Te mana katoa mo te whakauru taputapu.
  • Te patuiro ngawari o nga kaiwhaiwhai.
  • Tatūnga kōpuku ngawari.
  • Whakamahinga waehere ngawari.
  • He tino pai te punaha whakahaere tohu.
  • Te ngawari me te ngawari.
  • Tautoko mo nga momo reo hotaka.
  • He maamaa te punaha i runga i te taumata mohio.

▍Ko nga ngoikoretanga o Jenkins

  • Ko nga monomai he uaua ki te whakamahi.
  • I te wa e whakamahi ana a Jenkins i roto i nga kaupapa iti, ko te waa e hiahiatia ana hei whirihora i a koe ano ka nui noa atu.
  • Te kore o nga korero tātari whanui mo nga mekameka CI/CD.

▍ Nga kaha o GitLab CI/CD

  • He pai te whakauru ki a Docker.
  • Te whakatauira ngawari o nga kaiwhaiwhai.
  • Te mahi whakarara o nga mahi he wahanga o nga wahanga o te paipa CI/CD.
  • Te whakamahi i te tauira kauwhata acyclic i te wa e whakarite hononga mahi.
  • Te taumata teitei o te tauineine na te kaha o te mahi whakarara o nga kaiwhaiwhai.
  • He ngawari ki te taapiri i nga mahi.
  • He taupatupatu ngawari.
  • Pūnaha haumaru pono.

▍ Nga ngoikoretanga o GitLab CI/CD

  • Mo ia mahi, me whakaahua me te tuku / tango i nga taonga toi.
  • Kaore e taea e koe te whakamatautau i nga hua o te whakakotahi i nga manga i mua i te whakakotahitanga.
  • I te wa e whakaahua ana i nga waahanga o te paipa CI / CD, kaore ano kia taea te wehe i nga waahanga takitahi ki roto.

Ngā putanga

Kei a Jenkins me GitLab CI/CD nga kaha me nga ngoikoretanga. Ko te whakautu ki te patai he aha te whiriwhiri i runga i nga hiahia me nga ahuatanga o tetahi kaupapa. Kei ia taputapu CI/CD kua arotakehia i tenei ra etahi ahuatanga, ahakoa i hangaia enei taputapu hei whakaoti i te raru ano. I te wa ano, he taputapu motuhake a Jenkins, a ko GitLab CI / CD he waahanga o te papaaho i hangaia mo te mahi tahi ki te waehere.

I te wa e whiriwhiri ana i te punaha CI / CD, hei taapiri atu ki ona kaha, me whai whakaaro ki nga utu e pa ana ki a ia, me te aha nga miihini DevOps e tautoko ana i te kaupapa e whakamahia ana ki te mahi.

He aha nga taputapu CI/CD e whakamahia ana e koe?

Pakanga o Jenkins me GitLab CI/CD

Pakanga o Jenkins me GitLab CI/CD

Source: will.com

Tāpiri i te kōrero