I nā makahiki i hala iho nei, ua hana ʻia nā holomua nui i ka hoʻomohala ʻana i nā mea hana no ka hoʻohui mau ʻana (Continuous Integration, CI) a me ka hoʻomau mau ʻana (Continuous Delivery, CD). ʻO ka hoʻomohala ʻana i nā ʻenehana no ka hoʻohui ʻana i ka hoʻomohala polokalamu a me ka hana (Development Operations, DevOps) ua alakaʻi i ka piʻi wikiwiki o ka noi no nā mea hana CI / CD. Ke hoʻomaikaʻi mau ʻia nei nā hoʻonā e kū nei, e hoʻāʻo nei e hoʻomau i nā manawa, ua hoʻokuʻu ʻia kā lākou mau mana hou, i ka honua o ka polokalamu hōʻoia maikaʻi (Quality Assurance, QA), nui nā huahana hou e kū mau nei. Me ka nui o nā koho, ʻaʻole maʻalahi ke koho ʻana i ka mea hana pono.
Ma waena o nā mea hana CI / CD a pau, aia ʻelua mau papahana i kūpono i ka nānā ʻana i kahi mea e ʻimi nei i kahi mea mai kēia wahi. Ke kamaʻilio nei mākou e pili ana iā Jenkins a me ka mea hana GitLab CI / CD, kahi ʻāpana o ka paepae GitLab. ʻOi aku ka nui o Jenkins
E lawe, no ka laʻana, ka ʻikepili mai ka platform G2, ka mea e hōʻiliʻili ai i nā loiloi o nā ʻano huahana like ʻole a me nā loiloi a nā mea hoʻohana e hāʻawi iā lākou. Eia ka helu awelika
Inā mākou e kamaʻilio e pili ana i ka kaulana o Jenkins i ka hoʻohālikelike ʻia me nā pae like ʻole, ʻike mākou ua paʻi mākou i kahi ʻatikala e hoʻohālikelike ana i nā kahua Travis CI a me Jenkins, ua hoʻonohonoho mākou i kahi noiʻi. 85 mea hoʻohana i komo i loko. Ua noi ʻia nā mea pane e koho i ka mea hana CI/CD a lākou e makemake nui ai. Ua koho ʻo 79% iā Jenkins, 5% i koho iā Travis CI, a ʻo 16% i hōʻike i ko lākou makemake i nā mea hana ʻē aʻe.
Nā hualoaʻa koho
Ma waena o nā mea hana CI / CD, ua ʻōlelo pinepine ʻia ʻo GitLab CI / CD.
Inā koʻikoʻi ʻoe e pili ana iā DevOps, a laila pono ʻoe e koho pono i nā mea pono kūpono, e noʻonoʻo ana i nā kikoʻī o ka papahana, kāna kālā, a me nā koi ʻē aʻe. No ke kōkua ʻana iā ʻoe e hana i ka koho kūpono, e nānā mākou iā Jenkins a me GitLab CI/CD. Manaʻo kēia e kōkua iā ʻoe e hana i ka koho kūpono.
Hoʻolauna iā Jenkins
Ua hana nā mea hoʻomohala ʻo Jenkins i kahi papahana ʻē aʻe, ʻo Jenkins X, i hoʻolālā ʻia e hana ma kahi kaiapuni Kubernetes. Hoʻohui ʻo Jenkins X iā Helm, Jenkins CI/CD Server, Kubernetes, a me nā mea hana ʻē aʻe e kūkulu i nā paipu CI/CD e hahai ana i nā hana maikaʻi loa o DevOps. No ka laʻana, hoʻohana ʻia ʻo GitOps ma aneʻi.
Hiki i kekahi ke hoʻohui i ka waihona kālā o nā pono o Jenkins i ka ʻoiaʻiʻo o kāna mau palapala i hoʻonohonoho maikaʻi ʻia, hoʻomaopopo a maʻalahi hoʻi e heluhelu. Ua hana ka hui Jenkins ma kahi o 1000 plugins i manaʻo ʻia e hoʻonohonoho i ka launa pū ʻana o Jenkins me nā ʻano ʻenehana like ʻole. Hiki i nā Scripts ke hoʻohana i nā ʻōnaehana hōʻoia, kahi, no ka laʻana, hiki iā ʻoe ke hoʻohui i nā ʻōnaehana pani ʻia.
I ka wā o ka hana ʻana o ka pipeline Jenkins, hiki iā ʻoe ke nānā i ka mea e hana nei i kēlā me kēia kaʻina, inā ua hoʻopau maikaʻi ʻia kekahi mau hana a i ʻole. Hiki iā ʻoe ke nānā i kēia mau mea a pau, akā naʻe, me ka hoʻohana ʻole ʻana i kekahi interface kiʻi, akā me ka hoʻohana ʻana i nā mana o ka terminal.
Nā hiʻohiʻona o Jenkins
Ma waena o nā hiʻohiʻona kaulana o Jenkins ka maʻalahi o ka hoʻonohonoho, kahi kiʻekiʻe o ka automation o nā hana like ʻole, a me nā palapala maikaʻi loa. Inā mākou e kamaʻilio e pili ana i ka hoʻoponopono ʻana i nā hana DevOps, a laila ua manaʻo ʻia ʻo Jenkins he mea pono loa, me ka hoʻohana ʻana, ma ke ʻano he kānāwai, ʻaʻohe mea kūpono ke nānā pono i ke kaʻina holoʻokoʻa o ka hana papahana. ʻAʻole kēia ka hihia me nā mea hana CI / CD ʻē aʻe. E kamaʻilio kākou e pili ana i kekahi o nā hiʻohiʻona nui o Jenkins.
▍1. Kākoʻo manuahi, open source, multi-platform
Hiki iā Jenkins ke holo ma macOS, Windows a me Linux platforms. Hiki iā ia ke hana i loko o kahi kaiapuni Docker, kahi e hiki ai iā ʻoe ke hoʻonohonoho i ka lole a me ka hoʻokō wikiwiki o nā hana automated. Hiki i kēia mea hana ke holo ma ke ʻano he servlet i loko o nā pahu Java-enabled e like me Apache Tomcat a me GlassFish. Hoʻokomo ʻia ʻo Jenkins ma ke ʻano kūpono
▍2. Hoʻokumu ʻia ka kaiaola plugin
ʻOi aku ka ʻoi aku o ka makua ma mua o nā kaiaola plugin o nā mea hana CI/CD ʻē aʻe. Aia i kēia manawa ma luna o 1500 plugins no Jenkins. Kuhi ʻia kēia mau plugins i ka hoʻoponopono ʻana i nā hana he nui, me kā lākou kōkua hiki iā ʻoe ke hoʻokaʻawale i nā ʻano papahana like ʻole. ʻO ka waiwai o nā plugins manuahi e koho ai inā ʻoe e hoʻohana ana iā Jenkins, ʻaʻole pono ʻoe e kūʻai i nā plugins uku uku. Aia kekahi mea hiki
▍3. Hoʻonohonoho maʻalahi a hoʻonohonoho
He maʻalahi loa ʻo Jenkins e hoʻouka a hoʻonohonoho. I ka manawa like, maʻalahi loa ke kaʻina hana o ka hoʻonui ʻana i ka ʻōnaehana. Eia hou, pono e haʻi i ka maikaʻi o ka palapala, no ka mea hiki iā ʻoe ke loaʻa nā pane i nā nīnau like ʻole e pili ana i ka hoʻonohonoho ʻana a me ka hoʻonohonoho ʻana iā Jenkins.
▍4. Kaiāulu aloha
E like me ka mea i haʻi mua ʻia, ʻo Jenkins kahi papahana open source, ʻo ke kaiaola e pili ana i ka nui o nā plugins. Ua kūkulu ʻia kahi kaiāulu nui o nā mea hoʻohana a me nā mea hoʻomohala a puni ʻo Jenkins e kōkua i ka hoʻomohala ʻana i ka papahana. ʻO ke kaiāulu kekahi o nā kumu e hoʻoulu ai i ka ulu ʻana o Jenkins.
▍5. Loaʻa iā REST API
ʻOiai e hana pū ana me Jenkins, hiki iā ʻoe ke hoʻohana i ka REST API, kahi e hoʻonui ai i nā mana o ka ʻōnaehana. Hōʻike ʻia ʻo API no ke komo mamao i ka ʻōnaehana i ʻekolu mau mana: XML, JSON me ke kākoʻo JSONP, Python.
▍6. Kākoʻo no ka hoʻokō like ʻana o nā hana
Kākoʻo ʻo Jenkins i ka parallelization o nā hana DevOps. Hiki ke hoʻohui maʻalahi me nā mea hana kūpono a loaʻa nā leka e pili ana i nā hopena o nā hana. Hiki ke hoʻoikaika ʻia ka hoʻāʻo code ma ka hoʻonohonoho ʻana i kahi kūkulu like o ka papahana me ka hoʻohana ʻana i nā mīkini virtual ʻokoʻa.
▍7. Kākoʻo no ka hana ma nā wahi i puʻunaue ʻia
ʻAe ʻo Jenkins iā ʻoe e hoʻonohonoho i nā kūkulu i hoʻohele ʻia me ka hoʻohana ʻana i nā kamepiula lehulehu. Hoʻohana ʻia kēia hiʻohiʻona i nā papahana nui a hoʻohana i kahi hoʻolālā hana, e like me ka mea aia hoʻokahi haku kikowaena Jenkins a me kekahi mau mīkini kauā. Hiki ke hoʻohana ʻia nā mīkini kauā i nā kūlana e pono ai e hoʻonohonoho i ka hoʻāʻo ʻana o kahi papahana ma nā ʻano like ʻole. Hoʻokaʻawale kēia mau hiʻohiʻona iā Jenkins mai nā papahana like ʻole.
Hoʻolauna iā GitLab
Ua hoʻokuʻu mua ʻia ʻo GitLab CI/CD ma ke ʻano he papahana kūʻokoʻa, akā ma 2015 ua hoʻohui ʻia kēia pūʻulu o nā mea hana i GitLab 8.0. Hiki i kahi kikowaena GitLab CI/CD ke kākoʻo ma luna o 25000 mea hoʻohana. Ma muli o ia mau kikowaena, hiki iā ʻoe ke hana i nā ʻōnaehana i loaʻa loa.
Ua kākau ʻia ʻo GitLab CI/CD a me ka papahana GitLab nui ma Ruby a me Go. Hoʻokuʻu ʻia lākou ma lalo o ka laikini MIT. ʻO GitLab CI/CD, me nā hiʻohiʻona maʻamau o nā mea hana CI/CD, kākoʻo pū kekahi i nā hiʻohiʻona ʻē aʻe e pili ana, no ka laʻana, i ka hoʻonohonoho hana.
Maʻalahi loa ka hoʻohui ʻana iā GitLab CI/CD i kahi papahana. I ka hoʻohana ʻana iā GitLab CI/CD, ua māhele ʻia ke kaʻina hana code project i nā ʻanuʻu, hiki i kēlā me kēia mea ke hana i kekahi mau hana i hana ʻia i kekahi kauoha. Hiki ke hoʻoponopono maikaʻi ʻia nā hana.
Hiki ke holo like nā hana. Ma hope o ka hoʻonohonoho ʻana i ke kaʻina o nā pae a me nā hana, ua mākaukau ka pipeline CI/CD e hele. Hiki iā ʻoe ke nānā i kona holomua ma ka nānā ʻana i ke kūlana o nā hana. ʻO ka hopena, ʻoi aku ka maʻalahi o ka hoʻohana ʻana iā GitLab CI / CD, ʻoi aku ka maʻalahi ma mua o nā mea hana like ʻole.
Nā hiʻohiʻona o GitLab CI/CD a me GitLab
ʻO GitLab CI/CD kekahi o nā mea hana DevOps kaulana loa. Hoʻokaʻawale ʻia ka papahana e nā palapala kiʻekiʻe kiʻekiʻe, maʻalahi a maʻalahi kona mau hiʻohiʻona e hoʻohana. Inā ʻaʻole ʻoe i kamaʻāina iā GitLab CI/CD, ʻo ka papa inoa o nā hiʻohiʻona o kēia hāmeʻa e hāʻawi iā ʻoe i ka manaʻo nui o ka mea āu e manaʻo ai mai ia mea. Pono e hoʻomaopopo ʻia e pili ana ka nui o kēia mau hiʻohiʻona i ka GitLab platform ponoʻī, kahi i hoʻohui ʻia ai ʻo GitLab CI / CD.
▍1. Kaulana
ʻO GitLab CI/CD kahi mea hana hou i loaʻa ka hoʻohana ākea. Ua lilo mālie ʻo GitLab CI/CD i mea paahana CI/CD kaulana loa i hoʻohana ʻia no ka hoʻāʻo ʻana a me ka hoʻonohonoho polokalamu. He maʻalahi kona hoʻonohonoho. He mea hana CI/CD manuahi i kūkulu ʻia i loko o ka paepae GitLab.
▍2. Kākoʻo no nā ʻaoʻao GitLab a me Jekyll
ʻO Jekyll kahi mea hoʻokumu pūnaewele paʻa i hiki ke hoʻohana ʻia i loko o ka ʻōnaehana GitLab Pages e hana i nā pūnaewele e pili ana i nā waihona GitLab. Lawe ka ʻōnaehana i nā mea kumu a hana i kahi kahua paʻa i hoʻomākaukau ʻia e pili ana iā lākou. Hiki iā ʻoe ke hoʻomalu i ke ʻano a me nā hiʻohiʻona o ia mau pūnaewele ma ka hoʻoponopono ʻana i ka faila _config.yml
, hoʻohana ʻia e Jekyll.
▍3. Nā Mana Hoʻolālā Papahana
Mahalo i ka hiki ke hoʻolālā i nā pae o nā papahana, hoʻonui ka ʻoluʻolu o ka nānā ʻana i nā pilikia a me kā lākou mau hui. ʻAe kēia iā ʻoe e hoʻokele i ka hoʻonohonoho ʻana o ka hana ma nā papahana, e hoʻolālā i kā lākou hoʻokō ʻana i kahi lā kikoʻī.
▍4. Hoʻonui ʻakomi o nā mea holo CI
Mahalo i ka scaling maʻalahi o nā mea kukini kuleana no ka hana ʻana i nā hana kikoʻī, hiki iā ʻoe ke mālama nui i ke kumukūʻai o ka hoʻolimalima ʻana i nā mana kikowaena. He mea koʻikoʻi kēia, ʻoi aku hoʻi i ka wā e pili ana i nā kaiapuni kahi e hoʻāʻo like ʻia ai nā papahana. Eia kekahi, he mea nui kēia no nā papahana nui i loaʻa i kekahi mau waihona.
▍5. Nā mea hana hoʻopuka hoʻopuka
Ua alakaʻi ʻo GitLab i nā mana hoʻopuka pilikia he nui i nā papahana open source e hoʻohana i ka paepae. ʻAe ʻo GitLab CI/CD i ka hoʻāʻo like ʻana o nā lālā code like ʻole. Hoʻomaʻamaʻa maikaʻi ʻia nā hopena hoʻāʻo ma ka ʻōnaehana ʻōnaehana. Hoʻonohonoho kēia iā GitLab CI/CD ma waho o Jenkins.
▍6. Kaohi ʻana i ke komo ʻana i nā waihona
Kākoʻo ka paepae GitLab i ka hoʻopaʻa ʻana i ke komo ʻana i nā waihona. No ka laʻana, hiki ke hāʻawi ʻia ka poʻe e hui pū ana i kahi papahana i kahi waihona i nā ʻae kūpono i kā lākou kuleana. Heʻoiaʻiʻo kēia no nā papahana hui.
▍7. Kākoʻo kaiaulu ikaika
Ua hoʻomohala ʻia kahi kaiāulu ikaika a puni ʻo GitLab, e kōkua ana i ka hoʻomohala ʻana i kēia kahua a me kāna mau mea hana, ʻo ia hoʻi, GitLab CI / CD. ʻO ka hoʻohui hohonu ʻana o GitLab CI/CD a me GitLab, ma waena o nā mea ʻē aʻe, e maʻalahi ka loaʻa ʻana o nā pane i nā nīnau e kū mai ana i ka wā e hana pū ai me GitLab CI/CD.
▍8. Kākoʻo no nā ʻōnaehana mana mana like ʻole
ʻO GitLab CI/CD kahi ʻōnaehana hiki ke hana me nā mea ʻoi aku ma mua o nā code i mālama ʻia ma nā waihona GitLab. No ka laʻana, hiki ke mālama ʻia ke code i kahi waihona GitHub, a hiki ke hoʻonohonoho ʻia ka pipeline CI / CD ma ke kumu o GitLab me ka hoʻohana ʻana iā GitLab CI / CD.
Hoʻohālikelike o Jenkins a me GitLab CI/CD
ʻO Jenkins a me GitLab CI/CD nā mea hana maikaʻi loa, hiki iā lāua ʻelua ke hana i ka paipu CI/CD me ka holo mālie. Akā inā mākou e hoʻohālikelike iā lākou, ʻike ʻia, ʻoiai ua like lākou ma nā ʻano he nui, ʻokoʻa lākou i kekahi i kekahi ma kekahi mau ʻano.
Nāʻano
ʻO Jenkins
GitLab CI/CD
Puna hāmama a i ʻole kumu pani
puna hāmama
puna hāmama
Kāu Mau Koho Paʻamau
Pono.
ʻAʻole koi ʻia no ka mea he hiʻohiʻona i kūkulu ʻia o ka paepae GitLab.
Nā hiʻohiʻona kūʻokoʻa
Kākoʻo plugin.
Hoʻohui hohonu i loko o ka ʻōnaehana mana mana.
kākoʻo
Hele ʻole.
Loaʻa.
Hoʻonoho a hoʻonohonoho ʻana
ʻAʻole pilikia nā pilikia
ʻAʻole pilikia nā pilikia
Hoʻolaha ponoʻī o ka ʻōnaehana
ʻO kēia wale nō ke ala e hoʻohana ai i ka ʻōnaehana.
Kākoʻo ʻia.
Ke hana ʻana i nā Pipeline CI/CD
Kākoʻo ʻia, me ka hoʻohana ʻana iā Jenkins Pipeline.
Kākoʻo ʻia.
Ka nānā 'ana i ka hana noi
Hele ʻole.
Loaʻa.
Ke kaiaola
Aia ma luna o 1000 plugins.
Ke kūkulu ʻia nei ka ʻōnaehana ma loko o GitLab.
API
Kākoʻo i kahi ʻōnaehana API holomua.
Hāʻawi i kahi API no ka hoʻohui hohonu ʻana i nā papahana.
Kākoʻo JavaScript
Loaʻa.
Loaʻa.
Hoʻohui me nā mea hana ʻē aʻe
Kākoʻo ʻia ka hoʻohui ʻana me nā mea hana a me nā paepae ʻē aʻe (Slack, GitHub).
Nui nā mea hana no ka hoʻohui ʻana me nā ʻōnaehana ʻaoʻao ʻekolu, ʻoi aku - me GitHub a me Kubernetes.
Hoʻomalu maikaʻi code
Kākoʻo ʻia - me ka hoʻohana ʻana i ka plugin SonarQube a me nā plugins ʻē aʻe.
Kākoʻo ʻia.
Nā ʻokoʻa ma waena o Jenkins a me GitLab CI/CD
Ma hope o ka wehewehe ʻana a hoʻohālikelike iā Jenkins a me GitLab CI/CD, e nānā kākou i nā ʻokoʻa ma waena o kēia mau mea hana DevOps. ʻO ka ʻike ʻana i kēia mau ʻokoʻa e kōkua iā ʻoe e hoʻomaopopo i ka poʻe makemake i kekahi o kēia mau mea hana ma mua o kekahi.
- Hiki iā GitLab CI/CD ke hoʻomalu piha i nā waihona waihona Git. Ke kamaʻilio nei mākou e pili ana i ka mālama ʻana i nā lālā waihona a me kekahi mau hiʻohiʻona. Akā ʻo Jenkins, ʻoiai hiki iā ia ke hana me nā repositories, ʻaʻole ia e hāʻawi i ka pae like o ka mana ma luna o lākou e like me GitLab CI / CD.
- ʻO Jenkins kahi papahana open source manuahi. ʻO ka mea nāna e koho iā ia e hoʻolaha kūʻokoʻa. A ua hoʻokomo ʻia ʻo GitLab CI / CD i ka paepae GitLab, he hopena turnkey kēia.
- Kākoʻo ʻo GitLab CI/CD i nā mea hana hoʻokele hana kiʻekiʻe e hana ana ma ka pae papahana. ʻAʻole i hoʻomohala ʻia kēia ʻaoʻao o Jenkins.
Jenkins a me GitLab CI/CD: nā ikaika a me nā nāwaliwali
I kēia manawa he manaʻo kāu e pili ana iā Jenkins a me GitLab CI/CD. I kēia manawa, no ka hoʻomaʻamaʻa maikaʻi ʻana i kēia mau mea hana, e nānā kākou i ko lākou ikaika a me nā nāwaliwali. Manaʻo mākou ua hoʻoholo mua ʻoe i ka mea hana āu e pono ai. Manaʻolana, e ʻae kēia ʻāpana iā ʻoe e hoʻāʻo iā ʻoe iho.
▍ Ka ikaika o Jenkins
- Ka helu nui o nā plugins.
- Mana piha i ka hoʻokomo ʻana i nā mea hana.
- Debugging maʻalahi o nā kukini.
- Hoʻonohonoho node maʻalahi.
- Hoʻolaha code maʻalahi.
- ʻO ka ʻōnaehana hoʻokele hōʻoia maikaʻi loa.
- Hoʻololi a me ka versatility.
- Kākoʻo no nā ʻōlelo papahana like ʻole.
- Hoʻomaopopo ʻia ka ʻōnaehana ma kahi pae intuitive.
▍ Nawaliwali o Jenkins
- Hiki ke paʻakikī ka hoʻohana ʻana i nā plugins.
- Ke hoʻohana nei ʻo Jenkins i nā papahana liʻiliʻi, ʻo ka manawa e pono ai e hoʻonohonoho iā ʻoe iho hiki ke ʻano nui ʻole.
- Ka nele o ka ʻike noʻeau maʻamau ma nā kaulahao CI/CD.
▍ Ka ikaika o GitLab CI/CD
- Hoʻohui maikaʻi me Docker.
- ʻO ka scaling maʻalahi o nā kukini.
- Ka hoʻokō like ʻana o nā hana i ʻāpana o nā pae o ka pipeline CI/CD.
- Ke hoʻohana nei i ke kumu hoʻohālike acyclic i kuhikuhi ʻia i ka hoʻonohonoho ʻana i nā pilina hana.
- Kiʻekiʻe kiʻekiʻe o ka scalability ma muli o ka hiki ke hoʻokō like o nā kukini.
- Maʻalahi o ka hoʻohui ʻana i nā hana.
- Hoʻoholo hakakā maʻalahi.
- Pūnaehana palekana hilinaʻi.
▍Nawaliwali o GitLab CI/CD
- No kēlā me kēia hana, pono ʻoe e wehewehe a hoʻouka / hoʻoiho i nā kiʻi.
- ʻAʻole hiki iā ʻoe ke hoʻāʻo i nā hopena o ka hui ʻana i nā lālā ma mua o ka hoʻohui ʻia ʻana.
- I ka wehewehe ʻana i nā pae o ka pipeline CI / CD, ʻaʻole hiki ke hoʻokaʻawale i nā pae pākahi i loko o lākou.
Nā hopena
Loaʻa iā Jenkins a me GitLab CI/CD nā ikaika a me nā nāwaliwali. ʻO ka pane i ka nīnau o ka mea e koho ai ma muli o nā pono a me nā ʻano o kahi papahana. He mau hiʻohiʻona ko kēlā me kēia mea paʻahana CI/CD i nānā ʻia i kēia lā, ʻoiai ua hana ʻia kēia mau mea hana e hoʻoponopono i ka pilikia like. Ma ka manawa like, ʻo Jenkins kahi mea hana kūʻokoʻa, a ʻo GitLab CI / CD kahi ʻāpana o kahi kahua i hoʻolālā ʻia no ka hui pū ʻana ma ke code.
Ke koho ʻana i kahi ʻōnaehana CI / CD, i ka hoʻohui ʻana i kona hiki, pono ia e noʻonoʻo i nā kumukūʻai e pili pū ana me ia, a he aha nā mea ʻenehana DevOps e kākoʻo nei i ka papahana i hoʻohana ʻia e hana pū me.
He aha nā mea hana CI/CD āu e hoʻohana ai?
Source: www.habr.com