ืขืก ืึทืืข ืกืืึทืจืืขื ืืืขื ืื ืืึทื ืฉืึทืคึฟื ืคืืจื ืคืื ืืืื ืขืจ ืคืื ืืื ืืืขืจ ืึทื ืืืืืงืืื ื ืืืื ืืขืืขืื ืืื ืื ืฆื ืคึผืจืืืืจื ืืืืขืจ ื ืืึทืข ืึทืคึผืืึทืงืืืฉืึทื, ืืืึธืก ืืื ืืขืืืขื ืงืึทื ืืืื ื ืืื ืืขื ืืึธื ืคืจืืขืจ. ืืื ืึทืจืืึทื ืืขืฉืืงื ืขืก. ื ืื ืืขืจื 20 ืืื ืื ืืื ืืขื ืืืงืืืขื ื ืืงืฉื ืฆื ืืคืืขืืืืจื ืื ืืคืืืงืืฆืืข, ืืืืื ืืืจื ืืื ืฆืืืขืืืืื ืืขืืืืจื ื ืืืจ ื ืืืืืืข ืืื. ืืื ืืื ืืื ืืื. ื ืึธื ื ืึธื ืึท ืคึผืึธืจ ืคืื ืฉืขื ... ื ื, ืืืจ ืงืขื ืขื ืืจืขืคื ืืืึธืก ืื ืืขืืืืื ืฆื ืคึผืึทืกืืจื ืืืืึทืืขืจ ...
ืืื ืืื ืืืื ืืืื, ืืื ืืื ืืื ืฅ ืคืืื (ืืื ืืื ืืืก ื ืืฉื ืืืื ืืขืืืขื ืคืจืืขืจ? ื ืืื?), ืืื ืฆืืืื ืืขื ืืืืก ืื ืืึทื ืฉืึทืคึฟื ืคืืจื ืืึธืื ืฆืืืจืื ืฆื ืืืฉืขื ืงืื ืก, ืืื ืืืึธืก ืืืจ ืืึธืื ืึทืืข ืกื / ืกื, ืืื ืืขืืึทื ืง: ืืึธืื ืืื ืฆืขืืืืงืืขื ืืื ืืืืคืื ืขืจ ืืืื ! ืืณืืื ืืื ืืขืจืืื ื ื ืฐืืฅ: ืืื ื ืืื ื ืคืืฉ ืืื ืขืจ ืฐืขื ืขืกื ื ืืื; ืจืืคื ืึท ืืขื ืืฉ ืคืขื ืืื ืขืจ ืืืขื ืืืื ืคืขื ืึทืืข ืืืื ืืขืื. ืืื ืืขืืื ืืขื ืฉืคึผืื ืืจืืงืก ืืืืฃ ืืขืจ ืึทืจืืขื, ืืืึธืก ืืืึธืื ืืืื ืืืืืืช ืฆื ืฆืขืืืืงืืขื ืึท ืงืึทื ืืืื ืขืจ ืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืคืื ืงืืื ืืฆืืื ืืขืืืื ืืืขืจืกืืข ืืื ืงืืืขืจ ืืื ืึทืจืืืขืจืคืืจื ืงืืื ืืืึทืืืขืก ืฆื ืขืก ENV (ืืืื ืืืืืข, ืึท ืคืืืึธืืึธื, ืึทื ืขื ืืืืฉืขืจ ืืขืจืขืจ ืืื ืืขืจ ืคืึทืจืืึทื ืืขื ืืืื, ืืึธื ืืืฆื ืืขืืจืืืื ืืืื ืคืื ืืขืจ ืฆื ืืืื ืืขืืคึผื ืืื ืึธื ืงืืงื ืืืจ ืืืืขืจ ืืืืกืืจืืงืืขื ื ืึธื ืืืืขื ืขื ืืขื ืืึทืฅ).
ืึทืืื, ืืื ืืขื ืืึธื ืืื ืืืขื ืืึธืื ืืืจ ืืื ืืื ืืขืืขืจื ื:
- ืืื ืึทืืืฉ ืืขืจืืืึทื ืืืงื ืืืฉืึธืืก ืืื Jenkins ืคึฟืื ืืขืจ ืึทืจืืขื ืืื ืึธืืขืจ ืคึฟืื ืื ืืขืจืข ืืืฉืึธืืก;
- ืคืึทืจืืื ืื ืฆื ืื ืืืึธืืงื ืงืึทื ืกืึธืื (ืืืึธืืงื ืฉืึธื) ืคึฟืื ืึท ื ืึธืืข ืืื ืื Jenkins ืึทืืขื ื ืืื ืกืืึทืืืจื;
- ืฆืขืืืืงืืขื ืืืขืจืงืืึธืื ืฆื Google Kubernetes Engine.
ืืื ืคืึทืงื, ืืื ืืื, ืคืื ืงืืจืก, ืืืึทืขื ืืืง ืขืคึผืขืก ืืืืขืืึทื. ืขืก ืืื ืื ืืขื ืืืขื ืึทื ืืืจ ืืึธืื ืืืึท ืืื ืืกืืขืจ ืืืื ืคืื ืื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืืื ืื Google ืืืึธืืงื, ืืื, ืืขืจืืืขืจ, ืืืจ ืืขื ื ืืขืจ ืืึทื ืืฆืขืจ ืืื, ืคืื ืงืืจืก, ืืืจ ืืึธืื ืึท GCP ืืฉืืื. ืึธืืขืจ ืืึธืก ืืื ื ืืฉื ืืืึธืก ืืขื ืืึทืืขืจืงืื ื ืืื ืืืขืื.
ืืึธืก ืืื ืืืื ืืืืึทืืขืจ ืึธืคึผื ืึทืจื ืืืึทื. ืืื ืืืื ื ืืจ ืฉืจืืืื ืืืขืืืข ืืขืจืืช ืืื ืืืื ืคืื: ืืื ืืื ืืขืืจืืคืขื ืืื ื ืคืจืืืืขื, ืืื ืืื ืืืชืืืื ื ืืฉื ืืขืืืืืกื ืืืืืืื ืขืก ืฆื ืืืืื, ืื ืืืืืื ื ืืื ื ืืฉื ืืขืืืืื ืืขืืืืจื ืคืืจืืืง, ืืขืจืคืืจ ืืื ืืื ืขืก ืืขืืืืื ืืื ืืืื ืืื ืฆืื ืกืืฃ ืืขืืืืื ืืขื ืคืจืืืืขื. ืืื ืืื ืืื ืืขืจ ืฆืืงืื ืคื, ืืืขื ืืื ืคืืจืืขืกื ืืื ืืืื ืืื ืืื ืขืก ืืขืืื, ืืืจืฃ ืืื ื ืืฉื ื ืืืืืื ืืืขืก ืฉืืืง ืคืืจ ืฉืืืง ืืื ืขืก ืฆืืืืืฉืืขืื, ืฉืจืืื ืืื ืืื ืืืขืืืข ืืฉืขื ืฉืืฅ.
ืึธืคึผืืืืงืขื ืื ื: 1. ืื ืฆืขืื ืืื ืืขืฉืจืืื "ืคึฟืึทืจ ืืื", ืคึฟืึทืจ ืื ืจืึธืืข ืืขืกืืขืจ ืคืืจ ืืื ื ืืฉื ืฆืืืืืื. ืืื ืืื ืฆืืคืจืืื ืฆื ืืืืขื ืขื ืื "ืขืก ืืืึธืื ืืขืืืขื ืืขืกืขืจ ืฆื ืืึธื ืืึธืก" ืึธืคึผืฆืืขืก ืืื ืื ืืึทืืขืจืงืื ืืขื.
2. ืืืื ืืขืจ ืืขืืืขื ืื ืืืื ืคืื ืื ืืึธื ืืื ืืขืืืืื ืืึทืืฅ, ืืขืืึธืื, ืืื ืึทืืข ืืืื ืคืจืืขืจืืืงื ืืขืจืืช, ืืึธืก ืืื ืึท ืฉืืืึทื ืืึทืืฅ ืืืืืื ื.
ืืื ืึทืืืฉ ืึทืคึผืืืืืื ื ืึทืจืืขื ืกืขืืืื ืืก ืืื Jenkins
ืืื ืคืึธืจืืืกืืึธืื ืืืื ืงืฉืื: ืืืึธืก ืืื ืืื ืึทืืืฉ ืึทืจืืขื ืึทืคึผืืืืืื ื ืฆื ืืึธื ืืื ืืื? ืึทืจืืึทื ืื ืืืขืจื ืคืื ืื ืฉืืจืืงื ืคึผืึทืจืึทืืขืืขืจ ืืึทื ืืืึทืื ืืื ืึทืืืขืง!
ืืื ืขื ืืคึฟืขืจ: ืืื ืืื ืืึทืงืข ืคืืื, ืืื ืืึธื ื ืื ืืื ืืืขื ืืื ืืึทืงืืึธืื ืืื: ืืืฉืึท, ืื ืืืคึผืืืืืึทื ื ืืื ืงืจืึทืฉื, ืึทืืฅ ืืื ื ืืืึธ! ืืืจ ืึธื ืืืื ืงืืงื, ืืื ืขืก ืืื ืึท ืืืคึผืึธ ืืื ืื ืืืขืจื ืคืื ืขืืืขืืข ืึทืจืืขื ืงืึทืืขืจ ืคึผืึทืจืึทืืขืืขืจ. ืืขืจืืืขืจ, ืืื ืืขืกืขืจ ืฆื ืืึธื ืึทืืฅ ืืื ืืคืืฉืึทื ืืื ืืื ืืขืืืขื. ืืืื ืขืก ืืื ืืขืืืขื ืฆื ืคืึทืจืืืึทืื ืื ืืึทื ืืฆืขืจ ืคืื ืึทืจืืึทื ืืึทืื ืืืืึทื ืืืจื ืืขืื ืึทื ืฉืืึธื ืึท ืจืฉืืื ืคืื ืืืึทืืืขืก ืฆื ืงืืืึทืื ืคืื, ืืื ืึธืจืืึทื ืืืืจื ืื ืกืขืืขืงืฆืืข.
ืืขืจ ืคึผืืึทื ืืื ืืึธืก: ืืืจ ืืึทืื ืึท ืึทืจืืขื ืืื Jenkins, ืืื ืืืึธืก, ืืืืืขืจ ืืึธื ืืฉืื ื, ืืืจ ืงืขื ืืืืกืงืืืึทืื ืึท ืืืขืจืกืืข ืคืื โโโโืืขืจ ืจืฉืืื, ืกืคึผืขืฆืืคืืฆืืจื ืืืึทืืืขืก ืคึฟืึทืจ ืคึผืึทืจืึทืืขืืขืจืก ืืืจืืืขืืื ืืขื ืฆื ืืขื ืงืึทื ืืืื ืขืจ ืืืจื ENV, ืืขืืึธืื ืขืก ืงืึทืืขืงืฅ ืืขื ืงืึทื ืืืื ืขืจ ืืื ืคึผืืฉืื ืขืก ืืื ืื ืงืึทื ืืืื ืขืจ ืจืขืืืกืืจื. ืืขืจื ืึธื ืืขืจ ืงืึทื ืืืื ืขืจ ืืื ืืึธื ืืฉื ืืื ืงืืืขืจ ืืื ืืืขืจืงืืึธืื ืืื ืื ืคึผืึทืจืึทืืขืืขืจืก ืกืคึผืขืกืืคืืขื ืืื ืื ืึทืจืืขื.
ืืืจ ืืืขืื ื ืืฉื ืืึทืืจืึทืืื ืืขื ืคึผืจืึธืฆืขืก ืคืื ืงืจืืืืืื ื ืืื ืืึทืฉืืขืืืงื ืึท ืึทืจืืขื ืืื Jenkins, ืืึธืก ืืื ืึทืืืขืง-ืืขืืข. ืืืจ ืืืขืื ืืืขืจื ืขืืขื ืึทื ืื ืึทืจืืขื ืืื ืืจืืื. ืฆื ืื ืกืืจืืืขื ื ืึท ืืขืจืืืึทื ืืืงื ืจืฉืืื ืืื ืืืขืจืกืืขืก, ืืืจ ืืึทืจืคึฟื ืฆืืืื ืืื ืื: ืึท ืืืืืกืืื ื ืืงืืจ ืจืฉืืื ืืื ืึท ืคึผืจืืึธืจื ืืืืืืง ืืืขืจืกืืข ื ืืืขืจื ืืื ืึท ืืืึทืืขืืืืืง ืืื ืืจืืจื ืคึผืึทืจืึทืืขืืขืจ ืืื ืืขืจ ืึทืจืืขื. ืืื ืืื ืืืขืจ ืืืึทืฉืคึผืื, ืืึธืื ืื ืืืึทืืขืืืืืง ืืืื ืืขืืืืกื BUILD_VERSION, ืื ืจ ืฐืขื ื ืืขืจืืืฃ ื ืืฉ ื ืคืืจืฉืืฒื . ืึธืืขืจ ืืึธืืืจ ื ืขืืขื ืึท ื ืขืขื ืืขืจ ืงืืง ืืื ืื ืืงืืจ ืจืฉืืื.
ืขืก ืืขื ืขื ื ืืฉื ืึทืืื ืคืืืข ืึธืคึผืฆืืขืก. ืฆืืืื ืืืื ืืขื ืขื ืืื ืืขืงืืืขื ืืื ืืืื ืื ื:
- ื ืืฆื ืื ืจืืืึธืื ืึทืงืกืขืก ืึทืคึผื ืึทื Jenkins ืึธืคืคืขืจืก ืฆื ืืืื ืืืืขืจื;
- ืืขืื ืื ืืื ืืึทืื ืคืื ืื ืืืืึทื ืจืืคึผืึทืืึทืืึธืจื ืืขืงืข (ืืื ืืื ืืืขืจ ืคืึทื ืืึธืก ืืื JFrog Artifactory, ืืืึธืก ืืื ื ืืฉื ืืืืืืืง).
Jenkins ืจืืืึธืื ืึทืงืกืขืก API
ืืืื ืืขืจ ืืขืืจืื ืืขืืข ืืืืกืืขืฆืืืื ืืข ืืจืืืืฆืืข ืืืืื ืืื ืืขืกืขืจ ืืขืืืืื ืืืืกืืืืื ืืื ืืข ืขืจืงืืขืจืื ืืขื.
ืื ื ืฐืข ื ืื ื ืืขืจืืืื ื ื ื ืจ ื ืคืจืฒืข ืจ ืืืืขืจืืขืฆืื ื ืคื ื ื ืฉืืืง ื ืคื ื ืขืจืฉื ื ืคืืจืืืจืืฃ
Jenkins ืืื ืึทื ืึทืคึผื ืคึฟืึทืจ ืืืืึทื ืืึทืฉืื ืืืื ืขืืืืืง ืึทืงืกืขืก ืฆื ืืืื ืคืึทื ืืงืฉืึทื ืึทืืืื. <...> ืืืืึทื ืึทืงืกืขืก ืืื ืืขืคึฟืื ื ืืื ืึท REST-ืืื ืกืืื. ืืึธืก ืืืื ื ืึทื ืขืก ืืื ืงืืื ืืืื ืคึผืึธืืืฆืืข ืคืื ื ืฆื ืึทืืข ืคึฟืขืึดืงืืืื, ืึธืืขืจ ืึทื ืฉืืึธื ืึท URL ืืื ".../ืึทืคึผื/", ืืืื "..." ืืืื ืื ืืืืคืขืฅ ืฆื ืืืึธืก ืื API ืงืืืคึผืึทืืืืึทืืื ืืขื ืขื ืืขืืืขื ืื.
ืืื ืื ืืขืจืข ืืืขืจืืขืจ, ืืืื ืื ืืืคึผืืืืืึทื ื ืึทืจืืขื ืืืึธืก ืืืจ ืืืฆื ืจืขืื ืืืขืื ืืื ืื ืืืฆื ืืื http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build
, ืืขืืึธืื ืื ืึทืคึผื ืืืืืกืึทืื ืคึฟืึทืจ ืืขื ืึทืจืืขื ืืขื ืขื ืื ืืืฆื ืืื http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/
ืืืืึทืืขืจ, ืืืจ ืืึธืื ืึท ืืจืืจื ืืื ืืืึธืก ืคืึธืจืขื ืฆื ืืึทืงืืืขื ืื ืจืขืืืืืึทื. ืืึธืืืจ ืคืึธืงืืก ืืืืฃ XML, ืืืืึทื ืื API ืืืืื ืึทืืึทืื ืคึฟืืืืจืืจืื ื ืืื ืืขื ืคืึทื.
ืืึธืืืจ ื ืึธืจ ืคึผืจืืืืจื ืฆื ืืึทืงืืืขื ืึท ืจืฉืืื ืคืื ืึทืืข ืึทืจืืขื ืืืืคื. ืืืจ ืืขื ืขื ืืืืื ืืื ืืขืจืขืกืืจื ืืื ืื ืคึฟืึทืจืืึทืืืื ื ื ืึธืืขื (displayName) ืืื ืืืึทื ืจืขืืืืืึทื (ืืึทืืืขืก):
http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]
ืืื ืขืก ืึทืจืืขื ืืืืก?
ืืืฆื ืืึธืื ืก ืคืืืืขืจ ืืืืื ืื ืจืึทื ื ืึทื ืกืืฃ ืึทืจืืืฃ ืืื ืื ืจืขืืืืืึทื ืืฆืืื. ืืึธืืืจ ื ืืฆื ืืขื ืึทืจืืืืขื ื &ืืืกืฉืืืกื ืืื ืืืก ืคืืจืืืขืืขืจ ืืืขืื ืืืจ ืขืก ืืืืขืจืืขืื ืืขื ืืืขื ืฆื ื ืืืขืจื ื ืืฉื ืืืืื ืืฆืืื. ืื ืื. ื ืืึธืคึผื ื ืขืืึทืืืื ืืื ืึท ืืขืจืงืืขืจืื ื. ืืืจ ืืืกืฉืืืกื ืึทืืฅ ืืืึธืก ืืื ื ืืฉื ืืื ืืขืจืขืกืืจื ืืื ืื:
http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result!='SUCCESS']
ืกืงืจืขืขื ืฉืึธื ืคืื ืืขืจ ืจืฉืืื ืคืื ืืฆืืื
ื ื, ื ืึธืจ ืคึฟืึทืจ ืฉืคึผืึทืก, ืืึธืื ืืื ืื ืืึทืื ืืืืขืจ ืึทื ืื ืคืืืืขืจ ืืื ื ืืฉื ืึธืคึผื ืึทืจื ืืื ืื (ืคืืืืขืจืก ืงืืื ืืึธื ืืืื!) ืืื ืืืืึทืื ืึท ืจืฉืืื ืคืื "ื ืื ืืขืจืึธืื" ืึธื ืขืก:
http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result='SUCCESS']
ืกืงืจืขืขื ืฉืึธื ืคืื ืืขืจ ืจืฉืืื ืคืื ื ืื-ืืขืจืึธืื ืึธื ืขืก
ืจืฉืืื ืคืื ืืืขืจืกืืขืก ืคืื ืึท ืืขืงืข ืืืืฃ ืึท ืืืืึทื ืกืขืจืืืขืจ
ืขืก ืืื ืึท ืฆืืืืื ืืืขื ืฆื ืืึทืงืืืขื ืึท ืจืฉืืื ืคืื ืืืขืจืกืืขืก. ืืื ืืื ืขืก ืืคืืื ืืขืจ ืืื ืึทืงืกืขืก ืื Jenkins API. ื ื, ืืืืึทื ืืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืืฆืืื ืืขืืืื, ืขืก ืืืื ืึทื ืขืก ืืื ืืขืืืขื ืคึผืึทืงืืืืฉื ืืื ืืขืฉืืขืื ืืื ืื ืจืืคึผืึทืืึทืืึธืจื ืืื ืื ืฆืื ืขืืขื ืืขืงืข. ืืื, ืึท ืจืืคึผืึทืืึทืืึธืจื ืืื ืื ืคืขืืืงืืึทื ืกืืึธืจืืืืฉ ืคืื ืืจืืขืื ืืืขืจืกืืขืก ืคืื ืึทืคึผืืึทืงืืืฉืึทื ื. ืืื. ื ื, ืืึธืื ืืื ืื ืคืจืขืื ืืื ืืืึธืก ืืืขืจืกืืขืก ืืขื ืขื ืืื ืกืืึธืจืืืืฉ. ืืืจ ืืืขืื ืงืขืจื, grep ืืื awk ืื ืืืืึทื ืืขืงืข. ืืืื ืืืขืจ ืขืก ืื ืืื ืืื ืืขืจืขืกืืจื ืืื ืื ืึธื ืขืืื ืขืจ, ืขืก ืืื ืืื ืืขืจ ืื ืกืคึผืืืืขืจ.
ืืืื ืฉืืจื ืืึทืคึฟืขื
ืืืืข ืืึธื ืฆืืืื ืืื ืื: ืืื ืคืึธืจื ืื ืงืฉืจ ืืขืืึทืืืก ืืื ืื ืืขืืขืจ ืืื ืืื ืืึธื ื ืื ืืึทืจืคึฟื ืึทืืข ืื ืืืขืจืกืืขืก ืคืื ืืขืจ ืืขืงืข, ืืื ืืื ืืืืกืงืืืึทืื ืืืืื ืื ืืืึธืก ืืขื ืขื ืืืฉืืคื ืืื ืึท ืืืืฉ. ืจืขืืึทืืืจื ืื ืืึทืคึฟืขื ืฆื ืคึผืึทืกื ืืืื ืจืืึทืืึทืืื ืืื ืืึทืจืฃ:
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[^/]+' )
ืืึทืฉืืขืืืงื ืืืฉืึธืืก ืืื ืึทืจืืขื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืข ืืื Jenkins
ืืืจ ืคืืืืขืจื ืืืืก ืื ืืงืืจ ืคืื ืืขืจ ืจืฉืืื ืคืื ืืืขืจืกืืขืก. ืืื ืก ืืืฆื ืื ืงืึธืจืคึผืขืจืืื ืื ืจืืืึทืืืื ื ืจืฉืืื ืืื ืื ืึทืจืืขื. ืคึฟืึทืจ ืืืจ, ืื ืงืืึธืจ ืืื ืืขืจ ืืึธื ืืืืืื ื ืืื ืืขืืืขื ืฆื ืืืืื ืึท ืฉืจืื ืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืืืขื ืึทืจืืขื. ืืขืจ ืฉืจืื ืืืึธืก ืืืึธืื ืืืื ืขืงืกืึทืงืืืืึทื ืืืื ืืขืจ ืจืขืืืืืึทื ืืื ืืขืืืขื "ืืฆืืื".
ืขืคึฟืขื ืขื ืื ืกืขืืืื ืืก ืคึฟืึทืจ ืื ืคึฟืึทืจืืึทืืืื ื ืึทืจืืขื ืืื ืืขืืืืข ืฆื ืื ืื ืึธ. ืืจืืงื ืืืืฃ ืื ืงื ืขืคึผืืขื: ืืืื ืืืืขื ืฉืจืื -> ืงืึทื ืืืฉืึทื ืึทื ืฉืจืื (ืืืื). ืืื ืื ืฉืจืื ืกืขืืืื ืืก, ืกืขืืขืงืืืจื ืืขื ืฆืืฉืืึทื ื ืงืจืึทื ื ืืืืขื ืกืืึทืืืก, ืฉืืขืื ืื ืืืขืจื ืืฆืืื, ืืขืจ ืงืึทืืฃ ืฆื ืืืื ืืืจืืืขืงืึธืื ืืืื ืืขืจืึธืื ืืืืคื ืฉืึธื ืืึทืคึฟืขื.
ืืื ืืืฆื ืืขืจ ืฉืคึผืึทืก ืืืื. Jenkins ืกืืึธืจื ืึทืจืืขื ืงืึทื ืคืืืืขืจืืืฉืึทื ื ืืื ืืขืงืขืก. ืืื ืงืกืื ืคึฟืึธืจืืึทื. ืฆืืืืืขื ืืขื ืืืขื http://ะฟััั-ะดะพ-ะทะฐะดะฐะฝะธั/config.xml
ืึทืงืงืึธืจืืื ืืื, ืืืจ ืงืขื ืขื ืืจืืคืงืืคืืข ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืข, ืจืขืืึทืืืจื ืขืก ืืื ื ืืืืืง ืืื ืฉืืขืื ืขืก ืฆืืจืืง ืืื ืืืจ ืืึธื ืขืก.
ืืขืืขื ืงื, ืืืจ ืืึธืื ืืกืืื ืืืืื ืึทื ืืืจ ืืืขืื ืืึทืื ืึท ืคึผืึทืจืึทืืขืืขืจ ืคึฟืึทืจ ืืขืจ ืจืฉืืื ืคืื ืืืขืจืกืืขืก BUILD_VERSION?
ืืึธืืืจ ืืจืืคืงืืคืืข ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืข ืืื ื ืขืืขื ืึท ืงืืง ืืื ืขืก. ื ืึธืจ ืฆื ืืึทืื ืืืืขืจ ืึทื ืืขืจ ืคึผืึทืจืึทืืขืืขืจ ืืื ืืื ืคึผืืึทืฅ ืืื ืคืื ืื ืืขืืขืื ืืืคึผ.
ืกืงืจืขืขื ืฉืึธื ืืื ืืขืจ ืกืคึผืืืืขืจ.
ืืืื config.xml ืคืจืึทืืืขื ื ืืึธื ืงืืงื ืื ืืขืืืข. ืืืฅ ืึทื ืืขืจ ืืื ืืึทืื ืคืื ืื ืืจืืจื ืขืืขืืขื ื ืืื ื ืึธื ืคืขืื ืืืง
ืืืกืื ืืืืขืจ? ืึทื ืก ืขืก, ืืึธืื ืืื ืื ืฉืจืืึทืื ืึท ืฉืจืืคื ืืืึธืก ืืืขื ืืืื ืขืงืกืึทืงืืืืึทื ืืืื ืื ืืืืขื ืืื ืืขืจืึธืื.
ืืขืจ ืฉืจืืคื ืืืขื ืืึทืงืืืขื ืึท ืจืฉืืื ืคืื ืืืขืจืกืืขืก, ืืจืืคืงืืคืืข ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืข, ืฉืจืืึทืื ืื ืจืฉืืื ืคืื ืืืขืจืกืืขืก ืืื ืขืก ืืื ืืขื ืึธืจื ืืืึธืก ืืืจ ืืึทืจืคึฟื, ืืื ืฉืืขืื ืขืก ืฆืืจืืง. ืื. ืืืก ืืื ืจืืืืื. ืฉืจืืื ืึท ืจืฉืืื ืคืื ืืืขืจืกืืขืก ืืื ืงืกืื ืืื ืืขื ืึธืจื ืืื ืขืก ืืื ืฉืืื ืึท ืจืฉืืื ืคืื ืืืขืจืกืืขืก (ืืืขื ืืืื ืืื ืืขืจ ืฆืืงืื ืคึฟื, ื ืึธื ืืขืจ ืขืจืฉืืขืจ ืงืึทืืขืจ ืคืื ืื ืฉืจืืคื). ืืื ืืืืกื ืขืก ืืขื ืขื ื ืึธื ืฆืึธืจื ืืืง ืคืึทื ืก ืคืื ืจืขืืืืขืจ ืืืืกืืจืืงื ืืื ืืขืจ ืืืขืื. ืืื ืืขืืขืจ ื ืืฉื ืฆื ืืื. ืืืืข ืื ืกืืึทืืืจื
ืืื ืืขืจ ืื ืกืคึผืืืืขืจ, ืืื ืคืึธืจืฉืืขืื ืื ืงืึธื ืืืึธืก ืคึผืขืจืคืึธืจืื ืื ืืืืื ืกืืงืืืึทื ืก ืืื ืืืื ืื ืืืืขืจืืึทื ื.
ืฉืจืืื ืึท ืจืฉืืื ืคืื ืืืขืจืกืืขืก ืคืื ืึท ืืขืงืข ืืืืฃ ืื ืืืืึทื ืกืขืจืืืขืจ ืฆื ืื ืงืึธื ืคืื
#!/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
ืืืื ืืืจ ืืขืกืขืจ ืืืขืื ืื ืึธืคึผืฆืืข ืฆื ืืึทืงืืืขื ืืืขืจืกืืขืก ืคืื Jenkins ืืื ืืืจ ืืขื ื ืืื ืคืืื ืืื ืืืจ, ืืื ืืขืจ ืื ืกืคึผืืืืขืจ ืืื ืืขืจ ืืขืืืืงืขืจ ืงืึธื, ืึธืืขืจ ืึท ืจืฉืืื ืคืื Jenkins:
ืฉืจืืื ืึท ืจืฉืืื ืคืื ืืืขืจืกืืขืก ืคืื Jenkins ืฆื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื
ื ืึธืจ ืืึทืืื ืืขื ืืื ืืืึทืกื: ืืืื ืคึฟืึทืจืืึทืืืื ื ื ืึธืืขื ืืืฉืืืื ืคืื ืึท ืกืืงืืืึทื ืก ื ืืืขืจ ืืื ืึท ืืืขืจืกืืข ื ืืืขืจ, ืืคืืขืฉืืืื ืืืจื ืึท ืฆืืืืืคึผืื ืื. ืึทืงืงืึธืจืืื ืืื, ืึทืืืง ืงืึทืฅ ืึทืืืขืง ืื ืืื ืืืืืง ืืืื. ืคึฟืึทืจ ืืื, ืืืืฉื ืืขื ืฉืืจื ืฆื ืืืื ืืืืขืจืคืขื ืืฉื.
#!/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
ืืื ืืขืึธืจืืข, ืืืื ืืืจ ืืึธื ืืขืกืืขื ืื ืงืึธื ืืขืฉืจืืื ืืืืืจื ืืืืฃ ืื ืืืืฉืคืืื ืืืืื, ืืื ืื ืืืคึผืืืืืึทื ื ืึทืจืืขื ืืืจ ืืึธื ืฉืืื ืืึธืื ืึท ืคืึทื-ืึทืจืึธืคึผ ืจืฉืืื ืืื ืืืขืจืกืืขืก. ืขืก ืืื ืืื ืืื ืื ืกืงืจืขืขื ืฉืึธื ืืื ืืขืจ ืื ืกืคึผืืืืขืจ.
ืจืืืืืง ืืขืขื ืืืงื ืจืฉืืื ืคืื ืืืขืจืกืืขืก
ืืืื ืึทืืฅ ืืขืืจืืขื, ื ืึธืืืึทืื ืืื ืคึผืึทืคึผ ืื ืฉืจืืคื ืืื ืืืืคื ืฉืึธื ืืึทืคึฟืขื ืืื ืจืึทืืขืืืขื ืขื ืืขืจืื ืืขื.
ืงืึทื ืขืงืืื ื ืฆื ืงืืึธืื ืฉืึธื
ืืืจ ืืึธืื ืงืึทืืขืงืืขืจื ืืื ืงืึทื ืืืื ืขืจื. ืืืจ ื ืืฆื Ansible ืืื ืืื ืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื ืขืงืกืคึผืจืขืก ืืขืฆืืึทื ืืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืคืึทืจืืืึทืืืขืจ. ืึทืงืงืึธืจืืื ืืื, ืืืขื ืขืก ืงืืื ืฆื ืืืืขื ืงืึทื ืืืื ืขืจื, ืืจืื ืึธืคึผืฆืืขืก ืงืืืขื ืฆื ืืืื ืื ื: ืื ืกืืึทืืืจื ืืึธืงืงืขืจ ืืื ืืึธืงืงืขืจ, ืื ืกืืึทืืืจื ืืึธืงืงืขืจ ืืืืฃ ืึท ืืึทืฉืื ืืื ืึทื ืกืืืืข, ืึธืืขืจ ืืืืขื ืงืึทื ืืืื ืขืจื ืืื ืึท ืืืึธืืงื ืงืึทื ืกืึธืื. ืืืจ ืืึธืื ืืกืืื ืืขืืืขื ืฆื ืืืืืื ืฉืืื ืืืขืื ืคึผืืืืื ืก ืคึฟืึทืจ Jenkins ืืื ืืขื ืึทืจืืืงื. ืืขืืขื ืงื ?
ืืื ืืึทืฉืืึธืกื: ื ื, ืืื ื ืงืึทื ืืืื ืขืจื "ืืืืก ืื ืงืขืกืื" ืงืขื ืขื ืืืื ืืขืืืืื ืืื ืื ืืืึธืืงื ืงืึทื ืกืึธืื, ืืขืืึธืื ืืืึธืก ืึทืจื? ืืึทืืื ืขืก ืจืืื, ืจืขืื? ืืื ืืืืื ืฆื ืืึทืืืขื Jenkins ืงืึทื ืืืื ืขืจื ืืื ืื ืืืึธืืงื ืงืึทื ืกืึธืื, ืืื ืืึทื ืงืึทืืขืจ ืืื ืืื ืื ืงืืืขืจ ืคึฟืื ืืึธืจื. ืืขืจืฆื, Google ืืื ืืืืขืจ ืจืืึทื ืืฉืึทื ืึทืื ืืื ืืืึทื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ, ืืืึธืก ืืืขื ืืึธืื ืึท ืืืืืืืืืง ืืืืจืงืื ื ืืืืฃ ืื ืืืืงืืึทื ืคืื ืืืคึผืืืืืึทื ื.
ืฆื ืคืึทืจืืื ืื ืฆื ืื ืืืึธืืงื ืงืึทื ืกืึธืื, ืืืจ ืืึทืจืคึฟื ืฆืืืื ืืื ืื: gcloud ืืื ืึทืงืกืขืก ืจืขืื ืฆื Google Cloud API ืคึฟืึทืจ ืื VM ืืืึทืฉืคึผืื ืืื ืืืึธืก ืืขืจ ืืขืืืืงืขืจ ืงืฉืจ ืืืขื ืืืื ืืขืืืื.
ืคึฟืึทืจ ืื ืืืืก ืคึผืืึทื ืฆื ืคืึทืจืืื ืื ื ืืฉื ืคึฟืื Google ืืืึธืืงื
Google ืึทืืึทืื ืื ืืขืืืขืืงืืื ืคืื ืืืกืืืืึทื ืื ืืขืจืึทืงืืืื ืืขืจืืืืืขื ืืฉ ืืื ืืืึทื ืืึทืืื ืื ืืก. ืืึธืก ืืืขื ืืึธืื ืืืจ ืฆื ืคืึทืจืืื ืื ืฆื ืื ืงืึทื ืกืึธืื ืืคืืื ืคึฟืื ืึท ืงืึทืืืข ืืึทืฉืื, ืืืื ืขืก ืืื ืคืืืกื ืืืง * ื ืืงืก ืืื ืืื ืึท ืงืึทื ืกืึธืื ืืื.
ืืืื ืขืก ืืื ืึท ื ืืื ืคึฟืึทืจ ืืืจ ืฆื ืืขืงื ืืขื ืึทืจืืืกืืขืื ืืื ืืขืจ ืืขืืึทื ืืื ืื ืคืจืืืืืืขืจืง ืคืื ืืขื ืืึธื, ืฉืจืืึทืื ืืื ืื ืืึทืืขืจืงืื ืืขื. ืืืื ืืืจ ืืึทืงืืืขื ืืขื ืื ืืืึธืืฅ, ืืื ืืืขื ืฉืจืืึทืื ืึท ืืขืจืืืึทื ืืืงื ืืืืฃ ืืขื ืืขืืข.
ืื ืืืืึทืกื ืืืขื ืฆื ืืขืื ืจืขืื ืืื ืืืจื ืื ืืืขื ืฆืืืื ื.
- ืืึทืืื ืื VM ืืืึทืฉืคึผืื ืคึฟืื ืืืึธืก ืืืจ ืืืขื ืืขืจื ืึธื ืคืึทืจืืื ืื ืฆื ืื ืืืึธืืงื ืงืึทื ืกืึธืื.
- ืขืคึฟืขื ืขื ืื ืกืืึทื ืกืข ืืขืืึทืืืก ืืื ืืื ืืืืฉื.
- ืืื ืื ืื ืึธ ืคืื ืื ืืืึทื, ืกืขืืขืงืืืจื ืืขื ืืืึทืฉืคึผืื ืึทืงืกืขืก ืคืึทืจื ืขื ืืึทื ืฅ ืึทืงืกืขืก ืฆื ืึทืืข ืงืืึธืื ืึทืคึผืืก.
ืกืงืจืขืขื ืฉืึธื
- ืืื ืืืื ืขื ืืขืจืื ืืขื ืืื ืงืึทืืขืจ ืืขื ืืืึทืฉืคึผืื.
ืึทืืึธื ืื VM ืืื ืคืึทืจืืืง ืืึธืืืื ื, ืคืึทืจืืื ืื ืฆื ืขืก ืืืจื SSH ืืื ืืึทืื ืืืืขืจ ืึทื ืื ืงืฉืจ ืึทืงืขืจื ืึธื ืึท ืืขืืช. ื ืืฆื ืืขื ืืึทืคึฟืขื:
gcloud alpha cloud-shell ssh
ื ืืขืจืึธืื ืงืฉืจ ืงืืงื ืขืคึผืขืก ืืื ืืึธืก
ืฆืขืืืืงืืขื ืฆื GKE
ืืื ื ืืืจ ืฉืืจืขืื ืืื ืึทืืข ืืขืืืขื ืืืขื ืฆื ืืึธืจ ืืึทืฉืืืืขื ืฆื ืืึทืง (ืื ืคืจืึทืกืืงืืืจืข ืืื ืึท ืงืึธื), ืืื ืืืขืจ ืืึธืงืงืขืจ ืืขืงืขืก ืืขื ืขื ืกืืึธืจื ืืื ืืื. ืืืก ืืื ืคืื ืืืื ืืืื. ืืื ืืืคึผืืืืืึทื ื ืืื ืงืืืขืจื ืขืืขืก ืืื ืืืกืงืจืืืื ืืืจื ืึท ืืึทืื ืืขืงืข, ืืืึธืก ืืื ืืขื ืืฆื ืืืืื ืืืจื ืืขื ืึทืจืืขื, ืืืึธืก ืืื ืืืื ืืื ืงืึธื. ืืืก ืืื ืคืื ืื ืื ืืขืจืข ืืืื. ืืื ืึทืืืขืืืื, ืืื ืืืื ืขื, ืืขืจ ืคึผืืึทื ืืื ืืึธืก:
- ืืืจ ื ืขืืขื ืื ืืืึทืืืขืก ืคืื ืื ืืืขืจืืึทืืึทืื BUILD_VERSION ืืื, ืึธืคึผืืืึธื ืึทืืื, ืื ืืืึทืืืขืก ืคืื ืื ืืืขืจืืึทืืึทืื ืืืึธืก ืืืขื ืืืื ืืืจืืืขืืื ืืขื ENV.
- ืืจืืคืงืืคืืข ืื ืืึธืงืงืขืจ ืืขืงืข ืคึฟืื Git.
- ืืืฉืขื ืขืจืืื ืืึทืื ืคึฟืึทืจ ืืืคึผืืืืืึทื ื.
- ืืืจ ืืคึผืืึธืึทื ืืืืืข ืื ืืขืงืขืก ืืืจื ืกืงืคึผ ืฆื ืื ืืืึธืืงื ืงืึทื ืกืึธืื.
- ืืืจ ืืืืขื ืึท ืงืึทื ืืืื ืขืจ ืืึธืจื ืืื ืฉืืืคึผื ืขืก ืืื ืื ืงืึทื ืืืื ืขืจ ืจืขืืืกืืจื
- ืืืจ ืฆืืืืืื ืื ืืึทืกืข ืืืคึผืืืืืึทื ื ืืขืงืข ืฆื ืื ืงืืืขืจ.
ืืื ืก ืืืื ืืขืจ ืกืคึผืขืฆืืคืืฉ. ืึทืืึธื ืืืจ ืื ืืขืืืืื ืฆื ืจืขืื ืืืขืื ENV, ืจืขืื ืืืจ ืืึทืจืคึฟื ืฆื ืคืึธืจื ืื ืืืึทืืืขืก ืคืื ืฆืืืื ืคึผืึทืจืึทืืขืืขืจืก: PARAM1 ะธ PARAM2. ืืืจ ืืืืื ืืืืขืจ ืึทืจืืขื ืคึฟืึทืจ ืืืคึผืืืืืึทื ื, ืืืคึผ - ืฉืืจืืงื ืคึผืึทืจืึทืืขืืขืจ.
ืกืงืจืขืขื ืฉืึธื
ืืืจ ืืืขืื ืืืฉืขื ืขืจืืื ืืึทืื ืืื ืึท ืคึผืฉืื ืจืืืขืจืขืงืฉืึทื ืคืขืื ืฆื ืืขืงืข. ืขืก ืืื ืื ืืขื ืืืขื, ืคืื ืงืืจืก, ืึทื ืืืจ ืืึธืื ืืื ืืืื ืืึธืงืขืจ ืืขืงืข PARAM1 ะธ PARAM2ืึทื ืื ืืึทืกืข ื ืึธืืขื ืืืขื ืืืื ืึธืกืึทื ืึทืคึผ, ืืื ืื ืึทืกืขืืืึทืื ืงืึทื ืืืื ืขืจ ืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืคืื ืื ืกืคึผืขืกืืคืืขื ืืืขืจืกืืข ืืืื ืืื ืงืึทื ืืืื ืขืจ ืจืขืืืกืืจื ืืืืฃ ืื ืืืขื gcr.io/awesomeapp/awesomeapp-$BUILD_VERSIONืืื $BUILD_VERSION ืืื ืคึผืื ืงื ืืืืกืืขืงืืืื ืคืื ืื ืคืึทื-ืึทืจืึธืคึผ ืจืฉืืื.
ืืึทื ืฉืึทืคึฟื ืจืฉืืื
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 ืึทืืขื ื ื ืึธื ืงืึทื ืขืงืืื ื ื ืืฆื gcloud ืึทืืฃ ืืืึธืืงื-ืฉืึธื ืฉืฉ ืื ืืขืจืึทืงืืืื ืืึธืืข ืืื ื ืื ืื ืืืฆื, ืึทืืื ืืืจ ืฉืืงื ืงืึทืืึทื ืื ืฆื ืื ืืืึธืืงื ืงืึทื ืกืึธืื ื ืืฆื ืืขื ืคึผืึทืจืึทืืขืืขืจ -- ืืึทืคึฟืขื.
ืืืจ ืจืืื ืื ืืืื ืืขืงืข ืืื ืื ืืืึธืืงื ืงืึทื ืกืึธืื ืคึฟืื ืื ืึทืื ืืึธืงืขืจ ืืขืงืข:
gcloud alpha cloud-shell ssh --command="rm -f Dockerfile"
ืฉืืขืื ืื ืคืจืขืฉืื ืืึทืื ืืึธืืืื ืืึธืงืขืจ ืืขืงืข ืืื ืื ืืืื ืืขืงืข ืคืื โโืื ืืืึธืืงื ืงืึทื ืกืึธืื ื ืืฆื ืกืงืคึผ:
gcloud alpha cloud-shell scp localhost:./Dockerfile cloudshell:~
ืืืจ ืงืืืึทืื, ืคืึทืจืืื ืื ืืื ืฉืืืคึผื ืืขื ืงืึทื ืืืื ืขืจ ืฆื ืื ืงืึทื ืืืื ืขืจ ืจืขืืืกืืจื:
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"
ืืืจ ืืึธื ืื ืืขืืืข ืืื ืื ืืืคึผืืืืืึทื ื ืืขืงืข. ืืืืข ืืึธื ืึทื ืื ืงืึทืืึทื ืื ืืื ืื ื ืืฆื ืคืืงืืืฉืึทืก ื ืขืืขื ืคืื ืืขื ืงื ืืื ืืื ืื ืืืคึผืืืืืึทื ื ืึทืงืขืจื (awsm-cluster) ืืื ืคึผืจืืืขืงื ื ืึธืืขื (ืึธืกืึทื-ืคึผืจืึธืืขืงื), ืืื ืื ืงื ืืื ืืื ืืืื.
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"
ืืืจ ืืืืคื ืื ืึทืจืืขื, ืขืคึฟืขื ืขื ืื ืงืึทื ืกืึธืื ืจืขืืืืืึทื ืืื ืืึธืคึฟื ืฆื ืืขื ืื ืืฆืืื ืคึฟืึทืจืืึทืืืื ื ืคืื ืืขื ืงืึทื ืืืื ืขืจ.
ืกืงืจืขืขื ืฉืึธื
ืืื ืืขืืึธืื ืืขืจ ืืขืจืึธืื ืืืคึผืืืืืึทื ื ืคืื ืื ืคืืจืืืืื ืงืึทื ืืืื ืขืจ
ืกืงืจืขืขื ืฉืึธื
ืืื ืืืืืืจืึทื ืืืื ืึธืจืืจื ืื ืืึทืฉืืขืืืงื ืื ืืจืขืกืก. ืคึฟืึทืจ ืืืื ืคึผืฉืื ืกืืื: ืึทืืึธื ืืืจ ืฉืืขืื ืขืก ืึทืจืืืฃ ืืืขืจืงืืึธืื ืืื ืึท ืืขืืขืื ื ืึธืืขื, ืขืก ืืืขื ืืืืึทืื ืึทืคึผืขืจืืืฉืึทื ืึทื, ืงืืื ืขื ืื ืืื ืคืืืข ืืืคึผืืืืืึทื ืฅ ืืื ืืขื ื ืึธืืขื ืืืจ ืืืจืืคืืจื. ื ื, ืืื ืึทืืืขืืืื, ืืึธืก ืืื ืึท ืืืกื ืืืืึทืืขืจ ืคืื ืื ืคืึทืจื ืขื ืคืื ืืขืฉืืืืข.
ืึทื ืฉืืึธื ืงืึทื ืงืืืืฉืึทื ื
ืึทืืข ืื ืืืืื ืกืืขืคึผืก ืืืกืืึธืืข ืงืขื ื ืืฉื ืืึธืื ืฉืืื ืืขืืื, ืึธืืขืจ ืคืฉืื ืืื ืกืืึทืืืจื ืขืืืขืืข ืคึผืืืืื ืคึฟืึทืจ Jenkins, ืืืืขืจ ืืืืืืืึธื. ืึธืืขืจ ืคึฟืึทืจ ืขืืืขืืข ืกืืื ืืื ืืึธื ื ืื ืืื ืคึผืืืืื ืก. ื ื, ืืขื ืื, ืืื ืจืืฃ ืืื ืฆื ืืื ืืืืื ืคืื ืคืึทืจืฆืืืืืคืืื ื.
ืืื ืืื ื ืึธืจ ืืื ืฆื ืงืืืึทืื ืึท ื ืืึทืข ืืขืืข ืคึฟืึทืจ ืืืจ. ืืขืจ ืืขืงืกื ืืืืื ืืื ืืืื ืึท ืืืขื ืฆื ืืืืื ืื ืคืืื ืืื ืื ืืืึธืก ืืื ืืขืืืื ืืฉืขืช ืกืึทืืืืื ื ืื ืคึผืจืึธืืืขื ืืืกืงืจืืืื ืืื ืื ืึธื ืืืื. ืืึทื ืืืืื ืืื ืื ืืืืก, ืืื ืขืจ, ืืขื ืขื ืืึธืจ ื ืืฉื ืึท ืฉืจืขืงืืขื ืืืึธืืฃ ืืื ืืขืืืึธืคึผืก. ืืืื ืืืื ืคืืื ืืื ืื ืืขืืคื ืืืึท ืืื ืืกืืขืจ ืขืืขืฆืขืจ, ืืื ืืืขื ืืืื ืฆืืคืจืืื.
ืืงืืจ: www.habr.com