I timata te katoa i te wa i tono mai te kaiarahi o tetahi o o matou roopu whanaketanga ki te whakamatau i ta raatau tono hou, i mauhia i te ra i mua. I whakairihia e ahau. I muri tata ki te 20 meneti, ka tae mai he tono ki te whakahou i te tono, na te mea he mea tino tika kua taapirihia ki reira. I whakahoutia e ahau. Whai muri i etahi atu haora e rua... kaati, ka taea e koe te whakaaro he aha nga mea ka timata i muri mai...
Me whakaae ahau, he mangere ahau (kaore au i whakaae i tenei i mua atu? Kao?), me te mea ka whai waahi nga kaiarahi o te roopu ki a Jenkins, kei a tatou katoa nga CI/CD, ka whakaaro ahau: me tuku ia hei te nui o tana hiahia! I mahara ahau ki tetahi kata: hoatu he ika ki te tangata ka kai ia mo te ra kotahi; karangahia he tangata Fed ka whangai ia i tona oranga katoa. Na ka haere takaro tinihanga i runga i te mahi, ka taea ki te toha i tetahi ipu kei roto te tono o tetahi putanga kua oti te hanga ki Kuber me te whakawhiti i nga uara ki reira ENV (Ko taku koroua, he kaimätai hinengaro, he kaiako reo Ingarihi i mua, ka huri i tana maihao ki tona whare tapu, ka tino titiro mai ki ahau i muri i te panuitanga o tenei rerenga korero).
Na, i roto i tenei tuhipoka ka korero ahau ki a koe me pehea taku ako:
- Whakahouhia nga mahi i Jenkins mai i te mahi ake, mai i etahi atu mahi ranei;
- Hono atu ki te papatohu kapua (Cloud shell) mai i tetahi pona kua whakauruhia te kaihoko Jenkins;
- Tukuna te uta mahi ki a Google Kubernetes Engine.
Ko te mea pono, he ahua kino ahau. Ko te whakaaro kei a koe tetahi waahanga iti rawa o nga hanganga kei roto i te kapua Google, na reira, ko koe tana kaiwhakamahi, he pono, he putea GCP koe. Engari ehara i te mea ko te korero tenei.
Ko taku pepa tinihanga e whai ake nei. Ko taku hiahia anake ki te tuhi i nga korero penei i roto i tetahi keehi: I raru ahau, i te tuatahi kaore au i mohio me pehea te whakaoti, kaore i te rapuhia te otinga ki te google, no reira ka rapuhia e au etahi waahanga ka mutu te raru. A, i te wa kei te heke mai, ka wareware ahau ki taku mahi, kaore au e rapu i nga mea katoa ki te google i nga waahanga katoa ka whakahiatohia, ka tuhia e au nga pepa tinihanga.
Whakakape: 1. I tuhia te tuhipoka "mo ahau", mo te mahi mahi pai e kore e tono. Kei te koa ahau ki te panui i nga whiringa "he pai ake te mahi penei" i roto i nga korero.
2. Mena ka kiia he tote te waahanga tono o te tuhipoka, ka rite ki aku korero katoa o mua, he otinga tote ngoikore tenei.
Te whakahōu hihiko i nga tautuhinga mahi i Jenkins
Ka kite au i to patai: he aha te hononga o te whakahou mahi hihiri? Whakauruhia te uara o te tawhā aho ā-ringa ka haere koe!
Ka whakautu ahau: He tino mangere ahau, kaore au e pai ki te amuamu ratou: Misha, kua pakaru te tuku, kua ngaro nga mea katoa! Ka timata koe ki te titiro, a he hapa te uara o etahi tawhā whakarewatanga mahi. Na reira, pai ake ahau ki te mahi i nga mea katoa kia pai. Mena ka taea te aukati i te kaiwhakamahi ki te whakauru tika i nga raraunga ma te tuku i te rarangi o nga uara hei whiriwhiri, katahi ka whakarite au i te kowhiringa.
Ko te mahere ko tenei: ka hangaia e matou he mahi ki Jenkins, i mua i te whakarewatanga, ka taea e matou te kowhiri i tetahi putanga mai i te raarangi, ka tohua nga uara mo nga tawhā ka tukuna ki te ipu ma ENV, ka kohia te ipu ka pana ki roto i te Rehita Ipu. Na mai i reira ka whakarewahia te ipu ki te cuber as taumaha me nga tawhā kua tohua i roto i te mahi.
E kore matou e whai whakaaro ki te hanga me te whakatuu mahi ki Jenkins, kei waho tenei kaupapa. Ka whakaaro tatou kua reri te mahi. Hei whakatinana i tetahi rarangi whakahou me nga putanga, e rua nga mea e hiahiatia ana: he rarangi puna o mua me nga tau putanga whaimana me te taurangi penei Tawhā whiriwhiri i roto i te mahi. I roto i ta maatau tauira, me whakaingoatia te taurangi BUILD_VERSION, e kore matou e korero mo nga korero. Engari kia ata titiro ki te rarangi puna.
Kaore i te maha nga whiringa. E rua nga mea i mahara tonu:
- Whakamahia te API uru Mamao e tukuna ana e Jenkins ki ona kaiwhakamahi;
- Tonoa nga ihirangi o te kōpaki rokiroki mamao (i roto i ta maatau ko JFrog Artifactory tenei, ehara i te mea nui).
API uru Mamao Jenkins
E ai ki nga tikanga tino pai kua whakaritea, ka pai ake ahau ki te karo i nga whakamarama roa.
Ka tuku noa ahau i te whakamaoritanga kore utu o tetahi waahanga o te whiti tuatahi
Ka whakaratohia e Jenkins he API mo te uru atu ki te miihini-marama ki tana mahi. <…> Ka tukuna te uru mamao i roto i te ahua o te REST. Ko te tikanga karekau he waahi urunga ki nga ahuatanga katoa, engari he URL penei ".../api/", Kei hea"..." te tikanga o te ahanoa e whakamahia ai nga kaha API.
I etahi atu kupu, mena kei te waatea te mahi tohatoha e korerohia nei e matou i tenei wa http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build
, ka watea mai nga whiowhio API mo tenei mahi i http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/
I muri mai, ka whai waahi taatau ki te ahua o te whakaputanga. Kia arotahi tatou ki te XML, na te mea ka taea e te API anake te tātari i tenei keehi.
Me ngana noa ki te tiki rarangi o nga mahi katoa. Kei te aro noa matou ki te ingoa hui (ingoa whakaatu) me ona hua (hua):
http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]
I puta mai?
Inaianei me tātari noa nga oma ka mutu ki te hua Tuhinga. Me whakamahi te tautohe &whakakore a hei tawhā ka tukuna e matou te ara ki te uara kore e rite ki Tuhinga. Ae Ae. He korero toraro takirua. Ka whakakorehia e matou nga mea katoa kaore e pai ki a matou:
http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result!='SUCCESS']
Whakaahuamata o te rarangi o nga mea angitu
Ana, mo te ngahau noa, kia mohio tatou kaore te tātari i whakapohehe ia tatou (kaore nga tātari e teka!) me te whakaatu i te rarangi o nga "kaore i angitu":
http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result='SUCCESS']
Whakaahuamata o te rarangi o nga mea kaore i angitu
Rarangi o nga putanga mai i te kōpaki kei runga i te tūmau mamao
He huarahi tuarua ki te tiki rarangi o nga putanga. He pai ake ki a au i te uru atu ki te Jenkins API. Kaati, na te mea i pai te hanga o te tono, ko te tikanga he mea kapi ka tuu ki roto i te putunga i roto i te kōpaki e tika ana. Ka rite ki, he putunga ko te rokiroki taunoa o nga putanga mahi o nga tono. Pērā. Ana, me patai atu ki a ia he aha nga putanga kei roto i te rokiroki. Ka korikori, ka grep me te awk te kōpaki mamao. Mena kei te hiahia tetahi ki te oneliner, kei raro i te kaipahua.
Kotahi te whakahau raina
Kia mahara ki nga mea e rua: Ka tukuna e ahau nga taipitopito hononga ki te pane kaore au e hiahia ki nga putanga katoa mai i te kōpaki, ka tohua e au nga mea i hangaia i roto i te marama. Whakatikaina te whakahau kia rite ki o tino me o hiahia:
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[^/]+' )
Te whakarite mahi me te konae whirihora mahi i Jenkins
I kitea e matou te puna o te rarangi o nga putanga. Me whakauru inaianei te rarangi hua ki roto i te mahi. Ki ahau nei, ko te otinga maamaa ko te taapiri i tetahi taahiraa i roto i te mahi hanga tono. Ko te taahiraa ka mahia mena he "angitu" te hua.
Whakatuwheratia nga tautuhinga mahi hui ka panuku ki raro rawa. Patohia nga paatene: Tāpirihia te taahiraa hanga -> Te taahiraa here (kotahi). I nga tautuhinga taahiraa, tohua te ahuatanga Te mana hanga o naianei, whakaritea te uara Tuhinga, te mahi ka mahia ki te angitu Whakahaerehia te whakahau anga.
Na inaianei ko te waahanga ngahau. Ka penapena a Jenkins i nga whirihoranga mahi i roto i nga konae. I roto i te whakatakotoranga XML. I te ara http://путь-до-задания/config.xml
Na reira, ka taea e koe te tango i te konae whirihoranga, whakatika i te mea e tika ana ka whakahokia ki te wahi i riro mai ai.
Kia maumahara, i whakaae matou i runga ake nei ka hangaia e matou he tawhā mo te rarangi o nga putanga BUILD_VERSION?
Me tango i te konae whirihoranga ka titiro ki roto. Me whakarite noa kei te noho te tawhā me te momo e hiahiatia ana.
Whakaahuamata i raro i te kaipahua.
Kia rite te ahua o to wahanga config.xml. Engari kei te ngaro tonu nga ihirangi o te huānga whiringa
Kei te tino mohio koe? Kaati, me tuhi he tuhinga ka mahia mena ka angitu te hanga.
Ka whiwhi te tuhinga i te rarangi o nga putanga, ka tango i te konae whirihoranga, tuhia te rarangi o nga putanga ki roto ki te waahi e hiahia ana matou, katahi ka whakahoki ano. Ae. Ka tika. Tuhia he rarangi o nga putanga ki te XML ki te waahi kei reira he rarangi o nga putanga (ka noho a muri ake nei, i muri i te whakarewatanga tuatahi o te tuhinga). Kei te mohio ahau kei te kaha tonu nga kaiwhaiwhai ki nga korero o te ao. Ehara ahau i a ratou. Tāuta koa
I raro i te kaipahua, ka whakaatuhia e ahau te waehere e mahi ana i te raupapa o runga ake nei.
Tuhia he rarangi o nga putanga mai i te kōpaki i runga i te tūmau mamao ki te whirihora
#!/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
Mena he pai ki a koe te kowhiringa ki te tiki putanga mai i a Jenkins a he mangere koe penei i ahau, na kei raro i te kaipahua te waehere kotahi, engari he rarangi mai i a Jenkins:
Tuhia he rarangi o nga putanga mai i a Jenkins ki te whirihora
Kia maumahara ki tenei: ko taku ingoa huihuinga he nama raupapa me tetahi nama putanga, ka wehea e te kopirua. Na reira, ka tapahia e awk te waahanga kore. Mo koe ake, hurihia tenei rarangi kia rite ki o hiahia.
#!/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 roto i te ariā, ki te mea kua whakamatauria e koe te waehere kua tuhia i runga i nga tauira i runga ake nei, i roto i te mahi tuku me whai rarangi taka-iho me nga putanga. He rite ki te whakaahua i raro i te kaipahua.
Kua oti tika te rarangi o nga putanga
Mena i pai nga mea katoa, ka kape-whakapirihia te tuhinga ki roto Whakahaerehia te whakahau anga me te tiaki i nga huringa.
E hono ana ki te anga kapua
He kaikohi i roto i nga ipu. Ka whakamahia e matou a Ansible hei taputapu tuku tono me te kaiwhakahaere whirihoranga. No reira, ka tae mai ki te hanga ipu, e toru nga whiringa ka puta ki te hinengaro: whakauruhia a Docker ki Docker, whakauruhia a Docker ki runga miihini e mahi ana i te Ansible, hanga ipu ranei ki te papatohu kapua. I whakaae matou ki te noho wahangu mo nga monomai mo Jenkins i tenei tuhinga. Kia mahara?
I whakatau ahau: pai, na te mea ka kohia nga ipu "i waho o te pouaka" i roto i te papatohu kapua, he aha te raru? Kia ma, tika? Kei te pirangi au ki te kohi ipu Jenkins ki roto i te papatohu kapua, katahi ka whakarewahia ki roto i te cuber mai i reira. I tua atu, he maha nga waahana a Google i roto i ona hanganga, ka whai hua ki te tere o te tuku.
Hei hono atu ki te papatohu kapua, e rua nga mea e hiahiatia ana: gcloud me nga mana uru ki API Kapua Google mo te tauira VM ka mahia ano tenei hononga.
Mo te hunga e whakamahere ana ki te hono atu kaua mai i te kapua Google
Ka taea e Google te whakakore i te whakamanatanga tauwhitiwhiti i roto i ana ratonga. Ma tenei ka taea e koe te hono atu ki te papatohu ahakoa mai i te miihini kawhe, mena kei te rere *nix he papatohu ano.
Mena kei te hiahia ahau ki te korero mo tenei take i roto i te anga o tenei tuhipoka, tuhia ki roto i nga korero. Mena ka nui nga pooti, ka tuhia e au he korero mo tenei kaupapa.
Ko te huarahi ngawari ki te tuku motika ma te atanga tukutuku.
- Kati te tauira VM ka hono atu koe ki te papatohu kapua.
- Whakatuwherahia nga Taipitopito Tauira ka paato te whakatikatika.
- Kei raro rawa o te wharangi, tohua te atanga urunga tauira Te uru katoa ki nga API Kapua katoa.
Matapihi
- Tiakina o huringa ka whakarewahia te tauira.
Ka mutu te utaina o te VM, hono atu ma te SSH me te whakarite kia puta te hononga me te kore he. Whakamahia te tono:
gcloud alpha cloud-shell ssh
He penei te ahua o te hononga angitu
Hoatu ki te GKE
I te mea e tohe ana matou ki nga huarahi katoa ki te huri katoa ki te IaC (Infrastucture as a Code), ka penapenahia a matou konae docker ki Git. Ko tenei i tetahi taha. A ko te whakaurunga ki nga kubernetes e whakaahuahia ana e tetahi konae yaml, ka whakamahia anake e tenei mahi, he rite ano ki te waehere. No tera taha tenei. Ko te tikanga, ko te mahere ko tenei:
- Ka tangohia e matou nga uara o nga taurangi BUILD_VERSION a, ka taea, nga uara o nga taurangi ka tukuna ENV.
- Tangohia te dockerfile mai i Git.
- Hangaia te yaml mo te horahanga.
- Ka tukuna e matou enei konae e rua ma te scp ki te papatohu kapua.
- Ka hangaia e matou he ipu ki reira ka pana ki roto i te rehita Ipu
- Ka tukuna e matou te konae tuku kawenga ki te cuber.
Kia marama ake. Kia timata matou ki te korero mo ENV, ka whakaaro me tuku e tatou nga uara o nga tawhā e rua: PARAM1 и PARAM2. Ka taapirihia ta raatau mahi mo te whakatakotoranga, momo - Tawhā Aho.
Matapihi
Ka whakaputahia e matou he yaml me te anga whakamua ngawari paoro ki te konae. Ko te tikanga, kei roto koe i to dockerfile PARAM1 и PARAM2ko te ingoa kawenga awesomeapp, me te ipu kua kohia me te tono o te putanga kua tohua kei roto Rehita ipu i te ara gcr.io/awesomeapp/awesomeapp-$BUILD_VERSIONte wahi $BUILD_VERSION i tohua noa mai i te rarangi taka-iho.
Te rarangi roopu
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
Ko te kaihoko a Jenkins i muri i te hono ki te whakamahi gcloud alpha cloud-shell ssh kaore i te waatea te aratau tauwhitiwhiti, no reira ka tukuna atu e matou nga whakahau ki te papatohu kapua ma te whakamahi i te tawhā --whakahau.
Ka horoia e matou te kōpaki kaainga i roto i te papatohu kapua mai i te dockerfile tawhito:
gcloud alpha cloud-shell ssh --command="rm -f Dockerfile"
Whakanohoia te konae docker hou kua tangohia ki te kōpaki kaainga o te papatohu kapua ma te whakamahi i te scp:
gcloud alpha cloud-shell scp localhost:./Dockerfile cloudshell:~
Ka kohia, ka tohua, ka panaia te ipu ki te rehita Ipu:
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"
He pera ano ta matou ki te konae tuku. Kia mahara ko nga whakahau i raro nei e whakamahi ana i nga ingoa tito noa o te kahui kei reira te horahanga (awsm-cluster) me te ingoa kaupapa (whakamataku-kaupapa), kei hea te tautau.
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"
Ka whakahaerehia e matou te mahi, ka whakatuwhera i te putanga papatohu me te tumanako ka kite i te huihuinga angitu o te ipu.
Matapihi
Na ka angitu te tukunga o te ipu kua kohia
Matapihi
I ata wareware ahau ki te whakatakotoranga Ingoa. Mo tetahi take ngawari: i te wa i whakaritea e koe taumaha me te ingoa kua tohua, ka mau tonu te mahi, ahakoa te maha o nga tukunga me tenei ingoa ka mahia e koe. Ae, i te nuinga o te waa, he iti noa atu tenei i te waahi o te hitori.
Engari ko nga whakatau
Ko nga mahi katoa i runga ake nei kaore pea i mahia, engari i whakauruhia he mono mo Jenkins, to ratou muuulion. Engari mo etahi take kaore au e pai ki nga monomai. Ae, he tika ake, ka toro atu ahau ki a raatau na te pouri.
A he pai noa ahau ki te tiki kaupapa hou maku. Ko te tuhinga i runga ake nei he huarahi ki te whakapuaki i nga kitenga i mahia e au i te whakaoti rapanga i whakaahuatia i te timatanga. Tuhia ki te hunga, penei i a ia, ehara rawa i te wuruhi kino i roto i nga devops. Mena ka awhina aku kitenga i tetahi tangata, ka koa ahau.
Source: will.com