Matou te fatuina se galuega faʻapipiʻi i le GKE e aunoa ma ni faʻapipiʻi, SMS poʻo le resitalaina. Sei o tatou tilotilo i lalo o le peleue o Jenkins

Na amata uma ina ua talosagaina i matou e le taʻitaʻi o se tasi o matou atinaʻe e faʻataʻitaʻi le latou talosaga fou, lea na faʻapipiʻiina i le aso na muamua atu. Na ou lafoina. Ina ua maeʻa le 20 minute, na maua ai se talosaga e faʻafouina le talosaga, ona o se mea sili ona manaʻomia na faʻaopoopoina iina. Sa ou faafouina. A maeʻa le isi lua itula ... lelei, e mafai ona e mateina le mea na amata ona tupu ...

E tatau ona ou taʻutino atu, ua ou paie (pe ou te leʻi ioe muamua? Leai?), Ma ona o le mea moni o taʻitaʻi o le au e mafai ona maua le avanoa i Jenkins, lea e maua uma ai le CI / CD, na ou manatu: tuʻu atu ia te ia e faʻapipiʻi le tele o lona manaʻo! Sa ou manatua se tala malie: avatu i se tagata se iʻa ona ʻai ai lea o ia mo se aso; valaau se tagata Fed ma o le a fafagaina o ia i lona olaga atoa. Ona alu lea fai togafiti i le galuega, lea o le a mafai ona faʻapipiʻi se atigipusa o loʻo i ai le faʻaogaina o soʻo se faʻaoga manuia i totonu o Kuber ma faʻafeiloaʻi soʻo se tau i ai ENV (O lo'u tamamatua, o se tagata poto faapitoa i filo, o se faiaoga Igilisi i aso ua mavae, o le a mimilo nei lona tamatamailima i lona malumalu ma tilotilo mai ia te au ma le manino pe a uma ona faitau lenei fuaiupu).

O lea la, i lenei faʻamatalaga o le a ou taʻu atu ia te oe le auala na ou aʻoaʻoina ai:

  1. Fa'afouina galuega i Jenkins mai le galuega lava ia pe mai isi galuega;
  2. Faʻafesoʻotaʻi le faʻamafanafanaga o le ao (Cloud shell) mai se node faʻatasi ai ma le sui Jenkins faʻapipiʻi;
  3. Fa'asa'o le mamafa o galuega ile Google Kubernetes Engine.


O le mea moni, o aʻu, ioe, e fai si ou le faamaoni. E faʻapea o loʻo i ai sau vaega o atinaʻe i le Google cloud, ma, o le mea lea, o oe o lona faʻaaogaina ma, ioe, o loʻo i ai sau tala GCP. Ae e le o le uiga lena o lenei tusi.

Ole isi la'u pepa fa'ata'ita'i lea. Naʻo loʻu manaʻo e tusi ia faʻamatalaga i se tasi tulaga: Sa ou feagai ma se faʻafitauli, muamua ou te leʻi iloa pe faʻafefea ona foia, o le fofo e leʻi saunia e google, o lea na ou suʻeina ai i luga ole laiga i ni vaega ma iu ai ina foia le faafitauli. Ma ina ia oʻo i le lumanaʻi, pe a galo ia te aʻu le auala na ou faia ai, ou te le tau toe suʻeina mea uma i luga ole laiga ma faʻapipiʻi faʻatasi, ou te tusia aʻu lava ia pepa faʻatau.

teena o meatotino: 1. O le tusi na tusia "mo aʻu lava", mo le matafaioi faiga sili ona lelei e le aoga. Ou te fiafia e faitau le "semanu e sili atu le faia i lenei auala" filifiliga i faʻamatalaga.
2. Afai o le vaega faʻaaogaina o le tusi e manatu masima, o lona uiga, e pei o aʻu faʻamatalaga muamua, o le tasi lenei o se vaifofo masima vaivai.

Fa'afouina fa'afouina tulaga o galuega i Jenkins

Ou te vaʻaia lau fesili: o le a le mea e fai i le faʻafouina o galuega faʻafouina? Ulufale ma le lima le tau o le manoa ma alu ese!

Ou te tali atu: Ou te matua paie lava, ou te le fiafia pe a latou faitio: Misha, ua paʻu le faʻapipiʻiina, ua leai mea uma! Ua amata ona e su'e, ma o lo'o i ai se fa'aletonu i le tau o se fa'asologa o galuega. O le mea lea, ou te manaʻo e fai mea uma i le lelei e mafai ai. Afai e mafai ona puipuia le tagata faʻaoga mai le tuʻuina saʻo o faʻamatalaga e ala i le tuʻuina atu nai lo se lisi o tulaga taua e filifili mai ai, ona ou faʻatulagaina lea o le filifiliga.

O le fuafuaga lenei: matou te faia se galuega i Jenkins, lea, aʻo leʻi faʻalauiloaina, e mafai ona matou filifilia se faʻasologa mai le lisi, faʻamaonia tulaga taua mo tapulaʻa pasia i le pusa e ala i ENV, ona aoina lea o le container ma tulei i totonu o le Container Registry. Ona amata ai lea o le pusa i le cuber as avega o galuega fa'atasi ai ma tapula'a fa'amaoti i le galuega.

Matou te le mafaufau i le faʻagasologa o le fatuina ma le faʻatulagaina o se galuega i Jenkins, e le o se autu. O le a tatou manatu ua saunia le galuega. Ina ia faʻatinoina se lisi faʻafouina ma faʻaliliuga, matou te manaʻomia ni mea se lua: o se lisi faʻapogai o loʻo i ai ma se numera faʻamaonia muamua ma se fesuiaiga e pei o Filifiliga parakalafa i le galuega. I la tatou faʻataʻitaʻiga, ia faʻaigoaina le fesuiaiga BUILD_VERSION, o le a tatou le talanoaina auiliili. Ae se'i o tatou va'ava'ai toto'a ile lisi fa'apogai.

E le tele naua filifiliga. E lua mea na vave ona oo mai i lou mafaufau:

  • Fa'aoga le API avanoa mamao lea e ofoina atu e Jenkins i ona tagata fa'aoga;
  • Talosagaina mea o loʻo i totonu o le pusa teu oloa (i la matou tulaga o le JFrog Artifactory, e le taua).

Jenkins mamao avanoa API

E tusa ai ma tu ma aga sili ona lelei, ou te manaʻo e aloese mai faʻamatalaga uumi.
O le a ou faatagaina au lava na o se faaliliuga saoloto o se vaega o le parakalafa muamua itulau muamua o fa'amaumauga API:

Ua saunia e Jenkins se API mo masini mamao e mafai ona faitau i ana galuega. <...> Avanoa mamao o lo'o ofoina mai ile sitaili e pei ole REST. O lona uiga e leai se mea e tasi e ulufale ai i foliga uma, ae o se URL e pei o le ".../api/", O fea"..." o lona uiga o le mea o loʻo faʻaogaina ai le mafai API.

I se isi faaupuga, pe afai o le galuega faʻapipiʻi o loʻo matou talanoa nei o loʻo avanoa i http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build, ona maua lea o fa'aili API mo lenei galuega i http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/

O le isi, e iai la tatou filifiliga pe o le a le ituaiga e maua ai le gaioiga. Sei o tatou taulaʻi i le XML, talu ai e naʻo le API e faʻatagaina le faʻamamaina i lenei tulaga.

Sei o tatou taumafai e maua se lisi o galuega uma. Matou te fiafia i le igoa o le faʻapotopotoga (fa'aaligaIgoa) ma lona taunuuga (iʻuga):

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

Na manuia?

Se'i o tatou fa'amama na'o na tamo'e e fa'ai'u i le i'uga SUCCESS. Tatou faaaoga le finauga &tuu ese ma o se parakalafa o le a tatou pasia ai le ala i se tau e le tutusa i SUCCESS. Ioe Ioe. O le lua leaga o se faʻamatalaga. Matou te le aofia ai mea uma e le fiafia ia i matou:

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

Ata o le lisi o manuia
Matou te fatuina se galuega faʻapipiʻi i le GKE e aunoa ma ni faʻapipiʻi, SMS poʻo le resitalaina. Sei o tatou tilotilo i lalo o le peleue o Jenkins

Ia, mo na o le malie, ia tatou mautinoa e leʻi faaseseina i tatou e le faamama (e le pepelo lava fili!) Ma faʻaalia se lisi o mea "le manuia":

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

Ata o le lisi o i latou e le o manuia
Matou te fatuina se galuega faʻapipiʻi i le GKE e aunoa ma ni faʻapipiʻi, SMS poʻo le resitalaina. Sei o tatou tilotilo i lalo o le peleue o Jenkins

Lisi o fa'aliliuga mai se faila i luga o se server mamao

E i ai le auala lona lua e maua ai se lisi o fa'aliliuga. Ou te fiafia i ai e sili atu nai lo le mauaina o le Jenkins API. Ia, aua afai na manuia le fausiaina o le talosaga, o lona uiga na afifi ma tuu i totonu o le fale teu oloa i totonu o le pusa talafeagai. E pei, o se fale teu oloa o le teuina le lelei o lomiga galue o talosaga. Pei. Ia, seʻi o tatou fesili ia te ia poʻo a ni faʻamatalaga o loʻo teuina. O le a matou faʻafefe, grep ma awk le faila mamao. Afai ei ai se tasi e fiafia i le oneliner, o loʻo i lalo o le spoiler.

Tasi laina poloaiga
Faamolemole ia matau ni mea se lua: Ou te pasia faʻamatalaga fesoʻotaʻiga i le ulutala ma ou te le manaʻomia uma lomiga mai le faila, ma ou te filifilia naʻo mea na faia i totonu o le masina. Fa'atonu le fa'atonuga ina ia fetaui ma ou mea moni ma mana'oga:

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

Faʻatulagaina galuega ma faila faʻatulagaina galuega i Jenkins

Na matou iloa le puna o le lisi o lomiga. Se'i o tatou tu'ufa'atasia le lisi e maua i le galuega. Mo aʻu, o le fofo manino o le faʻaopoopoina lea o se laasaga i le galuega faufale. O le laasaga o le a faia pe a fai o le taunuuga o le "manuia".

Tatala le faʻatulagaina o galuega faʻapipiʻi ma taʻavale i le pito i lalo. Kiliki fa'amau: Fa'aopoopo le la'asaga fau -> Laasaga fa'atu'utu'u (tasi). I le tulaga o le laasaga, filifili le tulaga Tulaga fausia nei, seti le tau SUCCESS, le gaioiga e fai pe a manuia Fa'atonu le atigi.

Ma o lea la o le vaega malie. Jenkins teu fa'atonuga galuega i faila. I le XML format. I le ala http://путь-до-задания/config.xml E tusa ai ma lea, e mafai ona e sii maia le faila faila, faʻasaʻo pe a manaʻomia ma toe tuʻu i le mea na e maua ai.

Manatua, matou malilie i luga o le a matou fatuina se parakalafa mo le lisi o lomiga BUILD_VERSION?

Se'i o tatou siiina mai le faila o le faatulagaga ma tilotilo i totonu. Tau lava ina ia mautinoa o loʻo i ai le parakalafa ma le ituaiga manaʻomia.

Ata i lalo spoiler.

O lau vaega config.xml e tatau ona foliga tutusa. Se'i vagana ai mea o lo'o i totonu o le elemene filifiliga o lo'o misi
Matou te fatuina se galuega faʻapipiʻi i le GKE e aunoa ma ni faʻapipiʻi, SMS poʻo le resitalaina. Sei o tatou tilotilo i lalo o le peleue o Jenkins

E mo'i lava oe? O le mea lena, seʻi o tatou tusia se tusitusiga o le a faʻatinoina pe a manuia le fausiaina.
O le tusitusiga o le a maua se lisi o lomiga, download le faila faatulagaina, tusi le lisi o lomiga i totonu i le nofoaga matou te manaʻomia, ona toe tuʻu lea. Ioe. E mo'i lava oe. Tusi se lisi o lomiga i le XML i le nofoaga ua uma ona i ai se lisi o lomiga (o le a i ai i le lumanaʻi, pe a uma le faʻalauiloaina muamua o le tusitusiga). Ou te iloa o loʻo i ai pea tagata fiafia i faʻamatalaga masani i le lalolagi. E le o a'u o ni o latou. Fa'amolemole fa'apipi'i xmlstarler i le masini lea o le a faʻasaʻo ai le config. E foliga mai ia te aʻu e le o se tau tele lea e totogi e aloese ai mai le faʻasaʻoina o le XML e faʻaaoga ai sed.

I lalo o le spoiler, ou te tuʻuina atu le code lea e faʻatino ai le faasologa o loʻo i luga i lona atoaga.

Tusi se lisi o lomiga mai se pusa i luga o le server mamao i le config

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

Afai e te manaʻo i le filifiliga o le mauaina o faʻamatalaga mai Jenkins ma e te paie e pei o aʻu, ona i lalo o le faʻaleagaina o le code tutusa, ae o se lisi mai Jenkins:

Tusi se lisi o lomiga mai Jenkins i le config
Tau lava o le mea lenei i lou mafaufau: o loʻu igoa faʻapotopotoga e aofia ai se numera faʻasologa ma se numera faʻasologa, vavaeina e se kolone. O lea la, e tipi ese e awk le vaega e le manaʻomia. Mo oe lava, sui le laina lea e fetaui ma ou manaʻoga.

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

I le teori, afai na e suʻeina le code na tusia e faʻavae i luga o faʻataʻitaʻiga o loʻo i luga, ona i ai lea i le galuega faʻapipiʻi e tatau ona i ai sau lisi pa'ū ma faʻaliliuga. E pei o le screenshot i lalo o le spoiler.

Fa'atumu sa'o le lisi o fa'aliliuga
Matou te fatuina se galuega faʻapipiʻi i le GKE e aunoa ma ni faʻapipiʻi, SMS poʻo le resitalaina. Sei o tatou tilotilo i lalo o le peleue o Jenkins

Afai e aoga mea uma, ona kopi-pasi le tusitusiga i totonu Fa'atonu le atigi ma sefe suiga.

Feso'ota'i i Cloud shell

E iai a matou tagata aoina i totonu o pusa. Matou te faʻaaogaina le Ansible e fai ma matou meafaigaluega e tuʻuina atu ai talosaga ma le pule faʻatulagaina. E tusa ai, pe a oʻo mai i le fausiaina o koneteina, e tolu filifiliga e oʻo mai i lou mafaufau: faʻapipiʻi Docker i Docker, faʻapipiʻi Docker i luga o se masini e faʻaogaina Ansible, poʻo le fausia o koneteina i totonu o le ao faʻamafanafana. Na matou malilie e nofo filemu e uiga i plugins mo Jenkins i lenei tusiga. Manatua?

Na ou filifili: lelei, talu ai o koneteina "mai le pusa" e mafai ona aoina i totonu o le ao faʻamafanafana, aisea la e faʻalavelave ai? Tausia le mama, sa'o? Ou te manaʻo e aoina pusa Jenkins i totonu o le ao faʻamafanafana, ona faʻaoso lea i totonu o le pusa mai iina. E le gata i lea, o Google o loʻo i ai auala sili ona tamaoaiga i totonu o ana atinaʻe, lea o le ai ai se aoga aoga i le saoasaoa o le faʻapipiʻiina.

Ina ia faʻafesoʻotaʻi i le cloud console, e lua mea e te manaʻomia: gcloud ma aia tatau i Google Cloud API mo le faʻataʻitaʻiga VM lea o le a faia ai lenei lava fesoʻotaʻiga.

Mo i latou o loʻo fuafua e faʻafesoʻotaʻi e le mai Google ao
Google fa'atagaina le avanoa e fa'agata ai le fa'atagaina feso'ota'i i ana auaunaga. Ole mea lea ole a fa'ataga ai oe e fa'afeso'ota'i ile fa'amafanafanaga e o'o lava ile masini kofe, pe afai o lo'o tamo'e *nix ma e iai lona fa'amafanafanaga.

Afai ei ai se manaʻoga mo aʻu e faʻamatala atili lenei mataupu i totonu o le auivi o lenei faʻamatalaga, tusi i totonu o faʻamatalaga. Afai e lava a matou palota, o le a ou tusia se faʻamatalaga i lenei autu.

O le auala pito sili ona faigofie e tuʻuina atu ai aia tatau e ala i le upega tafaʻilagi.

  1. Taofi le faʻataʻitaʻiga VM lea e te faʻafesoʻotaʻi mulimuli ane i le faʻamafanafanaga ao.
  2. Tatala Instance Details ma kiliki teuteu.
  3. I le pito i lalo ole itulau, filifili le avanoa avanoa avanoa Avanoa atoatoa i Cloud API uma.

    Matagofie
    Matou te fatuina se galuega faʻapipiʻi i le GKE e aunoa ma ni faʻapipiʻi, SMS poʻo le resitalaina. Sei o tatou tilotilo i lalo o le peleue o Jenkins

  4. Sefe au suiga ma fa'alauiloa le fa'ata'ita'iga.

A maeʻa le utaina o le VM, faʻafesoʻotaʻi i ai e ala i le SSH ma ia mautinoa e tupu le fesoʻotaʻiga e aunoa ma se mea sese. Fa'aaogā le fa'atonuga:

gcloud alpha cloud-shell ssh

O se feso'ota'iga manuia e foliga fa'apenei
Matou te fatuina se galuega faʻapipiʻi i le GKE e aunoa ma ni faʻapipiʻi, SMS poʻo le resitalaina. Sei o tatou tilotilo i lalo o le peleue o Jenkins

Fa'atino ile GKE

Talu ai o loʻo matou taumafai i auala uma e mafai ai ona sui atoa i le IaC (Infrastucture as a Code), o matou faila faila o loʻo teuina i Git. O le mea lea i le tasi itu. Ma o le faʻapipiʻiina i kubernetes o loʻo faʻamatalaina e se faila yaml, lea e faʻaaogaina naʻo lenei galuega, lea e pei foi o le code. E mai le isi itu. I se tulaga lautele, o le uiga o laʻu tala, o le fuafuaga lenei:

  1. Matou te ave le tau o fesuiaiga BUILD_VERSION ma, faitalia, o tau o fesuiaiga o le a pasia ENV.
  2. Tikia le faila faila mai Git.
  3. Fausia yaml mo le faʻapipiʻiina.
  4. Matou te lafoina uma faila e ala i le scp i le cloud console.
  5. Matou te fauina se atigipusa iina ma tulei i totonu o le resitala o Container
  6. Matou te faʻaogaina le faila faʻapipiʻi uta i le cuber.

Ia sili atu ona patino. O le taimi lava na amata ai ona matou talanoa ENV, ona faʻapea lea e manaʻomia ona tatou pasia le tau o faʻamaufaʻailoga e lua: PARAM1 и PARAM2. Matou te faʻaopoopoina a latou galuega mo le faʻapipiʻiina, ituaiga - Fua Fa'amau.

Matagofie
Matou te fatuina se galuega faʻapipiʻi i le GKE e aunoa ma ni faʻapipiʻi, SMS poʻo le resitalaina. Sei o tatou tilotilo i lalo o le peleue o Jenkins

O le a matou fa'atupuina yaml i se fa'aliliuga faigofie faʻalogo e faila. E faʻapea, ioe, o loʻo ia te oe i lau dockerfile PARAM1 и PARAM2o le igoa o le uta o le a awesomeapp, ma le pusa faʻapipiʻi faʻatasi ai ma le faʻaogaina o le faʻamatalaga faʻapitoa o loʻo taoto i totonu Resitala pusa lae ua sau gcr.io/awesomeapp/awesomeapp-$BUILD_VERSIONfea $BUILD_VERSION na faatoa filifilia mai le lisi pa'u i lalo.

Lisi au

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 sui pe a uma ona faʻaoga faʻaoga gcloud alpha cloud-shell ssh e le o maua le auala faʻafesoʻotaʻi, o lea matou te auina atu ai faʻatonuga i le faʻamafanafanaga ao faʻaaoga le parakalafa --poloaiga.

Matou te faʻamamaina le pusa fale i totonu o le ao faʻamafanafana mai le faila tuai:

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

Tuu le faila faila fou na sii mai i totonu o le pusa fale o le cloud console e faʻaaoga ai le scp:

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

Matou te aoina, faʻailoga ma tulei le koneteina i le resitala o Container:

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"

Matou te faia le mea lava e tasi i le faila faila. Faamolemole ia matau o tulafono o loʻo i lalo e faʻaaoga ai igoa faʻapitoa o le fuifui lea e tupu ai le faʻaogaina (awsm-cluster) ma le igoa o le poloketi (mata'utia-poloketi), i le mea e tu ai le fuifui.

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"

Matou te faʻatautaia le galuega, tatala le faʻamafanafanaga ma faʻamoemoe e vaʻai i le faʻapotopotoga manuia o le pusa.

Matagofie
Matou te fatuina se galuega faʻapipiʻi i le GKE e aunoa ma ni faʻapipiʻi, SMS poʻo le resitalaina. Sei o tatou tilotilo i lalo o le peleue o Jenkins

Ona sosoo ai lea ma le faʻapipiʻiina manuia o le pusa faʻapipiʻi

Matagofie
Matou te fatuina se galuega faʻapipiʻi i le GKE e aunoa ma ni faʻapipiʻi, SMS poʻo le resitalaina. Sei o tatou tilotilo i lalo o le peleue o Jenkins

Sa ou le amanaiaina ma le loto i ai le faatulagaga Faʻailoga. Mo se tasi mafuaaga faigofie: pe a uma ona e setiina avega o galuega fa'atasi ai ma se igoa ua tu'uina atu, o le a tumau pea le fa'agaioiga, tusa lava po'o le a le tele o fa'agaioiga i lenei igoa e te fa'atinoina. Ia, i se tulaga lautele, o lenei mea e sili atu nai lo le lautele o le talafaasolopito.

Ae le o faaiuga

O laasaga uma o loʻo i luga atonu e le mafai ona faia, ae naʻo le faʻapipiʻiina o se masini mo Jenkins, o latou muuulion. Ae mo nisi mafuaaga ou te le fiafia i plugins. Ia, e sili atu ona sa'o, ou te alu atu ia i latou ona o le atuatuvale.

Ma ou te fiafia lava e piki se autu fou mo au. O le tusitusiga o loʻo i luga o se auala foʻi e faʻasoa ai mea na ou mauaina aʻo ou foia le faʻafitauli o loʻo faʻamatalaina i le amataga. Faasoa atu ia i latou e pei o ia, e le o se luko leaga i devops. Afai e fesoasoani aʻu sailiga i se tasi, o le a ou fiafia.

puna: www.habr.com

Faaopoopo i ai se faamatalaga