Isu tinogadzira basa rekutumira muGKE pasina plugins, SMS kana kunyoresa. Ngatitarisei pasi pebhachi raJenkins

Izvo zvese zvakatanga apo mutungamiri wechikwata chechimwe chezvikwata zvedu zvebudiriro akatikumbira kuti tiedze chikumbiro chavo chitsva, icho chaive chakaiswa mumidziyo nezuro. Ndakaiisa. Pashure pemaminitsi anenge 20, chikumbiro chakagamuchirwa chekuvandudza chikumbiro chacho, nokuti chinhu chaidiwa zvikuru chakanga chawedzerwa ipapo. Ndakavandudza. Mushure memamwe maawa mashoma ... zvakanaka, unogona kufungidzira zvakazotanga kuitika ...

Ndinofanira kubvuma, ndine usimbe (handina kubvuma izvi kare here? Kwete?), Uye tichipiwa chokwadi chokuti boka rinotungamirira rinogona kuwana Jenkins, umo tine CI / CD yose, ndakafunga kuti: zvakawanda sezvaanoda! Ndakarangarira jee: Ipa munhu hove uye achadya kwezuva rimwe chete; dana munhu Fed uye achadyiswa hupenyu hwake hwose. Ndokuenda tamba zvidavado pabasa, iyo yaizokwanisa kuendesa mudziyo une mashandisirwo emhando ipi neipi yakabudirira yakavakwa muKuber uye kuendesa chero kukosha kwairi. ENV (Sekuru vangu, nyanzvi yephilologist, mudzidzisi weChirungu munguva yakapfuura, zvino vaitenderedza chigunwe chavo patemberi yavo uye vakanditarisa zvakanyanya mushure mekuverenga mutsara uyu).

Saka, mune ino chinyorwa ini ndichakuudza kuti ndakadzidza sei:

  1. Dynamically gadziridza mabasa muJenkins kubva pabasa pacharo kana kubva kune mamwe mabasa;
  2. Batanidza kune iyo cloud console (Cloud shell) kubva kune node ine Jenkins mumiririri akaiswa;
  3. Tumira basa kuGoogle Kubernetes Injini.


Muchokwadi, ini, hongu, ndiri kupusa. Zvinofungidzirwa kuti une chinenge chikamu chezvivakwa muGoogle gore, uye, saka, iwe uri mushandisi wayo uye, hongu, une GCP account. Asi handizvo zviri kurehwa netsamba iyi.

Iri ndiro pepa rangu rinotevera rekubiridzira. Ini ndinongoda kunyora zvinyorwa zvakadaro mune imwe nyaya: Ndakanga ndakatarisana nedambudziko, ini pakutanga ndakanga ndisingazivi kuti ndingarigadzirisa sei, mhinduro yakanga isina googled yakagadzirirwa-yakagadzirwa, saka ndakaitsvaga muzvikamu uye pakupedzisira ndakagadzirisa dambudziko racho. Uye kuitira kuti mune ramangwana, pandinokanganwa kuti ndakazviita sei, handifaniri google zvinhu zvose zvakare chidimbu nechidimbu uye kuunganidza pamwe chete, ndinonyora pachangu mapepa akadaro.

Disclaimer: 1. Tsamba yacho yakanyorwa β€œzvangu”, nokuda kwebasa racho tsika yakanaka haishande. Ndinofara kuverenga "zvingadai zviri nani kuzviita nenzira iyi" mumashoko.
2. Kana chikamu chakashandiswa chechinyorwa chichionekwa semunyu, saka, semashoko angu ose ekare, iyi ndiyo mhinduro isina simba yemunyu.

Nesimba kuvandudza marongero ebasa muJenkins

Ini ndinofanoona mubvunzo wako: chii chine simba rekuvandudza basa rine chekuita nazvo? Pinda kukosha kwetambo parameter pamurume uye wobva waenda!

Ini ndinopindura: Ndine usimbe chaizvo, handizvifarire pavanonyunyuta: Misha, kutumirwa kuri kuputsika, zvese zvaenda! Iwe unotanga kutarisa, uye pane typo mukukosha kweimwe basa rekutanga parameter. Naizvozvo, ndinosarudza kuita zvese nemazvo sezvinobvira. Kana zvichikwanisika kudzivirira mushandisi kupinda data zvakananga nekupa panzvimbo iyo runyoro rwezvakakosha kusarudza kubva, ini ndinoronga sarudzo.

Chirongwa ndeichi: isu tinogadzira basa muJenkins, umo, tisati tatanga, taigona kusarudza vhezheni kubva pane iyo runyorwa, tsanangura kukosha kweiyo paramita yakapfuudzwa kumudziyo kuburikidza. ENV, yobva yatora mudziyo woisa muContainer Registry. Ipapo kubva ipapo mudziyo unotangwa mu cuber se mutoro webasa nemaparameter anotsanangurwa mubasa racho.

Hatingatarise maitiro ekugadzira uye kumisikidza basa muJenkins, izvi hazvisi-musoro. Tichafunga kuti basa rakagadzirira. Kuti tishandise rondedzero yakagadziridzwa ine mavhezheni, tinoda zvinhu zviviri: iripo sosi runyorwa ine preori inoshanda vhezheni nhamba uye shanduko yakafanana. Sarudzo parameter mubasa. Mumuenzaniso wedu, rega mutsauko unzi BUILD_VERSION, hatingarambi tichitaura zvakadzama. Asi ngatinyatso tarisisa kune rondedzero yemabviro.

Hapana zvakawanda zvingasarudzwa. Zvinhu zviviri zvakabva zvauya mupfungwa:

  • Shandisa iyo Remote yekuwana API iyo Jenkins inopa kune vashandisi vayo;
  • Kumbira zviri mukati meiyo kure repository folda (munyaya yedu iyi JFrog Artifactory, iyo isina kukosha).

Jenkins Remote access API

Zvinoenderana netsika yakasarudzika yakanakisa, ndingade kunzvenga tsananguro refu.
Ndichazvibvumira chete shanduro yemahara yechidimbu chendima yekutanga peji rekutanga rezvinyorwa zveAPI:

Jenkins inopa API yekure kure-inoverengeka muchina kuwana kwayo kushanda kwayo. <…> Kure kure kunopihwa mune REST-senge maitiro. Izvi zvinoreva kuti hapana imwe nzvimbo yekupinda kune ese maficha, asi pane iyo URL senge ".../api/",Kupi"..." zvinoreva chinhu chinoshandiswa API kugona.

Mune mamwe mazwi, kana basa rekutumira ratiri kutaura nezvaro riripo http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build, ipapo API muridzo webasa iri anowanikwa pa http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/

Zvadaro, tine sarudzo mune fomu ipi yekugamuchira zvakabuda. Ngatitarisei paXML, sezvo API inongobvumira kusefa mune iyi kesi.

Ngatingoedzei kuwana runyoro rwemabasa ese anomhanya. Isu tinongofarira zita remusangano (displayName) uye mhedzisiro yacho (result):

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

Yakashanda here?

Zvino ngatisefa chete iwo anomhanya anozoguma nemhedzisiro KUKUNDA. Ngatishandise nharo & kusabatanidza uye separameter tichaipfuudza iyo nzira yekukosha isina kuenzana nayo KUKUNDA. Hongu Hongu. A double negative chirevo. Isu tinobvisa zvese zvisingatifarire:

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

Screenshot yezita revakabudirira
Isu tinogadzira basa rekutumira muGKE pasina plugins, SMS kana kunyoresa. Ngatitarisei pasi pebhachi raJenkins

Zvakanaka, nekuda kwekunakidzwa, ngative nechokwadi chekuti sefa haina kutinyengedza (mafirita haamborevi nhema!) uye kuratidza runyoro rwe "asina kubudirira":

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

Screenshot yerondedzero yevasina kubudirira
Isu tinogadzira basa rekutumira muGKE pasina plugins, SMS kana kunyoresa. Ngatitarisei pasi pebhachi raJenkins

Rondedzero yeshanduro kubva mufolda pane iri kure server

Pane nzira yechipiri yekuwana rondedzero yeshanduro. Ini ndinoifarira zvakanyanya kupfuura kuwana iyo Jenkins API. Zvakanaka, nekuti kana iyo application yakavakwa zvakabudirira, zvinoreva kuti yakaiswa mukati uye yakaiswa mune repository mune yakakodzera folda. Senge, repository ndiyo inogadzika chengetedzo yekushanda shanduro dzemaapplication. Kuda. Zvakanaka, ngatimubvunze kuti ndeapi mavhezheni ari mudura. Isu tichapeta, grep uye awk iyo iri kure folda. Kana paine munhu anofarira kune oneliner, saka iri pasi pemuparadzi.

One line command
Ndokumbira utarise zvinhu zviviri: Ini ndinopfuudza ruzivo rwekubatanidza mumusoro uye ini handidi ese mavhezheni kubva mufolda, uye ini ndinosarudza iwo chete akagadzirwa mukati memwedzi. Rongedza iwo murairo kuti uenderane nezvako uye zvaunoda:

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

Kumisikidza mabasa uye basa rekugadzirisa faira muJenkins

Takaona kwakabva runyorwa rweshanduro. Ngatisanganisei rondedzero inobuda mubasa racho. Kwandiri, mhinduro iri pachena yaive yekuwedzera nhanho mune application kuvaka basa. Nhanho yaizoitwa kana mhedzisiro yaive "kubudirira".

Vhura zvigadziriso zvebasa regungano uye wobva waenda kuzasi chaiko. Baya mabhatani: Wedzera nhanho yekuvaka -> Conditional nhanho (imwe). Mumatanho ekugadzirisa, sarudza mamiriro acho Chimiro chekuvaka ikozvino, isa kukosha KUKUNDA, chiito chinofanira kuitwa kana chabudirira Run shell command.

Uye zvino chikamu chinonakidza. Jenkins anochengeta zvigadziriso zvebasa mumafaira. Mune XML format. Munzira http://ΠΏΡƒΡ‚ΡŒ-Π΄ΠΎ-задания/config.xml Saizvozvo, iwe unogona kudhawunirodha faira rekugadzirisa, rigadzirise sezvinodiwa uye woridzosera kwawariwana.

Rangarira, takabvumirana pamusoro kuti tichagadzira parameter yerunyorwa rweshanduro BUILD_VERSION?

Ngatitorei faira rekugadzirisa uye titarise mukati maro. Kungoita chokwadi chekuti parameter iri panzvimbo uye yerudzi rwaunoda.

Screenshot pasi pe spoiler.

Chimedu chako checonfig.xml chinofanira kutaridzika zvakafanana. Kunze kwekunge zviri mukati meiyo sarudzo haisati yavapo
Isu tinogadzira basa rekutumira muGKE pasina plugins, SMS kana kunyoresa. Ngatitarisei pasi pebhachi raJenkins

Une chokwadi here? Ndizvozvo, ngatinyorei script inozoitwa kana iyo kuvaka ikabudirira.
Iyo script inogashira runyoro rweshanduro, dhawunirodha faira rekugadzirisa, nyora rondedzero yeshanduro mairi munzvimbo yatinoda, wozoidzosera. Ehe. Izvo ndizvo. Nyora rondedzero yeshanduro muXML munzvimbo yatove nerondedzero yeshanduro (ichave mune ramangwana, mushure mekutanga kwekutanga script). Ndinoziva kuchine mafeni anotyisa ekutaura nguva dzose munyika. handisi wavo. Please install xmlstarler kumuchina uko iyo config ichagadziriswa. Zvinoita kwandiri kuti uyu hausi mutengo wakakura kudaro kubhadhara kudzivirira kugadzirisa XML uchishandisa sed.

Pasi pemuparadzi, ini ndinopa kodhi iyo inoita kutevedzana kuri pamusoro payo yakazara.

Nyora runyoro rweshanduro kubva pafolda pane iri kure server kune iyo 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

Kana iwe ukasarudza sarudzo yekuwana shanduro kubva kuJenkins uye iwe uri simbe seni, saka pasi pemuparadzi pane imwechete kodhi, asi rondedzero kubva kuJenkins:

Nyora rondedzero yeshanduro kubva kuJenkins kune iyo config
Ingo chengeta izvi mupfungwa: zita rangu regungano rine nhamba yekutevedzana uye nhamba yeshanduro, yakaparadzaniswa nekoloni. Saizvozvo, awk inocheka chikamu chisina kufanira. Iwe pachako, shandura mutsara uyu kuti uenderane nezvido zvako.

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

Muchidzidzo, kana iwe wakaedza kodhi yakanyorwa zvichienderana nemienzaniso iri pamusoro, saka mubasa rekutumira iwe unofanirwa kunge watove uine rondedzero yekudonha-pasi ine shanduro. Zvakafanana neiyo skrini pasi pemuparadzi.

Rondedzero yeshanduro yakapedzwa nemazvo
Isu tinogadzira basa rekutumira muGKE pasina plugins, SMS kana kunyoresa. Ngatitarisei pasi pebhachi raJenkins

Kana zvese zvashanda, wobva wakopa-namira script mukati Run shell command uye chengetedza shanduko.

Kubatanidza ku Cloud shell

Tine vaunganidzi mumidziyo. Isu tinoshandisa Ansible seyedu yekushandisa yekushandisa uye gadziriso maneja. Saizvozvo, kana zvasvika pakuvaka midziyo, sarudzo nhatu dzinouya mumusoro: isa Docker muDocker, isa Docker pamushini unoshanda Ansible, kana kuvaka midziyo mune yegore console. Takabvumirana kuramba takanyarara nezve plugins yeJenkins mune ino chinyorwa. Rangarira?

Ndakafunga: zvakanaka, sezvo midziyo "kunze kwebhokisi" inogona kuunganidzwa mune yegore console, saka nei uchinetseka? Ramba wakachena, handiti? Ini ndoda kuunganidza midziyo yeJenkins mune iyo cloud console, uye wobva yaisa mucuber kubva ipapo. Uyezve, Google ine nzira dzakapfuma kwazvo mukati mezvivakwa zvayo, izvo zvichave nemhedzisiro inobatsira pakukurumidza kwekutumira.

Kuti ubatanidze kune cloud console, unoda zvinhu zviviri: gcloud uye kodzero dzekuwana Purogiramu inonzi Google Cloud yechiitiko cheVM icho chinongedzo chakafanana chichaitwa.

Kune avo vanoronga kubatanidza kwete kubva kuGoogle gore zvachose
Google inobvumira mukana wekudzima mvumo yekudyidzana mumasevhisi ayo. Izvi zvinokutendera kuti ubatanidze kune koni kunyangwe kubva kumuchina wekofi, kana iri kumhanya * nix uye ine console pachayo.

Kana pane chikonzero chekuti ndivhare nyaya iyi zvakadzama mukati megadziriro yechinyorwa ichi, nyora mumashoko. Kana tikawana mavhoti akakwana, ini ndichanyora update pamusoro penyaya iyi.

Nzira iri nyore yekupa kodzero ndeye kuburikidza newebhu interface.

  1. Misa iyo VM muenzaniso kubva kwauchazozobatanidza kune iyo cloud console.
  2. Vhura Instance Details uye tinya natsiridza.
  3. Pazasi pepeji, sarudza muenzaniso wekuwana scope Kuwana kuzere kune ese Cloud APIs.

    Screenshot
    Isu tinogadzira basa rekutumira muGKE pasina plugins, SMS kana kunyoresa. Ngatitarisei pasi pebhachi raJenkins

  4. Sevha shanduko dzako uye tanga iyo muenzaniso.

Kana iyo VM yapedza kurodha, batanidza kwairi kuburikidza neSSH uye ita shuwa kuti kubatana kunoitika pasina kukanganisa. Shandisa murairo:

gcloud alpha cloud-shell ssh

Kubatana kwakabudirira kunotaridzika seizvi
Isu tinogadzira basa rekutumira muGKE pasina plugins, SMS kana kunyoresa. Ngatitarisei pasi pebhachi raJenkins

Isa kuGKE

Sezvo isu tiri kuyedza munzira dzese kushandura zvachose kuIaC (Infrastucture seCode), mafaera edu edocker anochengetwa muGit. Izvi kune rimwe divi. Uye kuiswa mu kubernetes kunotsanangurwa neyaml faira, iyo inoshandiswa chete nebasa iri, iro pacharo rakafanana nekodhi. Izvi zvinobva kune rimwe divi. Kazhinji, ndinoreva, chirongwa ndeichi:

  1. Isu tinotora kukosha kwezvakasiyana BUILD_VERSION uye, sarudzo, kukosha kwezvakasiyana izvo zvichapfuudzwa ENV.
  2. Dhawunirodha iyo dockerfile kubva kuGit.
  3. Gadzira yaml yekutumirwa.
  4. Isu tinorodha ese ari maviri mafaera aya kuburikidza nescp kune iyo cloud console.
  5. Isu tinovaka mudziyo ipapo uye toisundira muContainer registry
  6. Isu tinoshandisa faira yekuisa mutoro kune cuber.

Ngativei zvakanyanya. Takambotanga kutaura nezvazvo ENV, saka ngatiti isu tinoda kupfuudza kukosha kwema paramita maviri: PARAM1 ΠΈ PARAM2. Isu tinowedzera basa ravo rekutumira, mhando - String Parameter.

Screenshot
Isu tinogadzira basa rekutumira muGKE pasina plugins, SMS kana kunyoresa. Ngatitarisei pasi pebhachi raJenkins

Isu tichagadzira yaml ine nyore redirection echo kufaira. Zvinofungidzirwa, hongu, kuti une mune yako dockerfile PARAM1 ΠΈ PARAM2kuti zita remutoro richava awesomeapp, uye mudziyo wakaunganidzwa une mashandisirwo eiyo vhezheni yakatsanangurwa irimo Container registry munzira gcr.io/awesomeapp/awesomeapp-$BUILD_VERSIONkupi $BUILD_VERSION ichangosarudzwa kubva pane yekudonhedza pasi.

Kurongwa kwechikwata

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 mumiririri mushure mekubatanidza uchishandisa gcloud alpha cloud-shell ssh interactive mode haisipo, saka tinotumira mirairo kune cloud console tichishandisa parameter --command.

Isu tinochenesa iyo folda yekumba mune yegore console kubva kune yekare dockerfile:

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

Isa iyo ichangobva kudhawunirodha dockerfile muforodha yekumba yegore console uchishandisa scp:

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

Isu tinounganidza, tagi uye kusundira mudziyo kuContainer registry:

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"

Isu tinoita zvakafanana nefaira rekutumira. Ndokumbira utarise kuti mirairo iri pazasi inoshandisa mazita ekunyepedzera emusumbu uko kutumirwa kunoitika (awsm-cluster) uye zita reprojekiti (zvinoshamisa-chirongwa), uko chisumbu chiripo.

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"

Isu tinomhanyisa basa, vhura iyo console inobuda uye tinotarisira kuona yakabudirira gungano remudziyo.

Screenshot
Isu tinogadzira basa rekutumira muGKE pasina plugins, SMS kana kunyoresa. Ngatitarisei pasi pebhachi raJenkins

Uye zvino kubudirira kutumirwa kwegaba rakaungana

Screenshot
Isu tinogadzira basa rekutumira muGKE pasina plugins, SMS kana kunyoresa. Ngatitarisei pasi pebhachi raJenkins

Ndakashaya hanya nemaune Ingress. Nechikonzero chimwe chakareruka: kana wangoimisa mutoro webasa ine zita rakapihwa, icharamba ichishanda, zvisinei kuti mangani ekutumira aine zita iri raunoita. Zvakanaka, kazhinji, izvi zvishoma kudarika chiyero chenhoroondo.

Panzvimbo yemhedziso

Matanho ese ari pamusoro anogona kunge asina kuitwa, asi akangoisa imwe plugin yeJenkins, muuulion yavo. Asi nekuda kwechimwe chikonzero ini handifarire plugins. Zvakanaka, kunyanya, ndinoenda kwavari nekuda kwekupererwa.

Uye ini ndinongoda kunhonga imwe nyaya nyowani kwandiri. Rugwaro rwuri pamusoro zvakare inzira yekugovera izvo zvandakawana ndichigadzirisa dambudziko rakatsanangurwa pakutanga. Goverana neavo, saiye, vasiri mhumhi yakaipa mudevops. Kana zvandinowana zvichibatsira mumwe munhu, ndichafara.

Source: www.habr.com

Voeg