Zonse zidayamba pomwe otsogolera gulu la gulu lathu lachitukuko adatipempha kuti tiyese pulogalamu yawo yatsopano, yomwe idasungidwa dzulo lake. Ndinazilemba. Pambuyo pa mphindi pafupifupi 20, pempho linalandiridwa kuti lisinthe mafomuwo, chifukwa panali chinthu chofunikira kwambiri chomwe chidawonjezedwa pamenepo. Ndinapanganso. Pambuyo pa maola angapo ... chabwino, mutha kulingalira zomwe zidayamba kuchitika kenako ...
Ndiyenera kuvomereza, ndine waulesi (kodi sindinavomereze izi poyamba? Ayi?), Ndipo chifukwa chakuti otsogolera gulu ali ndi mwayi wopita ku Jenkins, momwe tili ndi CI / CD yonse, ndinaganiza kuti: momwe amafunira! Ndinakumbukira nthabwala: patsani munthu nsomba ndipo adzadya tsiku limodzi; muyitane munthu Wodyetsedwa ndipo adzadyetsedwa moyo wake wonse. Ndipo anapita sewera masewera pa ntchito, yomwe ingathe kuyika chidebe chokhala ndi kugwiritsa ntchito mtundu uliwonse womangidwa bwino ku Kuber ndikusamutsa chilichonse kwa icho ENV (agogo anga aamuna, a philologist, mphunzitsi wachingelezi m'mbuyomu, tsopano amatembenuzira chala chake pakachisi wake ndikundiyang'ana momveka bwino atawerenga chiganizochi).
Kotero, mu cholemba ichi ndikuuzani momwe ndinaphunzirira:
- Sinthani mwachangu ntchito ku Jenkins kuchokera kuntchito yokha kapena ku ntchito zina;
- Lumikizani kumtambo wamtambo (chipolopolo chamtambo) kuchokera ku node yokhala ndi wothandizira wa Jenkins;
- Ikani ntchito ku Google Kubernetes Engine.
M'malo mwake, ndine wosakhulupirika. Zimaganiziridwa kuti muli ndi gawo limodzi lazomangamanga mumtambo wa Google, chifukwa chake, ndinu ogwiritsa ntchito ndipo, ndithudi, muli ndi akaunti ya GCP. Koma izi sindizo zomwe kalatayi ikunena.
Ili ndi pepala langa lotsatira lachinyengo. Ndikungofuna kulemba zolemba zotere pamutu umodzi: Ndinakumana ndi vuto, poyamba sindinkadziwa momwe ndingathetsere, yankho silinapangidwe ndi google, kotero ndinayiyika m'magawo ndipo pamapeto pake ndinathetsa vutoli. Ndipo kotero kuti m'tsogolomu, ndikayiwala momwe ndinachitira, sindiyenera kubwereza google chirichonse pang'onopang'ono ndikuchiphatikiza pamodzi, ndimadzilembera ndekha mapepala onyenga.
Chodzikanira: 1. Cholembacho chinalembedwa βkwa ine ndekhaβ pa ntchitoyo chizoloΕ΅ezi chabwino sizikugwira ntchito. Ndine wokondwa kuwerenga "zikanakhala bwino kuchita izi" mu ndemanga.
2. Ngati gawo logwiritsidwa ntchito la cholembacho likuonedwa kuti ndi mchere, ndiye, monga zolemba zanga zonse zam'mbuyomu, iyi ndi yankho la mchere wofooka.
Kusintha kosintha kwa ntchito ku Jenkins
Ndikuwoneratu funso lanu: Kodi kukonzanso ntchito kwamphamvu kukugwirizana ndi chiyani? Lowetsani mtengo wa zingwe pamanja ndikuchokapo!
Ndimayankha: Ndine waulesi kwambiri, sindimakonda akamadandaula: Misha, kutumizidwa kukuwonongeka, zonse zapita! Mumayamba kuyang'ana, ndipo pali typo pamtengo wagawo loyambitsa ntchito. Chifukwa chake, ndimakonda kuchita zonse moyenera momwe ndingathere. Ngati ndi kotheka kuletsa wosuta kuti alowetse deta mwachindunji popereka m'malo mwake mndandanda wazinthu zomwe angasankhe, ndiye ndikukonza zosankhidwazo.
Dongosolo ndi ili: timapanga ntchito ku Jenkins, momwe, tisanayambe, titha kusankha mtundu kuchokera pamndandandawo, tchulani zofunikira za magawo omwe amaperekedwa ku chidebecho kudzera. ENV, kenako imasonkhanitsa chidebecho ndikuchikankhira mu Registry ya Container. Kenako kuchokera pamenepo chidebecho chimatulutsidwa mu cuber ngati ntchito ndi magawo omwe afotokozedwa mu ntchitoyo.
Sitiganizira za njira yopangira ndi kukhazikitsa ntchito ku Jenkins, izi sizili pamutu. Tidzaganiza kuti ntchitoyi yakonzeka. Kuti tigwiritse ntchito mndandanda womwe wasinthidwa ndi matembenuzidwe, timafunikira zinthu ziwiri: mndandanda wazomwe ulipo kale wokhala ndi manambala ovomerezeka amtundu woyamba komanso zosintha ngati Chosankha parameter mu ntchito. Mu chitsanzo chathu, lolani kusinthika kutchulidwe BUILD_VERSION, sitidzafotokoza mwatsatanetsatane. Koma tiyeni tione bwinobwino mndandanda wa magwero.
Palibe zosankha zambiri. Nthawi yomweyo ndinakumbukira zinthu ziwiri:
- Gwiritsani ntchito API yofikira kutali yomwe Jenkins amapereka kwa ogwiritsa ntchito;
- Funsani zomwe zili mufoda yakutali (kwa ife iyi ndi JFrog Artifactory, zomwe sizofunika).
Jenkins Remote access API
Malinga ndi mwambo wokhazikitsidwa bwino, ndingakonde kupeΕ΅a mafotokozedwe aatali.
Ndidzilola ndekha kumasulira kwaulere kwa chidutswa cha ndime yoyamba
Jenkins amapereka API yofikira kutali ndi makina ogwiritsira ntchito. <β¦> Kufikira patali kumaperekedwa mwanjira ya REST. Izi zikutanthauza kuti palibe malo amodzi olowera pazinthu zonse, koma m'malo mwake URL ngati ".../api/", ku"..." amatanthauza chinthu chomwe mphamvu za API zimagwiritsidwa ntchito.
Mwa kuyankhula kwina, ngati ntchito yotumizira yomwe tikukambayi ikupezeka http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build
, ndiye malikhweru a API a ntchitoyi akupezeka pa http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/
Kenako, tili ndi kusankha mu mawonekedwe oti tilandire zotuluka. Tiyeni tiyang'ane pa XML, popeza API imangolola kusefa pankhaniyi.
Tiyeni tingoyesa kupeza mndandanda wa ntchito zonse. Timangofuna dzina la msonkhano (dzina lowonetsa) ndi zotsatira zake (chifukwa):
http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]
Zachitika?
Tsopano tiyeni tisefe maulendo omwe amathera ndi zotsatira KUCHITA. Tiyeni tigwiritse ntchito mkangano &kupatula ndipo monga parameter tidzadutsa njira yopita ku mtengo wosafanana nawo KUCHITA. Inde Inde. Kutsutsa kawiri ndi mawu. Timapatula zonse zomwe sizikutisangalatsa:
http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result!='SUCCESS']
Chithunzi chamndandanda wa opambana
Chabwino, kuti tingosangalala, tiyeni tiwonetsetse kuti fyulutayo sinatinyenge (zosefera sizinama!) ndikuwonetsa mndandanda wa "osapambana":
http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result='SUCCESS']
Chithunzi chamndandanda wa omwe sanachite bwino
Mndandanda wamitundu kuchokera mufoda pa seva yakutali
Pali njira yachiwiri kupeza mndandanda wa Mabaibulo. Ndimakonda kuposa kupeza Jenkins API. Chabwino, chifukwa ngati ntchitoyo idamangidwa bwino, zikutanthauza kuti idapakidwa ndikuyikidwa muzosungira mufoda yoyenera. Monga, chosungira ndi chosungira chosasinthika cha mitundu yogwira ntchito. Monga. Chabwino, tiyeni timufunseni matembenuzidwe omwe ali mu yosungirako. Tidzapiringa, grep ndi awk chikwatu chakutali. Ngati wina ali ndi chidwi ndi oneliner, ndiye kuti ili pansi pa wowononga.
Lamulo la mzere umodzi
Chonde dziwani zinthu ziwiri: Ndimapereka zolumikizira pamutu ndipo sindikufuna matembenuzidwe onse kuchokera pafoda, ndikusankha okhawo omwe adapangidwa mkati mwa mwezi umodzi. Sinthani lamulolo kuti ligwirizane ndi zenizeni ndi zosowa zanu:
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[^/]+' )
Kukhazikitsa ntchito ndi fayilo yosinthira ntchito ku Jenkins
Tinapeza gwero la mndandanda wa zomasulira. Tiyeni tsopano aphatikize mndandanda wotsatira mu ntchito. Kwa ine, yankho lodziwikiratu linali kuwonjezera sitepe mu ntchito yomanga ntchito. Njira yomwe ingachitike ngati zotsatira zake zinali "kupambana".
Tsegulani zoikamo za ntchito ya msonkhano ndikusunthira mpaka pansi. Dinani pa mabatani: Onjezani sitepe yomanga -> Gawo lokhazikika (limodzi). Mu masitepe zoikamo, kusankha chikhalidwe Zomwe zilipo panopa, ikani mtengo KUCHITA, zomwe ziyenera kuchitidwa ngati zapambana Thamangani chipolopolo lamulo.
Ndipo tsopano gawo losangalatsa. Jenkins amasunga masinthidwe a ntchito m'mafayilo. Mu mtundu wa XML. Panjira http://ΠΏΡΡΡ-Π΄ΠΎ-Π·Π°Π΄Π°Π½ΠΈΡ/config.xml
Chifukwa chake, mutha kutsitsa fayilo yosinthira, kuyisintha ngati kuli kofunikira ndikuyiyika pomwe mudayipeza.
Kumbukirani, tidagwirizana pamwambapa kuti tipanga gawo la mndandanda wamitundu BUILD_VERSION?
Tiyeni titsitse fayilo yosinthira ndikuyang'ana mkati mwake. Kungoonetsetsa kuti parameter ili m'malo komanso mtundu womwe mukufuna.
Screenshot pansi spoiler.
Chidutswa chanu cha config.xml chiyenera kuwoneka chimodzimodzi. Kupatula kuti zomwe zili muzosankha zikusowabe
Mukutsimikiza? Ndizo zonse, tiyeni tilembe script yomwe idzachitike ngati kumangako kukuyenda bwino.
Zolembazo zilandila mndandanda wamitundu, kukopera fayilo yosinthira, lembani mndandanda wamitunduyo m'malo omwe tikufuna, ndikuyibwezeretsanso. Inde. Ndichoncho. Lembani mndandanda wamitundu mu XML pamalo pomwe pali mndandanda wamitundu yonse (idzakhala mtsogolomo, pambuyo poyambitsa script). Ndikudziwa kuti padziko lapansi pano pali anthu okonda mawu okhazikika. Ine sindine wawo. Chonde yikani
Pansi pa wowononga, ndimapereka code yomwe imapanga ndondomeko yomwe ili pamwambayi yonse.
Lembani mndandanda wamitundu kuchokera pafoda pa seva yakutali kupita ku 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
Ngati mukufuna mwayi wopeza matembenuzidwe kuchokera ku Jenkins ndipo ndinu waulesi ngati ine, ndiye pansi pa wowononga pali code yomweyi, koma mndandanda wochokera ku Jenkins:
Lembani mndandanda wamitundu kuchokera ku Jenkins kupita ku config
Ingokumbukirani izi: dzina langa la msonkhano lili ndi nambala yotsatizana ndi nambala yamtundu, yolekanitsidwa ndi colon. Chifukwa chake, awk amadula gawo losafunika. Kwa inu nokha, sinthani mzerewu kuti ugwirizane ndi zosowa zanu.
#!/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
Mwachidziwitso, ngati mwayesa kachidindo kolembedwa kutengera zitsanzo zomwe zili pamwambapa, ndiye kuti muntchito yotumizira muyenera kukhala ndi mndandanda wotsitsa ndi mitundu. Zili ngati mu skrini pansi pa spoiler.
Mndandanda wamabaibulo omalizidwa bwino
Ngati zonse zikuyenda bwino, koperani-matani script mu Thamangani chipolopolo lamulo ndi kusunga zosintha.
Kulumikiza ku Cloud shell
Tili ndi otolera mu makontena. Timagwiritsa ntchito Ansible ngati chida chathu choperekera mapulogalamu ndi kasinthidwe kake. Chifukwa chake, zikafika pakumanga zotengera, zosankha zitatu zimabwera m'maganizo: kukhazikitsa Docker ku Docker, kukhazikitsa Docker pamakina omwe akuyendetsa Ansible, kapena pangani zotengera mumtambo wamtambo. Tinavomera kukhala chete za mapulagini a Jenkins m'nkhaniyi. Mukukumbukira?
Ndinaganiza: chabwino, popeza zotengera "zakunja" zitha kusonkhanitsidwa mumtambo wamtambo, ndiye bwanji mukuvutikira? Khalani aukhondo, sichoncho? Ndikufuna kusonkhanitsa zotengera za Jenkins mumtambo wamtambo, ndikuziyika mu cuber kuchokera pamenepo. Kuphatikiza apo, Google ili ndi njira zolemera kwambiri mkati mwazomangamanga zake, zomwe zitha kukhala ndi phindu pa liwiro la kutumiza.
Kuti mugwirizane ndi cloud console, mukufunikira zinthu ziwiri: gcloud ndi ufulu wopeza Google Cloud API pamwambo wa VM womwe kulumikizana komweku kudzapangidwira.
Kwa iwo omwe akukonzekera kulumikizana osati kuchokera ku Google Cloud konse
Google imalola kuthekera koletsa kuvomereza kolumikizana muzinthu zake. Izi zikuthandizani kuti mulumikizane ndi kontrakitala ngakhale kuchokera pamakina a khofi, ngati ikuyenda * nix ndipo ili ndi cholumikizira chokha.
Ngati pakufunika kuti ndifotokoze nkhaniyi mwatsatanetsatane mkati mwa ndondomekoyi, lembani mu ndemanga. Ngati tipeza mavoti okwanira, ndilemba zosintha pamutuwu.
Njira yosavuta yoperekera ufulu ndi kudzera pa intaneti.
- Imitsani chitsanzo cha VM komwe mudzalumikizane ndi mtambo wamtambo.
- Tsegulani Zambiri za Instance ndikudina kukonzanso.
- Pansi penipeni pa tsamba, sankhani kukula kwachitsanzo Kufikira kwathunthu ku Cloud APIs.
MALANGI
- Sungani zosintha zanu ndikuyambitsa chitsanzo.
VM ikamaliza kutsitsa, lumikizani nayo kudzera pa SSH ndikuwonetsetsa kuti kulumikizana kukuchitika popanda cholakwika. Gwiritsani ntchito lamulo:
gcloud alpha cloud-shell ssh
Kulumikizana kopambana kumawoneka motere
Pitani ku GKE
Popeza tikuyesetsa mwanjira iliyonse kusinthiratu ku IaC (Infrastucture as Code), mafayilo athu a docker amasungidwa ku Git. Izi ndi mbali imodzi. Ndipo kutumizidwa ku kubernetes kumafotokozedwa ndi fayilo yaml, yomwe imagwiritsidwa ntchito ndi ntchitoyi yokha, yomwe imakhalanso ngati code. Izi zikuchokera mbali inayo. Mwambiri, ndikutanthauza, pulani ndi iyi:
- Timatenga ma values ββa zosinthika BUILD_VERSION ndipo, mwakufuna, zosintha zomwe zidzadutsidwe ENV.
- Tsitsani fayilo ya docker kuchokera ku Git.
- Pangani yaml kuti mutumizidwe.
- Timayika mafayilo onsewa kudzera pa scp kumtambo wamtambo.
- Timamanga chidebe pamenepo ndikuchikankhira mu registry ya Container
- Timayika fayilo yotumiza katundu ku cuber.
Tiyeni tifotokoze molunjika. Kamodzi tinayamba kulankhula za ENV, ndiye tiyerekeze kuti tikufunika kupititsa patsogolo magawo awiri: PARAM1 ΠΈ PARAM2. Timawonjezera ntchito yawo kuti atumizidwe, mtundu - Chingwe Parameter.
MALANGI
Tipanga yaml ndi njira yosavuta yolowera Tchulani ku file. Zimaganiziridwa, zachidziwikire, kuti muli nazo mu dockerfile yanu PARAM1 ΠΈ PARAM2kuti dzina la katundu lidzakhala zodabwitsaapp, ndipo chidebe chosonkhanitsidwa ndikugwiritsa ntchito mtundu womwe watchulidwawo chili mkati Container registry panjira gcr.io/awesomeapp/awesomeapp-$BUILD_VERSIONkumene $BUILD_VERSION adangosankhidwa kuchokera pamndandanda wotsikira pansi.
Mndandanda wamagulu
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 wothandizira pambuyo polumikiza pogwiritsa ntchito gcloud alpha cloud-shell ssh njira yolumikizirana palibe, chifukwa chake timatumiza malamulo kumtambo wamtambo pogwiritsa ntchito parameter -- command.
Timatsuka chikwatu chakunyumba mumtambo wamtambo kuchokera ku dockerfile yakale:
gcloud alpha cloud-shell ssh --command="rm -f Dockerfile"
Ikani dockerfile yomwe yatsitsidwa kumene mufoda yakunyumba ya cloud console pogwiritsa ntchito scp:
gcloud alpha cloud-shell scp localhost:./Dockerfile cloudshell:~
Timasonkhanitsa, kuyika ndikukankhira chidebecho ku registry ya 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"
Timachita chimodzimodzi ndi fayilo yotumiza. Chonde dziwani kuti malamulo omwe ali pansipa amagwiritsa ntchito mayina abodza a gulu lomwe kutumizidwa kumachitika (awsm-gulu) ndi dzina la polojekiti (zodabwitsa-ntchito), pomwe gululi lili.
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"
Timayendetsa ntchitoyi, tsegulani zotulutsa za console ndikuyembekeza kuwona msonkhano wopambana wa chidebecho.
MALANGI
Ndiyeno kutumizidwa bwino kwa chidebe chosonkhanitsidwa
MALANGI
Ndinanyalanyaza dala mmene zinthu zinalili Ingress. Chifukwa chimodzi chophweka: mukangoyikhazikitsa ntchito ndi dzina lopatsidwa, ikhala ikugwira ntchito, ngakhale mutakhala ndi ma deployments angati ndi dzina ili. Chabwino, kawirikawiri, izi ndizopitirira pang'ono pa mbiri yakale.
M'malo momaliza
Masitepe onse omwe ali pamwambawa mwina sakanatheka, koma adangoyika pulogalamu yowonjezera ya Jenkins, maulion awo. Koma pazifukwa zina sindimakonda mapulagini. Chabwino, ndendende, ndimapita kwa iwo chifukwa cha kusimidwa.
Ndipo ndimangokonda kunditengera mutu wina watsopano. Mawu omwe ali pamwambawa ndi njira yogawana zomwe ndidapeza ndikuthana ndi vuto lomwe lafotokozedwa poyambirira. Gawani ndi iwo omwe, monga iye, sali nkhandwe yoopsa kwambiri. Ngati zomwe ndapeza zithandiza wina, ndikhala wokondwa.
Source: www.habr.com