Cruthaímid tasc imscartha in GKE gan forlíontáin, SMS nó clárú. Déanaimis peek faoi seaicéad Jenkins

Thosaigh sé ar fad nuair a d'iarr ceannaire foirne ceann dár bhfoirne forbartha orainn a n-iarratas nua a thástáil, a bhí coimeádta an lá roimhe sin. phostáil mé é. Tar éis timpeall 20 nóiméad, fuarthas iarratas chun an t-iarratas a nuashonrú, toisc go raibh rud an-riachtanach curtha leis ann. athnuachan mé. Tar éis cúpla uair an chloig eile ... bhuel, is féidir leat buille faoi thuairim a dhéanamh ar cad a thosaigh ag tarlú...

Caithfidh mé a admháil, tá mé leisciúil go leor (nár admhaigh mé é seo níos luaithe? Ní hea?), Agus ag cur san áireamh go bhfuil rochtain ag ceannairí foirne ar Jenkins, ina bhfuil CI/CD againn ar fad, shíl mé: lig dó imscaradh mar oiread agus is mian leis! chuimhnigh mé ar joke: tabhair iasc do dhuine agus íosfaidh sé ar feadh lae; cuir glaoch ar dhuine chothaithe agus beidh sé chothaithe ar feadh a shaoil. Agus chuaigh cleasanna a imirt ar an bpost, a bheadh ​​in ann coimeádán a imscaradh ina bhfuil feidhmchlár aon leagan a tógadh go rathúil isteach i Kuber agus aon luachanna a aistriú chuige ENV (bheadh ​​mo sheanathair, philologist, múinteoir Béarla san am a chuaigh thart, ag casadh a mhéar ar a theampall anois agus ag féachaint orm go han-léiritheach tar éis an abairt seo a léamh).

Mar sin, sa nóta seo inseoidh mé duit conas a d'fhoghlaim mé:

  1. Nuashonrú dinimiciúil ar phoist i Jenkins ón bpost féin nó ó phoist eile;
  2. Ceangail leis an gconsól scamall (Cloud shell) ó nód leis an ngníomhaire Jenkins suiteáilte;
  3. Imscaradh ualach oibre chuig Google Kubernetes Engine.


Go deimhin, tá mé, ar ndóigh, a bheith beagán míghreannmhar. Glactar leis go bhfuil ar a laghad cuid den bhonneagar agat sa scamall Google, agus, dá bhrí sin, is tú a úsáideoir agus, ar ndóigh, tá cuntas GCP agat. Ach ní mar sin atá an nóta seo faoi.

Is é seo mo chéad bhileog cheat. Níl uaim ach nótaí den sórt sin a scríobh i gcás amháin: bhí fadhb orm, ní raibh a fhios agam conas é a réiteach ar dtús, ní raibh an réiteach réidh le googled, mar sin googled mé é i gcodanna agus réitigh mé an fhadhb ar deireadh. Agus sa todhchaí, nuair a dhéanaim dearmad ar conas a rinne mé é, ní gá dom gach rud a google arís píosa ar phíosa agus é a thiomsú le chéile, scríobhaim bileoga cheatála dom féin.

Séanadh: 1. Scríobhadh an nóta “dom féin”, don ról dea-chleachtas ní bhaineann. Táim sásta na roghanna “bheadh ​​sé níos fearr é a dhéanamh ar an mbealach seo” a léamh sna tuairimí.
2. Má mheastar gur salann an chuid a chuirtear i bhfeidhm den nóta, ansin, cosúil le gach nótaí a bhí agam roimhe seo, is tuaslagán salainn lag é an ceann seo.

Socruithe poist i Jenkins a nuashonrú go dinimiciúil

Tuartaim do cheist: cad a bhaineann le nuashonrú dinimiciúil poist leis? Cuir isteach luach na paraiméadar teaghrán de láimh agus amach leat!

Freagraim: Táim i ndáiríre leisciúil, ní maith liom é nuair a dhéanann siad gearán: Misha, tá an t-imscaradh ag tuairteáil, tá gach rud imithe! Tosaíonn tú ag breathnú, agus tá clóscríobh i luach roinnt paraiméadar seoladh tasc. Dá bhrí sin, is fearr liom gach rud a dhéanamh chomh héifeachtach agus is féidir. Más féidir an t-úsáideoir a chosc ó shonraí a iontráil go díreach trí liosta luachanna a thabhairt ina ionad sin le roghnú astu, ansin eagraím an rogha.

Is é an plean seo: cruthaímid post i Jenkins, ina bhféadfaimis, roimh é a sheoladh, leagan a roghnú ón liosta, sonraigh luachanna le haghaidh paraiméadair a cuireadh ar aghaidh chuig an gcoimeádán trí ENV, ansin bailíonn sé an coimeádán agus cuireann sé isteach sa Chlárlann Coimeádán é. Ansin as sin seoltar an coimeádán i gciúbair mar ualach oibre leis na paraiméadair atá sonraithe sa phost.

Ní bhreithneoidh muid an próiseas a bhaineann le post a chruthú agus a chur ar bun in Jenkins, ní ábhar é seo. Glacfaimid leis go bhfuil an tasc réidh. Chun liosta nuashonraithe le leaganacha a chur i bhfeidhm, teastaíonn dhá rud uainn: liosta foinse reatha le huimhreacha bailí a priori agus athróg mar Paraiméadar rogha sa tasc. In ár sampla, lig an athróg a ainmniú BUILD_VERSION, ní bheidh muid ag dwell ar sé go mion. Ach déanaimis breathnú níos géire ar an liosta foinsí.

Níl go leor roghanna ann. Tháinig dhá rud chun cuimhne láithreach:

  • Bain úsáid as an API cianda rochtana a thairgeann Jenkins dá úsáideoirí;
  • Iarr ar ábhar an fhillteáin stór iargúlta (is é seo ár gcás JFrog Artifactory, nach bhfuil tábhachtach).

Jenkins Remote access API

De réir thraidisiún seanbhunaithe den scoth, b’fhearr liom mínithe fada a sheachaint.
Ní cheadóidh mé dom féin ach aistriúchán saor in aisce ar phíosa den chéad alt an chéad leathanach de dhoiciméadú API:

Soláthraíonn Jenkins API le haghaidh cianrochtain inléite meaisín ar a fheidhmiúlacht. <…> Cuirtear cianrochtain ar fáil i stíl atá cosúil le REST. Ciallaíonn sé seo nach bhfuil aon phointe iontrála amháin ag gach gné, ach ina ionad sin URL cosúil le ".../api/", Cá"...ciallaíonn " an réad a gcuirtear na cumais API i bhfeidhm air.

I bhfocail eile, má tá an tasc imlonnaithe a bhfuil muid ag caint faoi faoi láthair ar fáil ag http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build, ansin tá na feadóga API don tasc seo ar fáil ag http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/

Ansin, tá rogha againn cén fhoirm a gheobhaidh an t-aschur. Dírímid ar XML, ós rud é nach gceadaíonn an API ach scagadh sa chás seo.

Déanaimis iarracht ach liosta a fháil de na ritheanna poist go léir. Níl suim againn ach san ainm tionóil (ainm taispeána) agus a thoradh (mar thoradh ar):

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

D'éirigh sé amach?

Anois, ná déanaimis scagadh ach ar na ritheanna sin a chríochnaíonn an toradh LÁTHAIR. Bainimis úsáid as an argóint & eisiamh agus mar pharaiméadar cuirfimid an cosán ar aghaidh chuig luach nach ionann é LÁTHAIR. Tá Tá. Is ráiteas é diúltach dúbailte. Fágann muid gach rud nach spéis linn as an áireamh:

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

Gabháil scáileáin den liosta rathúil
Cruthaímid tasc imscartha in GKE gan forlíontáin, SMS nó clárú. Déanaimis peek faoi seaicéad Jenkins

Bhuel, le haghaidh spraoi, déanaimis deimhin de nár mheall an scagaire sinn (ní luíonn na scagairí!) Agus taispeánaimid liosta de na cinn “nár éirigh leo”:

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

Gabháil scáileáin den liosta de na cinn nár éirigh leo
Cruthaímid tasc imscartha in GKE gan forlíontáin, SMS nó clárú. Déanaimis peek faoi seaicéad Jenkins

Liosta de na leaganacha ó fhillteán ar fhreastalaí cianda

Tá an dara bealach chun liosta de na leaganacha a fháil. Is maith liom é níos mó ná rochtain a fháil ar Jenkins API. Bhuel, mar má tógadh an t-iarratas go rathúil, ciallaíonn sé go ndearnadh é a phacáistiú agus a chur sa stór san fhillteán cuí. Cosúil, is éard atá i stór stórála réamhshocraithe leaganacha oibre d'fheidhmchláir. Cosúil. Bhuel, cuirimis ceist air cad iad na leaganacha atá á stóráil. Déanfaimid curl, grep agus awk an fillteán iargúlta. Má tá suim ag duine ar bith sa oneliner, ansin tá sé faoin spoiler.

Ordú líne amháin
Tabhair faoi deara le do thoil dhá rud: Gabhaim na sonraí ceangail sa cheanntásc agus ní gá dom na leaganacha go léir ón bhfillteán, agus ní roghnaíonn mé ach na cinn a cruthaíodh laistigh de mhí. Cuir an t-ordú in oiriúint do do réaltachtaí agus do riachtanais:

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[^/]+' )

Comhad cumraíochta poist agus post a shocrú i Jenkins

Rinneamar amach foinse an liosta leaganacha. Déanaimis an liosta mar thoradh air a ionchorprú sa tasc anois. Maidir liom féin, ba é an réiteach soiléir ná céim a chur leis an tasc chun feidhmchlár a thógáil. An chéim a bheadh ​​​​a fhorghníomhú dá mbeadh an toradh "rath".

Oscail na socruithe tasc tionóil agus scrollaigh go dtí an bun an-. Cliceáil ar na cnaipí: Cuir céim thógála leis -> Céim choinníollach (singil). Sna socruithe céim, roghnaigh an coinníoll Stádas tógála reatha, socraigh an luach LÁTHAIR, an gníomh a dhéanfar má éiríonn leis Rith ordú bhlaosc.

Agus anois an chuid spraoi. Stórálann Jenkins cumraíochtaí poist i gcomhaid. I bhformáid xml. Ar an mbealach http://путь-до-задания/config.xml Dá réir sin, is féidir leat an comhad cumraíochta a íoslódáil, é a chur in eagar de réir mar is gá agus é a chur ar ais san áit a bhfuair tú é.

Cuimhnigh, d’aontaíomar thuas go gcruthóimid paraiméadar don liosta leaganacha BUILD_VERSION?

Déanaimis an comhad cumraíochta a íoslódáil agus breathnú taobh istigh de. Díreach chun a chinntiú go bhfuil an paraiméadar i bhfeidhm agus den chineál atá ag teastáil.

Gabháil scáileáin faoi spoiler.

Ba cheart go bhféachfadh do bhlúire config.xml mar an gcéanna. Ach amháin go bhfuil a bhfuil sa ghné roghanna in easnamh go fóill
Cruthaímid tasc imscartha in GKE gan forlíontáin, SMS nó clárú. Déanaimis peek faoi seaicéad Jenkins

An bhfuil tú cinnte? Sin é, scríobhaimis script a chuirfear i gcrích má éiríonn leis an tógáil.
Gheobhaidh an script liosta de na leaganacha, íoslódáil an comhad cumraíochta, scríobh an liosta de na leaganacha isteach é san áit is gá dúinn, agus ansin é a chur ar ais. Tá. Sin céart. Scríobh liosta de na leaganacha i XML san áit a bhfuil liosta de na leaganacha cheana féin (a bheidh sa todhchaí, tar éis an chéad seoladh an script). Tá a fhios agam go bhfuil lucht leanúna fíochmhar na nathanna rialta fós ar fud an domhain. Ní bhaineann mé leo. Suiteáil le do thoil réiltín xml chuig an meaisín ina gcuirfear an cumraíocht in eagar. Feictear dom nach praghas chomh mór é seo le híoc chun eagarthóireacht a dhéanamh ar XML le sed a sheachaint.

Faoin spoiler, cuirim i láthair an cód a fheidhmíonn an t-ord thuas ina iomláine.

Scríobh liosta leaganacha ó fhillteán ar an gcianfhreastalaí chuig an gcumraíocht

#!/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

Más fearr leat an rogha leaganacha a fháil ó Jenkins agus tú chomh leisciúil liomsa, ansin faoin spoiler tá an cód céanna, ach liosta ó Jenkins:

Scríobh liosta de na leaganacha ó Jenkins chuig an config
Coinnigh seo san áireamh: is éard atá i m'ainm tionóil ná seicheamh uimhir agus uimhir leagain, idirstad agus idirstad. Dá réir sin, gearrann awk an chuid gan ghá. Ar do shon féin, athraigh an líne seo chun freastal ar do chuid riachtanas.

#!/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

Go teoiriciúil, má tá tástáil déanta agat ar an gcód scríofa bunaithe ar na samplaí thuas, ansin sa tasc imlonnaithe ba cheart go mbeadh liosta anuas agat cheana féin le leaganacha. Tá sé cosúil sa scáileán faoin spoiler.

Liosta de na leaganacha comhlánaithe i gceart
Cruthaímid tasc imscartha in GKE gan forlíontáin, SMS nó clárú. Déanaimis peek faoi seaicéad Jenkins

Má d'oibrigh gach rud, ansin cóip-greamaigh an script isteach Rith ordú bhlaosc agus athruithe a shábháil.

Ag nascadh leis an bhlaosc Cloud

Tá bailitheoirí againn i gcoimeádáin. Bainimid úsáid as Ansible mar ár n-uirlis seachadta feidhmchlár agus mar bhainisteoir cumraíochta. Dá réir sin, nuair a thagann sé chun coimeádáin a thógáil, tagann trí rogha chun cuimhne: Docker in Docker a shuiteáil, Docker a shuiteáil ar mheaisín atá ag rith Ansible, nó coimeádáin a thógáil i gconsól scamall. D'aontaíomar fanacht ina dtost maidir le forlíontáin do Jenkins san Airteagal seo. Cuimhnigh?

Chinn mé: bhuel, ós rud é gur féidir coimeádáin “as an mbosca” a bhailiú sa chonsól scamall, ansin cén fáth bodhraigh? Coinnigh sé glan, ceart? Ba mhaith liom coimeádáin Jenkins a bhailiú sa chonsól scamall, agus ansin iad a sheoladh isteach sa chiúbair as sin. Thairis sin, tá bealaí an-saibhir ag Google laistigh dá bhonneagar, a mbeidh tionchar tairbheach acu ar luas an imscartha.

Chun nascadh leis an gconsól scamall, beidh dhá rud ag teastáil uait: cloud agus cearta rochtana ar Google Cloud API don chás VM óna ndéanfar an ceangal céanna.

Dóibh siúd a phleanáil chun nascadh ní ó Google scamall ar chor ar bith
Ceadaíonn Google an fhéidearthacht údarú idirghníomhach a dhíchumasú ina chuid seirbhísí. Ligfidh sé seo duit ceangal leis an consól fiú ó mheaisín caife, má tá sé ag rith *nix agus má tá consól féin aige.

Más gá dom an cheist seo a chlúdach ar bhealach níos mine laistigh de chreat an nóta seo, scríobh isteach na tuairimí. Má fhaigheann muid go leor vótaí, scríobhfaidh mé nuashonrú ar an ábhar seo.

Is é an bealach is éasca chun cearta a dheonú ná tríd an gcomhéadan gréasáin.

  1. Cuir stop leis an ásc VM óna nascfaidh tú leis an gconsól néil ina dhiaidh sin.
  2. Oscail Sonraí Cásanna agus cliceáil leasú.
  3. Ag bun an leathanaigh, roghnaigh an raon feidhme rochtana ásc Rochtain iomlán ar gach Cloud API.

    Screenshot
    Cruthaímid tasc imscartha in GKE gan forlíontáin, SMS nó clárú. Déanaimis peek faoi seaicéad Jenkins

  4. Sábháil do chuid athruithe agus seoladh an sampla.

Nuair a bheidh an luchtú críochnaithe ag an VM, ceangail leis trí SSH agus cinntigh go dtarlaíonn an nasc gan earráid. Úsáid an t-ordú:

gcloud alpha cloud-shell ssh

Breathnaíonn nasc rathúil rud éigin mar seo
Cruthaímid tasc imscartha in GKE gan forlíontáin, SMS nó clárú. Déanaimis peek faoi seaicéad Jenkins

Imscaradh chuig GKE

Ós rud é go bhfuilimid ag déanamh ár ndícheall i ngach slí is féidir aistriú go hiomlán go IaC (Bonneagar mar Chód), stóráiltear ár gcomhaid docker i Git. Tá sé seo ar thaobh amháin. Agus déantar cur síos ar imscaradh i kubernetes ag comhad yaml, nach n-úsáidtear ach leis an tasc seo, atá cosúil le cód féin freisin. Tá sé seo ón taobh eile. Go ginearálta, is éard atá i gceist agam, is é seo an plean:

  1. Glacann muid luachanna na n-athróg BUILD_VERSION agus, go roghnach, luachanna na n-athróg a chuirfear tríd ENV.
  2. Íoslódáil an dockerfile ó git.
  3. Gin yaml lena imscaradh.
  4. Déanaimid an dá chomhad seo a uaslódáil trí scp chuig an gconsól néal.
  5. Tógann muid coimeádán ansin agus brú isteach sa chlár Coimeádán é
  6. Cuirimid an comhad imscaradh ualaigh i bhfeidhm ar an gciúbair.

A ligean ar a bheith níos sainiúla. Chomh luath agus a thosaigh muid ag caint faoi ENV, ansin is dócha go gcaithfimid luachanna dhá pharaiméadar a rith: PARAM1 и PARAM2. Cuirimid a dtasc le himscaradh, cineál - Paraiméadar Teaghrán.

Screenshot
Cruthaímid tasc imscartha in GKE gan forlíontáin, SMS nó clárú. Déanaimis peek faoi seaicéad Jenkins

Ginfimid yaml le atreorú simplí chailleann a chomhdú. Glactar leis, ar ndóigh, go bhfuil tú i do dockerfile PARAM1 и PARAM2go mbeidh an t-ainm ualach app iontach, agus luíonn an coimeádán cóimeáilte a bhfuil an leagan sonraithe á chur i bhfeidhm aige Clárlann coimeádán ar an mbealach gcr.io/awesomeapp/awesomeapp-$BUILD_VERSIONI gcás ina $BUILD_VERSION díreach roghnaithe ón liosta anuas.

Liosta foirne

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

Jenkins gníomhaire tar éis nascadh ag baint úsáide as cloud alfa scamall-bhlaosc ssh níl mód idirghníomhach ar fáil, mar sin cuirimid orduithe chuig an gconsól néal ag baint úsáide as an bparaiméadar --ordú.

Glanaimid an fillteán baile sa chonsól néal ón seanchomhad docker:

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

Cuir an dockerfile nua-íoslódáil i bhfillteán baile an chonsóil néil ag baint úsáide as scp:

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

Bailímid, tagaimid agus brúimid an coimeádán chuig an gclár Coimeádán:

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"

Déanaimid an rud céanna leis an gcomhad imscartha. Tabhair faoi deara go n-úsáideann na horduithe thíos ainmneacha bréige an bhraisle ina dtarlaíonn an t-imscaradh (awsm-chnuasach) agus ainm an tionscadail (uamhnach-tionscadal), áit a bhfuil an braisle suite.

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"

Ritheann muid an tasc, oscail an t-aschur consól agus tá súil againn tionól rathúil an choimeádáin a fheiceáil.

Screenshot
Cruthaímid tasc imscartha in GKE gan forlíontáin, SMS nó clárú. Déanaimis peek faoi seaicéad Jenkins

Agus ansin imscaradh rathúil an choimeádáin le chéile

Screenshot
Cruthaímid tasc imscartha in GKE gan forlíontáin, SMS nó clárú. Déanaimis peek faoi seaicéad Jenkins

Rinne mé neamhaird d’aon ghnó ar an socrú Ingress. Ar chúis shimplí amháin: nuair a shocraigh tú é ualach oibre le hainm tugtha, fanfaidh sé ag feidhmiú, is cuma cé mhéad imscaradh leis an ainm seo a dhéanann tú. Bhuel, go ginearálta, tá sé seo beagán níos faide ná scóip na staire.

In ionad na gconclúidí

Is dócha nach bhféadfaí na céimeanna thuas go léir a dhéanamh, ach go simplí suiteáilte roinnt breiseán do Jenkins, a muuulion. Ach ar chúis éigin ní maith liom forlíontáin. Bhuel, níos cruinne, ní rachaidh mé i muinín iad ach amháin as éadóchas.

Agus is maith liom ach ábhar éigin nua a phiocadh suas dom. Is bealach é an téacs thuas freisin chun na torthaí a rinne mé agus mé ag réiteach na faidhbe a ndearnadh cur síos uirthi ag an tús a roinnt. Comhroinn leo siúd, cosúil leis, nach mac tíre dochloíte iad in devops. Má chabhraíonn mo thorthaí le duine ar a laghad, beidh mé sásta.

Foinse: will.com

Add a comment