Anyị na-emepụta ọrụ mbugharị na GKE na-enweghị plugins, SMS ma ọ bụ ndebanye aha. Ka anyị lee anya n'okpuru jaket Jenkins

Ihe a niile malitere mgbe ndị isi otu otu n'ime ndị otu mmepe anyị rịọrọ ka anyị nwalee ngwa ọhụrụ ha, nke etinyere n'akpa ụbọchị gara aga. Etinyere m ya. Mgbe ihe dị ka nkeji iri abụọ gachara, a natara arịrịọ ka emelite ngwa ahụ, n'ihi na etinyela ihe dị ezigbo mkpa n'ebe ahụ. Emegharịrị m. Mgbe awa ole na ole ọzọ gasịrị, ị nwere ike ịkọ ihe malitere ime na-esote ...

M ga-ekweta, m nnọọ umengwụ (m na-ekweta na nke a mbụ? Mba?), Na nyere eziokwu na otu na-eduga nwere ohere Jenkins, nke anyị niile CI / CD, m chere: ka o deploy dị ka. dị ka ọ chọrọ! Echetara m otu egwuregwu: nye mmadụ azụ, ọ ga-eri otu ụbọchị; kpọọ onye na-eri nri, a ga-eri ya nri n’oge ndụ ya niile. wee gaa na-egwu aghụghọ na ọrụ, nke ga-enwe ike ibunye akpa nwere ngwa nke ụdị ọ bụla arụpụtara nke ọma n'ime Kuber ma nyefee ụkpụrụ ọ bụla na ya. ENV (nna nna m, onye ọkà mmụta sayensị, onye nkuzi Bekee n'oge gara aga, ga-atụgharị mkpịsị aka ya na ụlọ nsọ ya ma legide m anya nke ọma mgbe ọ gụchara ahịrịokwu a).

Yabụ, na ndetu a, m ga-agwa gị otu m siri mụta:

  1. Na-agbanwe agbanwe na-emelite ọrụ na Jenkins site na ọrụ n'onwe ya ma ọ bụ site na ọrụ ndị ọzọ;
  2. Jikọọ na igwe njikwa igwe ojii (igwe ojii) site na ọnụ na onye nnọchi anya Jenkins arụnyere;
  3. Nyefee ibu ọrụ na Google Kubernetes Engine.


N'ezie, n'ezie, abụ m onye na-enweghị isi. A na-eche na ị nwere ma ọ dịkarịa ala akụkụ nke akụrụngwa na igwe ojii Google, ya mere, ị bụ onye ọrụ ya na, n'ezie, ị nwere akaụntụ GCP. Mana nke ahụ abụghị ihe ndetu a gbasara.

Nke a bụ akwụkwọ aghụghọ m na-esote. Naanị m chọrọ ide ederede dị otú ahụ n'otu ikpe: nsogbu chere m ihu, amaghị m na mbụ m ga-esi dozie ya, ngwọta ahụ abụghị googled njikere, n'ihi ya, m googled ya na akụkụ ma mesịa dozie nsogbu ahụ. Na nke mere na n'ọdịnihu, mgbe m chefuru otú m si mee ya, ekwesighi m google ihe ọ bụla ọzọ n'otu akụkụ ma chịkọta ya ọnụ, m na-ede onwe m akwụkwọ aghụghọ ndị dị otú ahụ.

Disclaimer: 1. Edere ederede ahụ "maka onwe m", maka ọrụ ahụ omume kacha mma anaghị etinye. Enwere m obi ụtọ ịgụ "ọ ga-akara m mma ime ya otú a" nhọrọ na nkọwa.
2. Ọ bụrụ na akụkụ etinyere nke ndetu a na-ewere dịka nnu, mgbe ahụ, dị ka ndetu m niile gara aga, nke a bụ ngwọta nnu na-adịghị ike.

Na-emelite ntọala ọrụ dị iche iche na Jenkins

Ahụrụ m ajụjụ gị n'ihu: kedu ihe nwelite ọrụ ike nwere jikọrọ ya na ya? Jiri aka tinye uru nke eriri eriri wee pụọ gaa!

M na-aza: Enwere m umengwụ n'ezie, anaghị m amasị ya mgbe ha na-eme mkpesa: Misha, ntinye aka na-akụda, ihe niile agwụla! Ị na-amalite ile anya, ma enwere typo na uru nke ụfọdụ mmalite mmalite ọrụ. Ya mere, m na-ahọrọ ime ihe niile dị ka o kwere mee. Ọ bụrụ na ọ ga-ekwe omume igbochi onye ọrụ ịbanye data ozugbo site n'inye ndepụta nke ụkpụrụ ịhọrọ, mgbe ahụ, m na-ahazi nhọrọ ahụ.

Atụmatụ a bụ nke a: anyị na-emepụta ọrụ na Jenkins, nke, tupu ịmalite, anyị nwere ike họrọ nsụgharị site na listi ahụ, kọwaa ụkpụrụ maka paramita gafere na akpa site na. ENV, mgbe ahụ, ọ na-anakọta akpa ahụ ma tụba ya n'ime akwụkwọ ndekọ ihe. Mgbe ahụ, si ebe ahụ na akpa na ulo oru na cuber dị ka arụ ọrụ na paramita ndị akọwapụtara na ọrụ ahụ.

Anyị agaghị atụle usoro nke ịmepụta na ịmepụta ọrụ na Jenkins, nke a abụghị isiokwu. Anyị ga-eche na ọrụ ahụ dị njikere. Iji mejuputa ndepụta emelitere nwere ụdịdị, anyị chọrọ ihe abụọ: ndepụta isi mmalite nwere nọmba ụdịdị dị adị nke preri yana mgbanwe dị ka. Oke nhọrọ n'ọrụ. N'ihe atụ anyị, ka a kpọọ aha mgbanwe ahụ BUILD_VERSION, anyị agaghị ekwu banyere ya n'ụzọ zuru ezu. Mana ka anyị lebakwuo anya na ndepụta isi mmalite.

Enweghị ọtụtụ nhọrọ ahụ. Ihe abụọ bịara n'uche ozugbo:

  • Jiri API nweta ohere dị anya nke Jenkins na-enye ndị ọrụ ya;
  • Rịọ ọdịnaya nke nchekwa nchekwa dịpụrụ adịpụ (n'ọnọdụ anyị, nke a bụ JFrog Artifatory, nke adịghị mkpa).

Jenkins Remote API

Dị ka omenala magburu onwe ya guzosie ike, m ga-ahọrọ iji zere ogologo nkọwa.
M ga-ahapụ onwe m naanị ntụgharị nke mpempe paragraf mbụ n'efu ibe mbụ nke akwụkwọ API:

Jenkins na-enye API maka ohere igwe nwere ike ịgụta ya na ọrụ ya. <…> A na-enye ohere dịpụrụ adịpụ n'ụdị REST. Nke a pụtara na ọ nweghị otu ntinye aka na njirimara niile, kama URL dị ka ".../api/", Ebe"..." pụtara ihe ejiri ike API tinye ya.

N'ikwu ya n'ụzọ ọzọ, ọ bụrụ na ọrụ nnyefe anyị na-ekwu ugbu a dị na http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build, wee whistles API maka ọrụ a dị na http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/

Ọzọ, anyị nwere nhọrọ n'ụdị ụdị iji nweta mmepụta. Ka anyị lekwasị anya na XML, ebe API na-enye ohere nzacha na nke a.

Ka anyị gbalịa nweta ndepụta nke ọrụ niile na-agba. Anyị nwere mmasị naanị na aha ọgbakọ (aha ngosi) na nsonaazụ ya (akpata):

http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]

Emee?

Ugbu a, ka anyị nyochaa naanị ọsọ ndị na-ejedebe na nsonaazụ ya MGBE. Ka anyị jiri arụmụka ahụ &wepu na dị ka paramita anyị ga-agafe ya ụzọ na uru na-adịghị hà MGBE. Ee Ee. Ihe ọjọọ okpukpu abụọ bụ nkwupụta. Anyị na-ewepu ihe niile na-adịghị amasị anyị:

http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result!='SUCCESS']

Nseta ihuenyo nke ndepụta nke ihe ịga nke ọma
Anyị na-emepụta ọrụ mbugharị na GKE na-enweghị plugins, SMS ma ọ bụ ndebanye aha. Ka anyị lee anya n'okpuru jaket Jenkins

Ọfọn, naanị maka ntụrụndụ, ka anyị jide n'aka na nzacha adịghị aghọgbu anyị (nzacha adịghị agha ụgha!)

http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result='SUCCESS']

Nseta ihuenyo nke ndepụta nke ndị na-emeghị nke ọma
Anyị na-emepụta ọrụ mbugharị na GKE na-enweghị plugins, SMS ma ọ bụ ndebanye aha. Ka anyị lee anya n'okpuru jaket Jenkins

Ndepụta nsụgharị sitere na nchekwa dị na sava dịpụrụ adịpụ

Enwere ụzọ nke abụọ iji nweta ndepụta nsụgharị. Ọ masịrị m ọbụna karịa ịnweta Jenkins API. Ọ dị mma, n'ihi na ọ bụrụ na arụpụtara ngwa ahụ nke ọma, ọ pụtara na etinyere ya ma tinye ya na ebe nchekwa na nchekwa kwesịrị ekwesị. Dịka, ebe nchekwa bụ nchekwa ndabara nke ụdị ngwa na-arụ ọrụ. Dị ka. Ọfọn, ka anyị jụọ ya ụdị nsụgharị dị na nchekwa. Anyị ga-atụgharị, grep na awk na ebe dịpụrụ adịpụ. Ọ bụrụ na onye ọ bụla nwere mmasị na oneliner, mgbe ahụ ọ nọ n'okpuru onye na-emebi ihe.

Otu iwu ahịrị
Biko rịba ama ihe abụọ: M na-agafe nkọwa njikọ na nkụnye eji isi mee ma achọghị m nsụgharị niile site na folda ahụ, m na-ahọrọ naanị ndị e kere n'ime otu ọnwa. Dezie iwu ahụ ka ọ dabara n'ezie na mkpa gị:

curl -H "X-JFrog-Art-Api:VeryLongAPIKey" -s http://arts.myre.po/artifactory/awesomeapp/ | sed 's/a href=//' | grep "$(date +%b)-$(date +%Y)|$(date +%b --date='-1 month')-$(date +%Y)" | awk '{print $1}' | grep -oP '>K[^/]+' )

Ịtọlite ​​​​ọrụ na faịlụ nhazi ọrụ na Jenkins

Anyị chọpụtara isi iyi nke ndepụta nsụgharị. Ka anyị tinye ugbu a na ndepụta nke ga-apụta n'ime ọrụ ahụ. Maka m, ihe ngwọta doro anya bụ ịgbakwunye nzọụkwụ na ọrụ iwu ngwa ngwa. Nzọụkwụ a ga-egbu ma ọ bụrụ na nsonaazụ ya bụ "ihe ịga nke ọma".

Mepee ntọala ọrụ mgbakọ ma pịgharịa gaa na ala. Pịa na bọtịnụ: Tinye nzọụkwụ nrụpụta -> Usoro ọnọdụ (otu). Na ntọala nzọụkwụ, họrọ ọnọdụ Ọkwa ewu ugbu a, tọọ uru MGBE, omume a ga-eme ma ọ bụrụ na ọ ga-aga nke ọma Gbaa iwu shei.

Ma ugbu a akụkụ fun. Jenkins na-echekwa nhazi ọrụ na faịlụ. N'ụdị XML. N'akụkụ ụzọ http://путь-до-задания/config.xml N'ihi ya, ịnwere ike ibudata faịlụ nhazi ahụ, dezie ya dị ka ọ dị mkpa ma tinyeghachi ya ebe ị nwetara ya.

Cheta, anyị kwetara n'elu na anyị ga-emepụta parameter maka ndepụta nsụgharị BUILD_VERSION?

Ka anyị budata faịlụ nhazi wee lelee n'ime ya. Naanị ka ijide n'aka na paramita dị n'ọnọdụ yana ụdị achọrọ.

Nseta ihuenyo n'okpuru spoiler.

Iberibe config.xml gị kwesịrị ịdị ka otu. Ewezuga na ọdịnaya nke mmewere nhọrọ na-efu ma
Anyị na-emepụta ọrụ mbugharị na GKE na-enweghị plugins, SMS ma ọ bụ ndebanye aha. Ka anyị lee anya n'okpuru jaket Jenkins

O doro gị anya? Nke ahụ bụ ya, ka anyị dee edemede nke a ga-eme ma ọ bụrụ na ụlọ ahụ na-aga nke ọma.
Edemede ahụ ga-enweta ndepụta nke ụdị, budata faịlụ nhazi, dee ndepụta ụdị n'ime ya n'ebe anyị chọrọ, wee tinyeghachi ya. Ee. Nke ahụ dị mma. Dee ndepụta nsụgharị na XML na ebe enwerelarị ndepụta nsụgharị (ga-abụ n'ọdịnihu, mgbe mmalite mbụ nke edemede ahụ gasịrị). Ama m na a ka nwere ndị na-anụ ọkụ n'obi na-ekwu okwu oge niile n'ụwa. Abụghị m nke ha. Biko tinye xmlstarler na igwe ebe a ga-edezi nhazi ahụ. Ọ dị m ka nke a abụghị nnukwu ego ị ga-akwụ iji zere iji sed edezi XML.

N'okpuru onye na-emebi ihe, m na-ewepụta koodu nke na-eme usoro dị n'elu n'ozuzu ya.

Dee ndepụta nsụgharị site na nchekwa dị na sava dịpụrụ adịpụ gaa na nhazi

#!/bin/bash
############## Скачиваем конфиг
curl -X GET -u username:apiKey http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_k8s/config.xml -o appConfig.xml

############## Удаляем и заново создаем xml-элемент для списка версий
xmlstarlet ed --inplace -d '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a[@class="string-array"]' appConfig.xml

xmlstarlet ed --inplace --subnode '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]' --type elem -n a appConfig.xml

xmlstarlet ed --inplace --insert '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a' --type attr -n class -v string-array appConfig.xml

############## Читаем в массив список версий из репозитория
readarray -t vers < <( curl -H "X-JFrog-Art-Api:Api:VeryLongAPIKey" -s http://arts.myre.po/artifactory/awesomeapp/ | sed 's/a href=//' | grep "$(date +%b)-$(date +%Y)|$(date +%b --date='-1 month')-$(date +%Y)" | awk '{print $1}' | grep -oP '>K[^/]+' )

############## Пишем массив элемент за элементом в конфиг
printf '%sn' "${vers[@]}" | sort -r | 
                while IFS= read -r line
                do
                    xmlstarlet ed --inplace --subnode '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a[@class="string-array"]' --type elem -n string -v "$line" appConfig.xml
                done

############## Кладем конфиг взад
curl -X POST -u username:apiKey http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_k8s/config.xml --data-binary @appConfig.xml

############## Приводим рабочее место в порядок
rm -f appConfig.xml

Ọ bụrụ na ị na-ahọrọ nhọrọ nke ịnweta nsụgharị site na Jenkins na ị dị umengwụ dị ka m, mgbe ahụ n'okpuru onye na-emebi ihe bụ otu koodu ahụ, mana ndepụta sitere na Jenkins:

Dee ndepụta ụdị si Jenkins gaa na nhazi
Naanị buru nke a n'uche: aha ọgbakọ m nwere nọmba usoro na nọmba ụdị, nke eriri eriri kewapụrụ. N'ihi ya, awk na-ebipụ akụkụ ahụ na-adịghị mkpa. Maka onwe gị, gbanwee ahịrị a ka ọ dabara mkpa gị.

#!/bin/bash
############## Скачиваем конфиг
curl -X GET -u username:apiKey http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_k8s/config.xml -o appConfig.xml

############## Удаляем и заново создаем xml-элемент для списка версий
xmlstarlet ed --inplace -d '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a[@class="string-array"]' appConfig.xml

xmlstarlet ed --inplace --subnode '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]' --type elem -n a appConfig.xml

xmlstarlet ed --inplace --insert '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a' --type attr -n class -v string-array appConfig.xml

############## Пишем в файл список версий из Jenkins
curl -g -X GET -u username:apiKey 'http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result!=%22SUCCESS%22]&pretty=true' -o builds.xml

############## Читаем в массив список версий из XML
readarray vers < <(xmlstarlet sel -t -v "freeStyleProject/allBuild/displayName" builds.xml | awk -F":" '{print $2}')

############## Пишем массив элемент за элементом в конфиг
printf '%sn' "${vers[@]}" | sort -r | 
                while IFS= read -r line
                do
                    xmlstarlet ed --inplace --subnode '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a[@class="string-array"]' --type elem -n string -v "$line" appConfig.xml
                done

############## Кладем конфиг взад
curl -X POST -u username:apiKey http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_k8s/config.xml --data-binary @appConfig.xml

############## Приводим рабочее место в порядок
rm -f appConfig.xml

Na tiori, ọ bụrụ na ịnwalela koodu edere dabere na ihe atụ ndị dị n'elu, mgbe ahụ, na ọrụ ntinye, ị ga-enwerịrị ndepụta ndọda na nsụgharị. Ọ dị ka na nseta ihuenyo n'okpuru onye mbibi.

Ndepụta ụdịdị emechara nke ọma
Anyị na-emepụta ọrụ mbugharị na GKE na-enweghị plugins, SMS ma ọ bụ ndebanye aha. Ka anyị lee anya n'okpuru jaket Jenkins

Ọ bụrụ na ihe niile na-arụ ọrụ, mgbe ahụ, detuo-mado script n'ime Gbaa iwu shei ma chekwaa mgbanwe.

Ijikọ na shei Cloud

Anyị nwere ndị na-anakọta ihe na arịa. Anyị na-eji ike dị ka ngwa nnyefe ngwa na njikwa nhazi. N'ihi ya, a bịa n'ihe gbasara iwu ụlọ, nhọrọ atọ na-abata n'uche: wụnye Docker na Docker, wụnye Docker na igwe na-agba ọsọ, ma ọ bụ wuo arịa na njikwa igwe ojii. Anyị kwetara ịgbachi nkịtị gbasara plugins maka Jenkins n'isiokwu a. Cheta?

Ekpebiri m: ọ dị mma, ebe ọ bụ na enwere ike ịnakọta arịa "si na igbe" na igwe njikwa igwe ojii, kedu ihe kpatara nsogbu? Debe ya ọcha, nri? Achọrọ m ịnakọta arịa Jenkins na igwe ojii igwe ojii, wee bunye ha n'ime cuber si ebe ahụ. Ọzọkwa, Google nwere ọwa bara ụba nke ukwuu n'ime akụrụngwa ya, nke ga-enwe mmetụta bara uru na ọsọ nke ntinye.

Iji jikọọ na igwe njikwa igwe ojii, ịchọrọ ihe abụọ: gcloud na ikike ịnweta Google Cloud API maka ihe atụ VM nke a ga-eji mee otu njikọ a.

Maka ndị na-eme atụmatụ ijikọ ọ bụghị site na igwe ojii Google ma ọlị
Google na-enye ohere ị gbanyụọ ikike mmekọrịta na ọrụ ya. Nke a ga-enye gị ohere ijikọ na console ọbụna site na igwe kọfị, ma ọ bụrụ na ọ na-agba * nix ma nwee njikwa n'onwe ya.

Ọ bụrụ na ọ dị mkpa ka m kpuchie okwu a n'ụzọ zuru ezu n'ime usoro nke ndetu a, dee na nkwupụta. Ọ bụrụ na anyị nwetara votu zuru oke, m ga-ede mmelite na isiokwu a.

Ụzọ kachasị mfe iji nye ikike bụ site na ntanetị weebụ.

  1. Kwụsị ihe atụ VM nke ị ga-emesị jikọọ na igwe njikwa igwe ojii.
  2. Mepee nkọwa nkọwa wee pịa megharịa.
  3. N'okpuru ibe ahụ, họrọ oghere ohere ihe atụ Nweta zuru oke na API igwe ojii niile.

    Nseta ihuenyo
    Anyị na-emepụta ọrụ mbugharị na GKE na-enweghị plugins, SMS ma ọ bụ ndebanye aha. Ka anyị lee anya n'okpuru jaket Jenkins

  4. Chekwaa mgbanwe gị wee malite ihe atụ.

Ozugbo VM kwụsịrị nbudata, jikọọ na ya site na SSH wee hụ na njikọ ahụ mere na-enweghị njehie. Jiri iwu a:

gcloud alpha cloud-shell ssh

Njikọ na-aga nke ọma na-adị ka nke a
Anyị na-emepụta ọrụ mbugharị na GKE na-enweghị plugins, SMS ma ọ bụ ndebanye aha. Ka anyị lee anya n'okpuru jaket Jenkins

Nyefee na GKE

Ebe anyị na-agba mbọ n'ụzọ ọ bụla enwere ike ịgbanwe kpamkpam na IaC (Infrastucture as a Code), a na-echekwa faịlụ docker anyị na Git. Nke a bụ n'otu aka. A na-akọwa ntinye na kubernetes site na faịlụ yaml, nke a na-eji naanị ọrụ a, nke n'onwe ya dịkwa ka koodu. Nke a si n'akụkụ nke ọzọ. N'ozuzu, m na-ekwu, atụmatụ bụ nke a:

  1. Anyị na-ewere ụkpụrụ nke variables BUILD_VERSION na, nhọrọ, ụkpụrụ nke mgbanwe ndị a ga-agafe ENV.
  2. Budata dockerfile na Git.
  3. Mepụta yaml maka mbugharị.
  4. Anyị na-ebugo faịlụ abụọ a site na scp na igwe njikwa igwe ojii.
  5. Anyị na-ewu otu akpa ebe ahụ wee tụba ya n'ime akwụkwọ ndekọ ihe
  6. Anyị na-etinye faịlụ ntinye ibu na cuber.

Ka anyị kọwakwuo nke ọma. Ozugbo anyị malitere ikwu okwu ENV, mgbe ahụ, were ya na anyị kwesịrị ịgafe ụkpụrụ nke abụọ parameters: PARAM1 и PARAM2. Anyị na-agbakwunye ọrụ ha maka mbugharị, ụdị - Paramita eriri.

Nseta ihuenyo
Anyị na-emepụta ọrụ mbugharị na GKE na-enweghị plugins, SMS ma ọ bụ ndebanye aha. Ka anyị lee anya n'okpuru jaket Jenkins

Anyị ga-emepụta yaml na ntụgharị ntụgharị dị mfe nkuzi mgbamejije ịgba akwụkwọ. N'ezie, a na-eche na ị nwere na dockerfile gị PARAM1 и PARAM2na ibu aha ga-abụ ọmarịcha ngwa, na akpa gbakọtara na ngwa nke ụdị akọwapụtara dị na ya ndekọ akpa nọ n'ụzọ gcr.io/awesomeapp/awesomeapp-$BUILD_VERSIONebe $BUILD_VERSION ka ahọpụtara na listi ndọpụta.

Ndepụta otu

touch deploy.yaml
echo "apiVersion: apps/v1" >> deploy.yaml
echo "kind: Deployment" >> deploy.yaml
echo "metadata:" >> deploy.yaml
echo "  name: awesomeapp" >> deploy.yaml
echo "spec:" >> deploy.yaml
echo "  replicas: 1" >> deploy.yaml
echo "  selector:" >> deploy.yaml
echo "    matchLabels:" >> deploy.yaml
echo "      run: awesomeapp" >> deploy.yaml
echo "  template:" >> deploy.yaml
echo "    metadata:" >> deploy.yaml
echo "      labels:" >> deploy.yaml
echo "        run: awesomeapp" >> deploy.yaml
echo "    spec:" >> deploy.yaml
echo "      containers:" >> deploy.yaml
echo "      - name: awesomeapp" >> deploy.yaml
echo "        image: gcr.io/awesomeapp/awesomeapp-$BUILD_VERSION:latest" >> deploy.yaml
echo "        env:" >> deploy.yaml
echo "        - name: PARAM1" >> deploy.yaml
echo "          value: $PARAM1" >> deploy.yaml
echo "        - name: PARAM2" >> deploy.yaml
echo "          value: $PARAM2" >> deploy.yaml

Onye nnọchi anya Jenkins mgbe ejikọtara ya gcloud alfa igwe ojii-shell ssh ọnọdụ mmekọrịta adịghị, yabụ anyị na-eziga iwu na njikwa igwe ojii site na iji paramita --iwu.

Anyị na-ehicha folda ụlọ na igwe igwe ojii site na dockerfile ochie:

gcloud alpha cloud-shell ssh --command="rm -f Dockerfile"

Tinye dockerfile ọhụrụ ebudatara na nchekwa ụlọ nke igwe igwe ojii site na iji scp:

gcloud alpha cloud-shell scp localhost:./Dockerfile cloudshell:~

Anyị na-anakọta, kpado na ịkwanye akpa ahụ na ndekọ akpa:

gcloud alpha cloud-shell ssh --command="docker build -t awesomeapp-$BUILD_VERSION ./ --build-arg BUILD_VERSION=$BUILD_VERSION --no-cache"
gcloud alpha cloud-shell ssh --command="docker tag awesomeapp-$BUILD_VERSION gcr.io/awesomeapp/awesomeapp-$BUILD_VERSION"
gcloud alpha cloud-shell ssh --command="docker push gcr.io/awesomeapp/awesomeapp-$BUILD_VERSION"

Anyị na-eme otu ihe ahụ na faịlụ ntinye. Biko mara na iwu ndị dị n'okpuru na-eji aha ụgha nke ụyọkọ ahụ ebe ntinye ya na-eme ((awsm-ụyọkọ) na aha oru ngo (egwu-ọrụ), ebe ụyọkọ ahụ dị.

gcloud alpha cloud-shell ssh --command="rm -f deploy.yaml"
gcloud alpha cloud-shell scp localhost:./deploy.yaml cloudshell:~
gcloud alpha cloud-shell ssh --command="gcloud container clusters get-credentials awsm-cluster --zone us-central1-c --project awesome-project && 
kubectl apply -f deploy.yaml"

Anyị na-arụ ọrụ ahụ, mepee mmepụta njikwa ma nwee olileanya ịhụ mgbakọ nke ọma nke akpa ahụ.

Nseta ihuenyo
Anyị na-emepụta ọrụ mbugharị na GKE na-enweghị plugins, SMS ma ọ bụ ndebanye aha. Ka anyị lee anya n'okpuru jaket Jenkins

Na mgbe ahụ ihe ịga nke ọma nkenye ọnọdụ nke gbakọtara akpa

Nseta ihuenyo
Anyị na-emepụta ọrụ mbugharị na GKE na-enweghị plugins, SMS ma ọ bụ ndebanye aha. Ka anyị lee anya n'okpuru jaket Jenkins

M kpachaara anya leghara ntọala ahụ anya Nje. Maka otu ihe kpatara ya: ozugbo ịtọlitela ya arụ ọrụ na aha enyere, ọ ga-anọgide na-arụ ọrụ, n'agbanyeghị ole deployments na aha a ị na-eme. Ọfọn, n'ozuzu, nke a bụ ntakịrị karịa akụkọ ihe mere eme.

Kama ikwubi

Usoro niile a dị n'elu agaghị enwe ike ịme ya, mana etinyere ngwa mgbakwunye maka Jenkins, muuulion ha. Mana n'ihi ihe ụfọdụ anaghị amasị m plugins. Ọfọn, karịa kpọmkwem, m na-agakwuru ha naanị n'ihi enweghị olileanya.

Ọ na-amasịkwa m iburu m isiokwu ọhụrụ. Edemede dị n'elu bụkwa ụzọ isi kesaa nchoputa m mere ka m na-edozi nsogbu ahụ akọwara na mbido. Soro ndị na-, dị ka ya, na-adịghị ma ọlị a dire wolf na devops. Ọ bụrụ na ihe m chọpụtara na-enyere ọ dịkarịa ala aka mmadụ, m ga-enwe obi ụtọ.

isi: www.habr.com

Tinye a comment