Re theha mosebetsi oa ho romela ho GKE ntle le li-plugins, SMS kapa ngoliso. Ha re shebe ka tlas'a baki ea Jenkins

Tsohle li qalile ha moetapele oa sehlopha sa se seng sa lihlopha tsa rona tsa nts'etsopele a re kopa hore re leke kopo ea bona e ncha, e neng e kentsoe ka har'a sets'oants'o maobane. Ke e behile. Ka mor'a metsotso e ka bang 20, ho ile ha amoheloa kōpo ea ho nchafatsa kōpo eo, hobane ho ne ho ekelitsoe ntho e hlokahalang haholo moo. Ke nchafalitse. Kamora lihora tse ling tse 'maloa ... hantle, u ka hakanya hore na ho qalile ho etsahala eng kamora moo ...

Ke tlameha ho lumela, ke botsoa haholo (na ha kea ka ka lumela sena pejana? Che?), 'me ka lebaka la hore sehlopha se etellang pele se na le monyetla oa ho fumana Jenkins, moo re nang le CI / CD kaofela, ke ile ka nahana: a ke a sebelise haholo kamoo a batlang! Ka hopola motlae: fa motho tlhapi mme o tla ja letsatsi; bitsa motho Fed mme o tla feptjoa bophelo bohle ba hae. Mme a tsamaya bapala maqheka mosebetsing, e neng e tla khona ho kenya setshelo se nang le ts'ebeliso ea mofuta ofe kapa ofe o hahiloeng ka katleho ho Kuber le ho fetisetsa boleng bofe kapa bofe ho eona. ENV (Ntate-moholo oa ka, setsebi sa philologist, mosuoe oa Senyesemane nakong e fetileng, joale o ne a tla solla monoana oa hae tempeleng ea hae mme a nchebe ka mokhoa o hlakileng ka mor'a ho bala polelo ena).

Kahoo, bukeng ena ke tla u bolella kamoo ke ithutileng kateng:

  1. Nchafatsa ka matla mesebetsi ho Jenkins ho tloha mosebetsing ka boeona kapa mesebetsing e meng;
  2. Hokela ho cloud console (Cloud shell) ho tloha node e nang le moemeli oa Jenkins o kentsoeng;
  3. Kenya mosebetsi ho Google Kubernetes Engine.


Ha e le hantle, ha e le hantle, ke batla ke sa ratehe. Ho nahanoa hore bonyane u na le karolo ea lisebelisoa tsa marang-rang lerung la Google, 'me, ka hona, u mosebelisi oa eona,' me, ehlile, u na le ak'haonte ea GCP. Empa ha se seo lengolo lena le buang ka sona.

Lena ke leqephe la ka le latelang la ho qhekella. Ke batla feela ho ngola lintlha tse joalo ketsahalong e le 'ngoe: Ke ne ke tobane le bothata, qalong ke ne ke sa tsebe ho bo rarolla, tharollo ha ea ka ea etsoa ka google, kahoo ke ile ka e sebelisa ka likarolo tse ling 'me qetellong ka rarolla bothata. 'Me e le hore nakong e tlang, ha ke lebala kamoo ke entseng kateng, ha ho hlokahale hore ke google ntho e' ngoe le e 'ngoe hape ka sengoathoana ebe ke e bokella hammoho, ke ingolla lipampiri tse joalo tsa bolotsana.

ikgololo: 1. Lengolo le ne le ngotsoe “bakeng sa ka”, bakeng sa karolo eo tloaelo e ntlehali ha e sebetse. Ke thabetse ho bala likhetho tsa "ho ka be ho bile molemo ho e etsa ka tsela ena" litlhalosong.
2. Haeba karolo e sebelisitsoeng ea lengolo e nkoa e le letsoai, joale, joaloka lintlha tsohle tsa ka tse fetileng, ena ke tharollo e fokolang ea letsoai.

E ntlafatsa maemo a mosebetsi ho Jenkins ka matla

Ke bona potso ea hau esale pele: ntlafatso ea mosebetsi o matla e amana joang le eona? Kenya boleng ba paramente ea likhoele ka letsoho ebe u tsamaea!

Kea araba: Ke hlile ke botsoa, ​​ha ke rate ha ba tletleba: Misha, ho tsamaisoa hoa senyeha, ntho e 'ngoe le e' ngoe e felile! U qala ho sheba, 'me ho na le typo ka boleng ba paramethara ea ho qala mosebetsi. Ka hona, ke khetha ho etsa ntho e 'ngoe le e' ngoe ka katleho kamoo ho ka khonehang. Haeba ho khonahala ho thibela mosebelisi ho kenya data ka kotloloho ka ho fana ka lethathamo la litekanyetso tseo a ka khethang ho tsona, ebe ke hlophisa khetho.

Morero ke ona: re theha mosebetsi ho Jenkins, moo, pele re qala, re neng re ka khetha mofuta ho tsoa lenaneng, ra hlakisa boleng ba liparamente tse fetisetsoang setshelo ka tsela. ENV, joale e bokella setshelo ebe e e sutumelletsa ka har'a Registry ea Container. Joale ho tloha moo setshelo se thakholoa ka cuber e le mosebetsi o mongata ka li-parameter tse boletsoeng mosebetsing.

Re ke ke ra nahana ka mokhoa oa ho theha le ho theha mosebetsi Jenkins, sena ha se taba. Re tla nka hore mosebetsi o lokile. Ho kenya tšebetsong lenane le ntlafalitsoeng le liphetolelo, re hloka lintho tse peli: lethathamo le teng la mohloli le nang le linomoro tsa mofuta o nepahetseng le mofuta o fapaneng. Khetho ea parameter mosebetsing. Mohlaleng oa rona, e re lebitso le fetoloe BUILD_VERSION, re ke ke ra bua ka eona ka botlalo. Empa a re ke re shebisiseng lethathamo la mehloli.

Ha ho na likhetho tse ngata hakaalo. Hang-hang ho ile ha fihla lintho tse peli kelellong:

  • Sebelisa Remote access API eo Jenkins e fanang ka eona ho basebelisi ba eona;
  • Kopa dikahare tsa foldara ea polokelo e hole (ho rona sena ke JFrog Artifactory, e seng ea bohlokoa).

Jenkins Remote access API

Ho latela moetlo o tsoileng matsoho, nka khetha ho qoba litlhaloso tse telele.
Ke tla itumella feela phetolelo ea mahala ea sekhechana sa serapa sa pele leqephe la pele la litokomane tsa API:

Jenkins e fana ka API bakeng sa phihlello e baloang ke mochini o hole ts'ebetsong ea eona. <…> Phihlello ea remoutu e fanoa ka mokhoa o kang oa REST. Sena se bolela hore ha ho na sebaka se le seng sa ho kena likarolong tsohle, empa ho e-na le hoo, URL e kang ".../api/", kae"..." e bolela ntho eo bokhoni ba API bo sebelisoang ho eona.

Ka mantsoe a mang, haeba mosebetsi oa deployment oo re buang ka oona hajoale o fumaneha ho http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build, joale liphala tsa API tsa mosebetsi ona li fumaneha ho http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/

Ka mor'a moo, re na le khetho ea hore na re ka fumana tlhahiso ea mofuta ofe. Ha re tsepamise maikutlo ho XML, kaha API e lumella feela ho sefa tabeng ena.

Ha re leke feela ho fumana lethathamo la mesebetsi eohle e mathang. Re thahasella feela lebitso la kopano (lebitso le hlahang) le sephetho sa eona (sephetho):

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

Ho etsahetse?

Joale ha re sefe feela li-run tse qetellang ka sephetho TŠEBELETSO. Ha re sebeliseng khang & qhelela thoko 'me joaloka parameter re tla e fetisetsa tsela ea boleng bo sa lekaneng le TŠEBELETSO. Ee E. A double negative ke polelo. Ha re kenye lintho tsohle tse sa re rateng:

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

Screenshot ea lenane la ba atlehileng
Re theha mosebetsi oa ho romela ho GKE ntle le li-plugins, SMS kapa ngoliso. Ha re shebe ka tlas'a baki ea Jenkins

Hantle, molemong oa ho ithabisa, a re etse bonnete ba hore sefahla ha sea re thetsa (li-filters ha li bue leshano!) 'me u bontše lethathamo la "tse sa atlehang":

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

Screenshot ea lenane la ba sa atlehang
Re theha mosebetsi oa ho romela ho GKE ntle le li-plugins, SMS kapa ngoliso. Ha re shebe ka tlas'a baki ea Jenkins

Lenane la liphetolelo ho tsoa ho foldareng ho seva e hole

Ho na le tsela ea bobeli ea ho fumana lethathamo la liphetolelo. Ke e rata le ho feta ho fihlella Jenkins API. Ho lokile, hobane haeba ts'ebeliso e hahiloe ka katleho, ho bolela hore e pakiloe mme e behiloe sebakeng sa polokelo foldareng e nepahetseng. Joalo ka, polokelo ke polokelo ea kamehla ea mefuta e sebetsang ea lits'ebetso. Joalo ka. Hantle, a re mo botse hore na ke liphetolelo life tse bolokiloeng. Re tla curl, grep le awk foldara e hole. Haeba mang kapa mang a thahasella oneliner, joale e tlas'a mofenyi.

Taelo ea mola o le mong
Ka kopo hlokomela lintho tse peli: Ke fetisa lintlha tsa khokahanyo sehloohong 'me ha ke hloke liphetolelo tsohle tse tsoang foldareng,' me ke khetha feela tse bōpiloeng pele ho khoeli. Fetola taelo ho lumellana le 'nete ea hau le litlhoko tsa hau:

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

Ho theha mesebetsi le faele ea tlhophiso ea mosebetsi ho Jenkins

Re ile ra fumana mohloli oa lethathamo la liphetolelo. Joale ha re kenyelleng lenane la sephetho mosebetsing. Ho 'na, tharollo e totobetseng e ne e le ho eketsa mohato mosebetsing oa ho haha ​​​​kopo. Mohato o neng o tla etsoa haeba sephetho e ne e le "katleho".

Bula litlhophiso tsa mosebetsi oa kopano ebe u tsamaisetsa tlase haholo. Tobetsa likonopo: Eketsa mohato oa ho haha ​​-> Mohato o nang le maemo (o le mong). Litlhophisong tsa mehato, khetha boemo Boemo ba hajoale ba ho aha, beha boleng TŠEBELETSO, ketso e lokelang ho etsoa haeba e atlehile Matha taelo ea khetla.

'Me joale karolo e monate. Jenkins o boloka litlhophiso tsa mosebetsi lifaeleng. Ka sebopeho sa XML. Tseleng http://путь-до-задания/config.xml Ka hona, o ka khoasolla faele ea tlhophiso, oa e hlophisa ha ho hlokahala, 'me u e khutlisetse moo u e fumaneng teng.

Hopola, re lumellane ka holimo hore re tla theha parameter bakeng sa lethathamo la liphetolelo BUILD_VERSION?

Ha re khoasolle faele ea tlhophiso 'me re shebe ka hare ho eona. Ho etsa bonnete ba hore parameter e teng le ea mofuta o lakatsehang.

Screenshot tlas'a spoiler.

Sekhechana sa hau sa config.xml se lokela ho shebahala se tšoana. Ntle le hore likahare tsa khetho li ntse li le sieo
Re theha mosebetsi oa ho romela ho GKE ntle le li-plugins, SMS kapa ngoliso. Ha re shebe ka tlas'a baki ea Jenkins

U na le bonnete? Ke eona, ha re ngoleng lengolo le tla etsoa haeba moaho o atlehile.
Script e tla fumana lethathamo la liphetolelo, khoasolla faele ea tlhophiso, e ngole lenane la liphetolelo ho eona sebakeng seo re se hlokang, ebe u se khutlisetsa. Ee. Ee ho joalo. Ngola lethathamo la liphetolelo ho XML sebakeng seo ho seng ho ntse ho e-na le lethathamo la liphetolelo (le tla ba teng nakong e tlang, ka mor'a ho qalisoa ha script). Kea tseba hore ho ntse ho e-na le balateli ba mabifi ba mantsoe a tloaelehileng lefatšeng. ha ke wa bona. Ka kopo, kenya xmlstarler ho mochine moo config e tla hlophisoa. Ho 'na ho bonahala eka sena ha se theko e kholo hakana eo u ka e lefang ho qoba ho hlophisa XML u sebelisa sed.

Tlas'a spoiler, ke hlahisa khoutu e etsang tatellano e ka holimo ka botlalo.

Ngola lenane la liphetolelo ho tloha foldareng ho seva e hole ho ea ho 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

Haeba u khetha khetho ea ho fumana liphetolelo ho Jenkins 'me u botsoa joaloka' na, joale tlas'a spoiler ho na le khoutu e tšoanang, empa lethathamo le tsoang ho Jenkins:

Ngola lethathamo la liphetolelo ho tloha ho Jenkins ho ea ho config
Hopola sena feela: lebitso la ka la kopano le na le nomoro ea tatellano le nomoro ea mofuta, e arotsoeng ke colon. Ka hona, awk e khaola karolo e sa hlokahaleng. Ho uena, fetola mohala ona hore o lumellane le litlhoko tsa hau.

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

Ka khopolo, haeba u lekile khoutu e ngotsoeng ho latela mehlala e ka holimo, joale mosebetsing oa ho romelloa u lokela ho se u ntse u e-na le lethathamo le theoha le liphetolelo. Ho tšoana le skrineng tlas'a spoiler.

Lethathamo le phethiloeng hantle la liphetolelo
Re theha mosebetsi oa ho romela ho GKE ntle le li-plugins, SMS kapa ngoliso. Ha re shebe ka tlas'a baki ea Jenkins

Haeba ntho e 'ngoe le e' ngoe e sebetsa, joale kopitsa-ho beha script ho Matha taelo ea khetla le ho boloka liphetoho.

E hokela ho Cloud shell

Re na le ba bokellang ka har'a lijana. Re sebelisa Ansible joalo ka sesebelisoa sa rona sa phepelo ea lits'ebetso le molaoli oa tlhophiso. Ka hona, ha ho tluoa tabeng ea ho haha ​​​​lijana, ho na le likhetho tse tharo tse tlang kelellong: kenya Docker ho Docker, kenya Docker mochine o sebetsang ka Ansible, kapa u hahe lijana ka har'a cloud console. Re lumetse ho khutsa ka li-plugins tsa Jenkins sehloohong sena. Hopola?

Ke ile ka etsa qeto: hantle, kaha lijana "ka ntle ho lebokose" li ka bokelloa ka har'a cloud console, joale ke hobane'ng ha u khathatseha? E boloke e hloekile, ho joalo? Ke batla ho bokella lijana tsa Jenkins ka har'a cloud console, ebe ke li kenya ka har'a cuber ho tloha moo. Ho feta moo, Google e na le liteishene tse ruileng haholo ka har'a lisebelisoa tsa eona tsa motheo, tse tla ba le phello e molemo ka lebelo la ho romelloa.

Ho hokela ho cloud console, o hloka lintho tse peli: gcloud le litokelo tsa ho fihlella ho Google Cloud API bakeng sa mohlala oa VM oo khokahano ena e tla etsoa ka eona.

Bakeng sa ba rerileng ho hokahana ha ba tsoe ho Google cloud ho hang
Google e lumella monyetla oa ho tima tumello ea ho sebelisana litšebeletsong tsa eona. Sena se tla u lumella ho hokela console leha e le mochining oa kofi, haeba o ntse o sebetsa * nix mme o na le console ka boeona.

Haeba ho na le tlhokahalo ea hore ke koahele taba ena ka ho qaqileng haholoanyane ka har'a moralo oa lengolo lena, ngola litlhaloso. Haeba re fumana likhetho tse lekaneng, ke tla ngola tlhahiso-leseling tabeng ena.

Mokhoa o bonolo oa ho fana ka litokelo ke ka sehokelo sa webo.

  1. Emisa mohlala oa VM oo ka mor'a moo o tla hokela ho console ea leru.
  2. Bula Instance Details ebe o tobetsa fetola.
  3. Botlaaseng ba leqephe, khetha sebaka sa ho fihlella mohlala Ho kena ho Cloud API kaofela.

    Screen Screen
    Re theha mosebetsi oa ho romela ho GKE ntle le li-plugins, SMS kapa ngoliso. Ha re shebe ka tlas'a baki ea Jenkins

  4. Boloka liphetoho tsa hau 'me u qale mohlala.

Hang ha VM e qetile ho kenya, hokela ho eona ka SSH 'me u netefatse hore khokahano e etsahala ntle le phoso. Sebelisa taelo:

gcloud alpha cloud-shell ssh

Khokahano e atlehileng e shebahala tjena
Re theha mosebetsi oa ho romela ho GKE ntle le li-plugins, SMS kapa ngoliso. Ha re shebe ka tlas'a baki ea Jenkins

Fetisetsa ho GKE

Kaha re ntse re leka ka hohle kamoo re ka khonang ho fetohela ho IaC (Infrastucture as Code), lifaele tsa rona tsa docker li bolokiloe ho Git. Sena se ka lehlakoreng le leng. 'Me ho romelloa ho kubernetes ho hlalosoa ke file ea yaml, e sebelisoang feela ke mosebetsi ona, oo ka boeona o tšoanang le khoutu. Sena se tsoa lehlakoreng le leng. Ka kakaretso, ke bolela, moralo ke ona:

  1. Re nka litekanyetso tsa mefuta-futa BUILD_VERSION mme, ka boikhethelo, boleng ba mefuta e tla fetisoa ENV.
  2. Khoasolla faele ea docker ho tsoa ho Git.
  3. Hlahisa yaml bakeng sa ho tsamaisoa.
  4. Re kenya lifaele tsena ka bobeli ka scp ho cloud console.
  5. Re haha ​​setshelo moo ebe re se sutumelletsa ho registry ea Container
  6. Re kenya faele ea ho tsamaisa mojaro ho cuber.

Ha re hlakiseng haholoanyane. Hang ha re qala ho bua ka ENV, joale ha re re re hloka ho fetisa boleng ba liparamente tse peli: PARAM1 и PARAM2. Re eketsa mosebetsi oa bona bakeng sa ho tsamaisoa, mofuta - Khoele Parameter.

Screen Screen
Re theha mosebetsi oa ho romela ho GKE ntle le li-plugins, SMS kapa ngoliso. Ha re shebe ka tlas'a baki ea Jenkins

Re tla hlahisa yaml ka tsela e bonolo ea ho tsamaisa Echo ho file. Ehlile, ho nahanoa hore u na le dockerfile ea hau PARAM1 и PARAM2hore lebitso la mojaro le tla ba e makatsang app, 'me setshelo se kopaneng se nang le ts'ebeliso ea mofuta o boletsoeng se ka har'a Ngoliso ea setshelo ke tseleng gcr.io/awesomeapp/awesomeapp-$BUILD_VERSIONkae $BUILD_VERSION e sa tsoa khethoa lethathamong le theoha.

Lethathamo la lihlopha

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

Moemeli oa Jenkins ka mor'a ho hokahanya ho sebelisa gcloud alpha cloud-shell ssh mode interactive ha e fumanehe, kahoo re romela litaelo ho cloud console re sebelisa parameter --taelo.

Re hloekisa foldara ea lapeng ka har'a cloud console ho tloha ho dockerfile ea khale:

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

Beha dockerfile e sa tsoa jarolloa ka har'a foldara ea lapeng ea cloud console u sebelisa scp:

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

Re bokella, re tšoaea le ho sutumelletsa setshelo ho registry ea 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"

Re etsa se tšoanang ka faele ea deployment. Ka kopo hlokomela hore litaelo tse ka tlase li sebelisa mabitso a iqapetsoeng a sehlopha moo thomello e hlahang teng (awsm-sehlopha) le lebitso la morero (e makatsang-morero), moo sehlopha se leng teng.

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"

Re tsamaisa mosebetsi, re bula sehlahisoa sa console mme re tšepa ho bona kopano e atlehileng ea setshelo.

Screen Screen
Re theha mosebetsi oa ho romela ho GKE ntle le li-plugins, SMS kapa ngoliso. Ha re shebe ka tlas'a baki ea Jenkins

'Me joale ho tsamaisoa ka katleho ha setshelo se bokaneng

Screen Screen
Re theha mosebetsi oa ho romela ho GKE ntle le li-plugins, SMS kapa ngoliso. Ha re shebe ka tlas'a baki ea Jenkins

Ke ile ka hlokomoloha boemo boo ka boomo Ingress. Ka lebaka le le leng le bonolo: hang ha u se ue behile mosebetsi o mongata ka lebitso le fanoeng, e tla lula e sebetsa, ho sa tsotelehe hore na u etsa li-deployments tse kae ka lebitso lena. Hantle, ka kakaretso, sena se ka nqane ho sebaka sa nalane.

Sebakeng sa liqeto

Mehato eohle e kaholimo mohlomong e ka be e sa etsoa, ​​​​empa feela e kentse plugin e itseng bakeng sa Jenkins, muuulion ea bona. Empa ka mabaka a mang ha ke rate li-plugins. Be, ka nepo ho feta, ke retelehela ho bona feela ka lebaka la thoothello.

'Me ke rata ho nka sehlooho se secha bakeng sa ka. Sengoloa se kaholimo hape ke mokhoa oa ho arolelana seo ke se fumaneng ha ke ntse ke rarolla bothata bo hlalositsoeng qalong. Arolelana le bao, joalo ka eena, e seng phiri e mpe ho hang. Haeba seo ke se fumaneng se thusa bonyane motho e mong, ke tla thaba.

Source: www.habr.com

Eketsa ka tlhaloso