เดชเตเดฒเด—เดฟเดจเตเดจเตเด•เตพ, เดŽเดธเตเดŽเด‚เดŽเดธเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฐเดœเดฟเดธเตเดŸเตเดฐเต‡เดทเตป เด‡เดฒเตเดฒเดพเดคเต† เดžเด™เตเด™เตพ GKE-เดฏเดฟเตฝ เด’เดฐเต เดตเดฟเดจเตเดฏเดพเดธ เดŸเดพเดธเตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฎเตเด•เตเด•เต เดœเต†เด™เตเด•เดฟเตปเดธเดฟเดจเตเดฑเต† เดœเดพเด•เตเด•เดฑเตเดฑเดฟเดจเดŸเดฟเดฏเดฟเตฝ เด’เดจเตเดจเต เดจเต‹เด•เตเด•เดพเด‚

เดžเด™เตเด™เดณเตเดŸเต† เดกเดตเดฒเดชเตโ€Œเดฎเต†เดจเตเดฑเต เดŸเต€เดฎเตเด•เดณเดฟเดฒเตŠเดจเตเดจเดฟเดจเตเดฑเต† เดŸเต€เด‚ เดฒเต€เดกเต เด…เดตเดฐเตเดŸเต† เดชเตเดคเดฟเดฏ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เดณเต‹เดŸเต เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเดŸเดคเต‹เดŸเต†เดฏเดพเดฃเต เด‡เดคเต†เดฒเตเดฒเดพเด‚ เด†เดฐเด‚เดญเดฟเดšเตเดšเดคเต, เด…เดคเต เดคเดฒเต‡เดฆเดฟเดตเดธเด‚ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตˆเดธเต เดšเต†เดฏเตเดคเต. เดžเดพเดจเดคเต เดชเต‹เดธเตเดฑเตเดฑเต เดšเต†เดฏเตเดคเต. เดเด•เดฆเต‡เดถเด‚ 20 เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเตเดถเต‡เดทเด‚, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดฒเดญเดฟเดšเตเดšเต, เด•เดพเดฐเดฃเด‚ เดตเดณเดฐเต† เด…เดคเตเดฏเดพเดตเดถเตเดฏเดฎเดพเดฏ เด’เดฐเต เด•เดพเดฐเตเดฏเด‚ เด…เดตเดฟเดŸเต† เดšเต‡เตผเดคเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เดžเดพเตป เดชเตเดคเตเด•เตเด•เดฟ. เด’เดฐเต เดฐเดฃเตเดŸเต เดฎเดฃเดฟเด•เตเด•เต‚เตผ เด•เต‚เดŸเดฟ เด•เดดเดฟเดžเตเดžเดพเตฝ... เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ เดŽเดจเตเดคเดพเดฃเต เดธเด‚เดญเดตเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เดฟเดฏเดคเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŠเดนเดฟเด•เตเด•เดพเด‚...

เดžเดพเตป เดธเดฎเตเดฎเดคเดฟเด•เตเด•เดฃเด‚, เดžเดพเตป เดคเดฟเด•เดšเตเดšเตเด‚ เดฎเดŸเดฟเดฏเดจเดพเดฃเต (เดžเดพเตป เด‡เดคเต เดจเต‡เดฐเดคเตเดคเต† เดธเดฎเตเดฎเดคเดฟเดšเตเดšเดฟเดฒเตเดฒเต‡? เด‡เดฒเตเดฒเต‡?), เด•เต‚เดŸเดพเดคเต† เดŸเต€เด‚ เดฒเต€เดกเตเด•เตพเด•เตเด•เต เดœเต†เด™เตเด•เดฟเตปเดธเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดตเต‡เดถเดจเดฎเตเดฃเตเดŸเต, เด…เดคเดฟเตฝ เดžเด™เตเด™เตพเด•เตเด•เต เดŽเดฒเตเดฒเดพ CI/CD เด‰เดฃเตเดŸเต, เดžเดพเตป เดšเดฟเดจเตเดคเดฟเดšเตเดšเต: เด…เดตเดจเต† เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดŸเตเดŸเต† เด…เดตเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดคเตเดฐเดฏเตเด‚! เดžเดพเตป เด’เดฐเต เดคเดฎเดพเดถ เด“เตผเดคเตเดคเต: เด’เดฐเต เดฎเดจเตเดทเตเดฏเดจเต เด’เดฐเต เดฎเต€เตป เด•เตŠเดŸเตเด•เตเด•เตเด•, เด…เดตเตป เด’เดฐเต เดฆเดฟเดตเดธเด‚ เดคเดฟเดจเตเดจเตเด‚; เด’เดฐเต เดตเตเดฏเด•เตเดคเดฟเดฏเต† เดซเต†เดกเต เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเด•, เด…เดฏเดพเตพเด•เตเด•เต เดœเต€เดตเดฟเดคเด•เดพเดฒเด‚ เดฎเตเดดเตเดตเตป เดญเด•เตเดทเดฃเด‚ เดจเตฝเด•เตเด‚. เด’เดชเตเดชเด‚ เดชเต‹เดฏเดฟ เดœเต‹เดฒเดฟเดฏเดฟเตฝ เดคเดจเตเดคเตเดฐเด™เตเด™เตพ เด•เดณเดฟเด•เตเด•เตเด•, เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏเดฟ เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดš เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเดคเดฟเดชเตเดชเดฟเดจเตเดฑเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด…เดŸเด™เตเด™เตเดจเตเดจ เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด•เตเดฌเดฑเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเดจเตเด‚ เด…เดคเดฟเดฒเต‡เด•เตเด•เต เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เด•เตˆเดฎเดพเดฑเดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚ ENV (เดŽเดจเตเดฑเต† เดฎเตเดคเตเดคเดšเตเด›เตป, เด’เดฐเต เดญเดพเดทเดพเดถเดพเดธเตเดคเตเดฐเดœเตเดžเตป, เดชเดฃเตเดŸเต เด‡เด‚เด—เตเดฒเต€เดทเต เด…เดงเตเดฏเดพเดชเด•เตป, เด‡เดชเตเดชเต‹เตพ เดˆ เดตเดพเดšเด•เด‚ เดตเดพเดฏเดฟเดšเตเดšเดคเดฟเดจเตเดถเต‡เดทเด‚ เด…เดตเดจเตเดฑเต† เด•เตเดทเต‡เดคเตเดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดฐเตฝ เดšเตเดดเดฑเตเดฑเดฟ เดŽเดจเตเดจเต† เดตเดณเดฐเต† เดชเตเดฐเด•เดŸเดฎเดพเดฏเดฟ เดจเต‹เด•เตเด•เตเด‚).

เด…เดคเดฟเดจเดพเตฝ, เดžเดพเตป เดŽเด™เตเด™เดจเต† เดชเด เดฟเดšเตเดšเตเดตเต†เดจเตเดจเต เดˆ เด•เตเดฑเดฟเดชเตเดชเดฟเตฝ เดžเดพเตป เดจเดฟเด™เตเด™เดณเต‹เดŸเต เดชเดฑเดฏเตเด‚:

  1. เดœเต‹เดฒเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต‹ เดฎเดฑเตเดฑเต เดœเต‹เดฒเดฟเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต‹ เดœเต†เด™เตเด•เดฟเตปเดธเดฟเดฒเต† เดœเต‹เดฒเดฟเด•เตพ เดšเดฒเดจเดพเดคเตเดฎเด•เดฎเดพเดฏเดฟ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•;
  2. เดœเต†เด™เตเด•เดฟเตปเดธเต เดเดœเดจเตเดฑเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดค เด’เดฐเต เดจเต‹เดกเดฟเตฝ เดจเดฟเดจเตเดจเต เด•เตเดฒเต—เดกเต เด•เตบเดธเต‹เดณเดฟเดฒเต‡เด•เตเด•เต (เด•เตเดฒเต—เดกเต เดทเต†เตฝ) เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเด•;
  3. Google Kubernetes เดŽเดžเตเดšเดฟเดจเดฟเดฒเต‡เด•เตเด•เต เดตเตผเด•เตเด•เต เดฒเต‹เดกเต เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเด•.


เดธเดคเตเดฏเดคเตเดคเดฟเตฝ, เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดžเดพเตป เด’เดฐเต เดชเดฐเดฟเดงเดฟเดตเดฐเต† เดตเดฟเดตเต‡เดšเดจเดฐเดนเดฟเดคเดจเดพเดฃเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต Google เด•เตเดฒเต—เดกเดฟเตฝ เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเดฑเดฟเดจเตเดฑเต† เด’เดฐเต เดญเดพเด—เดฎเต†เด™เตเด•เดฟเดฒเตเด‚ เด‰เดฃเตเดŸเต†เดจเตเดจเต เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ, เดจเดฟเด™เตเด™เตพ เด…เดคเดฟเดจเตเดฑเต† เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดพเดฃเต, เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต GCP เด…เด•เตเด•เต—เดฃเตเดŸเต เด‰เดฃเตเดŸเต. เดŽเดจเตเดจเดพเตฝ เดˆ เด•เตเดฑเดฟเดชเตเดชเต เด…เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเดฒเตเดฒ.

เด‡เดคเดพเดฃเต เดŽเดจเตเดฑเต† เด…เดŸเตเดคเตเดค เดšเต€เดฑเตเดฑเต เดทเต€เดฑเตเดฑเต. เด…เดคเตเดคเดฐเด‚ เด•เตเดฑเดฟเดชเตเดชเตเด•เตพ เด’เดฐเต เด•เต‡เดธเดฟเตฝ เดฎเดพเดคเตเดฐเด‚ เดŽเดดเตเดคเดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต: เดŽเดจเดฟเด•เตเด•เต เด’เดฐเต เดชเตเดฐเดถเตเดจเด‚ เดจเต‡เดฐเดฟเดŸเต‡เดฃเตเดŸเดฟ เดตเดจเตเดจเต, เด…เดคเต เดŽเด™เตเด™เดจเต† เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เด†เดฆเตเดฏเด‚ เด…เดฑเดฟเดฏเดฟเดฒเตเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดชเดฐเดฟเดนเดพเดฐเด‚ เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เด—เต‚เด—เดฟเตพ เดšเต†เดฏเตเดคเดฟเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดžเดพเตป เด…เดคเต เดญเดพเด—เด™เตเด™เดณเดพเดฏเดฟ เด—เต‚เด—เดฟเตพ เดšเต†เดฏเตเดคเต เด’เดŸเตเดตเดฟเตฝ เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเดšเตเดšเต. เดญเดพเดตเดฟเดฏเดฟเตฝ, เดžเดพเตป เด‡เดคเต เดŽเด™เตเด™เดจเต† เดšเต†เดฏเตเดคเตเดตเต†เดจเตเดจเต เดžเดพเตป เดฎเดฑเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดŽเดจเดฟเด•เตเด•เต เดŽเดฒเตเดฒเดพเด‚ เดตเต€เดฃเตเดŸเตเด‚ เด•เดทเดฃเด™เตเด™เดณเดพเดฏเดฟ เด—เต‚เด—เดฟเตพ เดšเต†เดฏเตเดคเต เด’เดฐเตเดฎเดฟเดšเตเดšเต เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ, เด…เดคเตเดคเดฐเด‚ เดšเต€เดฑเตเดฑเต เดทเต€เดฑเตเดฑเตเด•เตพ เดžเดพเตป เดธเตเดตเดฏเด‚ เดŽเดดเตเดคเตเดจเตเดจเต.

เดจเดฟเดฐเดพเด•เดฐเดฃเด‚: 1. เด•เตเดฑเดฟเดชเตเดชเต เดŽเดดเตเดคเดฟเดฏเดคเต "เดŽเดจเดฟเด•เตเด•เตเดตเต‡เดฃเตเดŸเดฟ", เดตเต‡เดทเดคเตเดคเดฟเดจเต เดฎเดฟเด•เดšเตเดš เดชเดฐเดฟเดถเต€เดฒเดจเด‚ เดฌเดพเดงเด•เดฎเดฒเตเดฒ. เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เดณเดฟเดฒเต† "เด‡เดคเต เด‡เด™เตเด™เดจเต† เดšเต†เดฏเตเดคเดพเตฝ เดจเดจเตเดจเดพเดฏเดฟเดฐเตเดจเตเดจเต" เดŽเดจเตเดจ เด“เดชเตเดทเดจเตเด•เตพ เดตเดพเดฏเดฟเดšเตเดšเดคเดฟเตฝ เดŽเดจเดฟเด•เตเด•เต เดธเดจเตเดคเต‹เดทเดฎเตเดฃเตเดŸเต.
2. เดจเต‹เดŸเตเดŸเดฟเดจเตเดฑเต† เดชเตเดฐเดฏเต‹เด—เดฟเดšเตเดš เดญเดพเด—เด‚ เด‰เดชเตเดชเดพเดฏเดฟ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เดŽเดจเตเดฑเต† เดŽเดฒเตเดฒเดพ เดฎเตเตป เด•เตเดฑเดฟเดชเตเดชเตเด•เดณเตเด‚ เดชเต‹เดฒเต† เด‡เดคเตเด‚ เด’เดฐเต เดฆเตเตผเดฌเดฒเดฎเดพเดฏ เด‰เดชเตเดชเต เดฒเดพเดฏเดจเดฟเดฏเดพเดฃเต.

เดœเต†เด™เตเด•เดฟเตปเดธเดฟเดฒเต† เดœเต‹เดฒเดฟ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดšเดฒเดจเดพเดคเตเดฎเด•เดฎเดพเดฏเดฟ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดจเดฟเด™เตเด™เดณเตเดŸเต† เดšเต‹เดฆเตเดฏเด‚ เดžเดพเตป เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เด•เดพเดฃเตเดจเตเดจเต: เดกเตˆเดจเดพเดฎเดฟเด•เต เดœเต‹เดฌเต เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เด‡เดคเตเดฎเดพเดฏเดฟ เดŽเดจเตเดคเดพเดฃเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต? เดธเตเดŸเตเดฐเดฟเด‚เด—เต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดฟเดจเตเดฑเต† เดฎเต‚เดฒเตเดฏเด‚ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดจเตฝเด•เตเด•, เดจเดฟเด™เตเด™เตพ เดชเต‹เด•เต‚!

เดžเดพเตป เด‰เดคเตเดคเดฐเด‚ เดจเตฝเด•เตเดจเตเดจเต: เดžเดพเตป เดถเดฐเดฟเด•เตเด•เตเด‚ เดฎเดŸเดฟเดฏเดจเดพเดฃเต, เด…เดตเตผ เดชเดฐเดพเดคเดฟเดชเตเดชเต†เดŸเตเดฎเตเดชเต‹เตพ เดŽเดจเดฟเด•เตเด•เต เด…เดคเต เด‡เดทเตเดŸเดฎเดฒเตเดฒ: เดฎเดฟเดท, เดตเดฟเดจเตเดฏเดพเดธเด‚ เดคเด•เดฐเตเด•เดฏเดพเดฃเต, เดŽเดฒเตเดฒเดพเด‚ เดชเต‹เดฏเดฟ! เดจเดฟเด™เตเด™เตพ เดจเต‹เด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจเต, เดšเดฟเดฒ เดŸเดพเดธเตโ€Œเด•เต เดฒเต‹เดžเตเดšเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดฟเดจเตเดฑเต† เดฎเต‚เดฒเตเดฏเดคเตเดคเดฟเตฝ เด…เด•เตเดทเดฐเดคเตเดคเต†เดฑเตเดฑเตเดฃเตเดŸเต. เด…เดคเดฟเดจเดพเตฝ, เดŽเดฒเตเดฒเดพเด‚ เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เด•เดพเดฐเตเดฏเด•เตเดทเดฎเดฎเดพเดฏเดฟ เดšเต†เดฏเตเดฏเดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดพเดจเตเดณเตเดณ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเตฝเด•เดฟเด•เตเด•เตŠเดฃเตเดŸเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต† เดจเต‡เดฐเดฟเดŸเตเดŸเต เดกเดพเดฑเตเดฑ เดจเตฝเด•เตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดคเดŸเดฏเดพเตป เด•เดดเดฟเดฏเตเดฎเต†เด™เตเด•เดฟเตฝ, เดžเดพเตป เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตฝ เดธเด‚เด˜เดŸเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต.

เดชเตเดฒเดพเตป เด‡เดคเดพเดฃเต: เดžเด™เตเด™เตพ เดœเต†เตปเด•เดฟเตปเดธเดฟเตฝ เด’เดฐเต เดœเต‹เดฒเดฟ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเตฝ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เดžเด™เตเด™เตพเด•เตเด•เต เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดชเดคเดฟเดชเตเดชเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดพเด‚, เด‡เดคเต เดตเดดเดฟ เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเดฟเดฏ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพเด•เตเด•เตเดณเตเดณ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเด‚. ENV, เดชเดฟเดจเตเดจเต€เดŸเต เด…เดคเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดคเดณเตเดณเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดคเตเดŸเตผเดจเตเดจเต เด…เดตเดฟเดŸเต† เดจเดฟเดจเตเดจเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด•เตเดฏเต‚เดฌเดฑเดฟเตฝ เดตเดฟเด•เตเดทเต‡เดชเดฟเด•เตเด•เตเดจเตเดจเต เดœเต‹เดฒเดฟเดญเดพเดฐเด‚ เดœเต‹เดฒเดฟเดฏเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚.

เดœเต†เตปเด•เดฟเตปเดธเดฟเตฝ เดœเต‹เดฒเดฟ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดชเตเดฐเด•เตเดฐเดฟเดฏ เดžเด™เตเด™เตพ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดฟเดฒเตเดฒ, เด‡เดคเต เดตเดฟเดทเดฏเดคเตเดคเดฟเดจเต เดชเตเดฑเดคเตเดคเดพเดฃเต. เดŸเดพเดธเตเด•เต เดคเดฏเตเดฏเดพเดฑเดพเดฃเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เตเด‚. เดชเดคเดฟเดชเตเดชเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตโ€Œเดค เดฒเดฟเดธเตโ€Œเดฑเตเดฑเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป, เดžเด™เตเด™เตพเด•เตเด•เต เดฐเดฃเตเดŸเต เด•เดพเดฐเตเดฏเด™เตเด™เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต: เดชเตเดฐเดฟเดฏเต‹เดฑเดฟ เดธเดพเดงเตเดตเดพเดฏ เดชเดคเดฟเดชเตเดชเต เดจเดฎเตเดชเดฑเตเด•เดณเตเดณเตเดณ เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เด’เดฐเต เดธเต‹เดดเตโ€Œเดธเต เดฒเดฟเดธเตเดฑเตเดฑเตเด‚ เด…เดคเตเดชเต‹เดฒเต†เดฏเตเดณเตเดณ เด’เดฐเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด‚ เดšเต‹เดฏเตเดธเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดšเตเดฎเดคเดฒเดฏเดฟเตฝ. เดจเดฎเตเดฎเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต เดชเต‡เดฐเดฟเดŸเดพเด‚ BUILD_VERSION, เดžเด™เตเด™เตพ เด…เดคเดฟเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดธเดฟเด•เตเด•เดฟเดฒเตเดฒ. เดŽเดจเตเดจเดพเตฝ เดธเต‹เดดเตเดธเต เดฒเดฟเดธเตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดจเดฎเตเด•เตเด•เต เดธเต‚เด•เตเดทเตเดฎเดฎเดพเดฏเดฟ เดจเต‹เด•เตเด•เดพเด‚.

เด…เดคเตเดฐ เด…เดงเดฟเด•เด‚ เด“เดชเตเดทเดจเตเด•เตพ เด‡เดฒเตเดฒ. เดฐเดฃเตเดŸเต เด•เดพเดฐเตเดฏเด™เตเด™เตพ เดชเต†เดŸเตเดŸเต†เดจเตเดจเต เดฎเดจเดธเตเดธเดฟเตฝ เดตเดจเตเดจเต:

  • เดœเต†เด™เตเด•เดฟเตปเดธเต เด…เดคเดฟเดจเตเดฑเต† เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เต เดจเตฝเด•เตเดจเตเดจ เดฑเดฟเดฎเต‹เดŸเตเดŸเต เด†เด•เตเดธเดธเต API เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•;
  • เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เดซเต‹เตพเดกเดฑเดฟเดจเตเดฑเต† เด‰เดณเตเดณเดŸเด•เตเด•เด™เตเด™เตพ เด…เดญเตเดฏเตผเดคเตเดฅเดฟเด•เตเด•เตเด• (เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เด‡เดคเต JFrog เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตโ€ŒเดŸเดฑเดฟเดฏเดพเดฃเต, เด…เดคเต เดชเตเดฐเดงเดพเดจเดฎเดฒเตเดฒ).

เดœเต†เด™เตเด•เดฟเตปเดธเต เดฑเดฟเดฎเต‹เดŸเตเดŸเต เด†เด•เตเดธเดธเต API

เดธเตเดฅเดพเดชเดฟเดคเดฎเดพเดฏ เดฎเดฟเด•เดšเตเดš เดชเดพเดฐเดฎเตเดชเดฐเตเดฏเดฎเดจเตเดธเดฐเดฟเดšเตเดšเต, เดฆเตˆเตผเด˜เตเดฏเดฎเต‡เดฑเดฟเดฏ เดตเดฟเดถเดฆเต€เด•เดฐเดฃเด™เตเด™เตพ เด’เดดเดฟเดตเดพเด•เตเด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต.
เด†เดฆเตเดฏ เด–เดฃเตเดกเดฟเด•เดฏเตเดŸเต† เด’เดฐเต เดญเดพเด—เดคเตเดคเดฟเดจเตเดฑเต† เดธเตเดตเดคเดจเตเดคเตเดฐ เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เดžเดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เต‚ API เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเตเดฑเต† เด†เดฆเตเดฏ เดชเต‡เดœเต:

เด…เดคเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดคเดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดตเดฟเดฆเต‚เดฐ เดฎเต†เดทเต€เตป-เดฑเต€เดกเดฌเดฟเตพ เด†เด•เตเดธเดธเดฟเดจเดพเดฏเดฟ เดœเต†เด™เตเด•เดฟเตปเดธเต เด’เดฐเต API เดจเตฝเด•เตเดจเตเดจเต. <โ€ฆ> เดฑเดฟเดฎเต‹เดŸเตเดŸเต เด†เด•เตโ€Œเดธเดธเต เด’เดฐเต REST เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เดถเตˆเดฒเดฟเดฏเดฟเตฝ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚ เดŽเดฒเตเดฒเดพ เดซเต€เดšเตเดšเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เด’เดฐเตŠเดฑเตเดฑ เดŽเตปเดŸเตเดฐเดฟ เดชเต‹เดฏเดฟเดจเตเดฑเต เด‡เดฒเตเดฒ, เดชเด•เดฐเด‚ "" เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เด’เดฐเต URL.../api/", เดŽเดตเดฟเดŸเต†"เดชเด™เตเด•เต โ‚ฌ |"เด…เตผเดคเตเดฅเด‚ API เด•เดดเดฟเดตเตเด•เตพ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด’เดฌเตเดœเด•เตเดฑเตเดฑเต เดŽเดจเตเดจเดพเดฃเต.

เดฎเดฑเตเดฑเตŠเดฐเต เดตเดฟเดงเดคเตเดคเดฟเตฝ เดชเดฑเดžเตเดžเดพเตฝ, เดžเด™เตเด™เตพ เด‡เดชเตเดชเต‹เตพ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดจเตเดจ เดตเดฟเดจเตเดฏเดพเดธ เดŸเดพเดธเตโ€Œเด•เต เดฒเดญเตเดฏเดฎเดพเดฃเต†เด™เตเด•เดฟเตฝ http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build, เดคเตเดŸเตผเดจเตเดจเต เดˆ เดŸเดพเดธเตเด•เตเด•เดฟเดจเตเดณเตเดณ API เดตเดฟเดธเดฟเดฒเตเด•เตพ เด‡เดตเดฟเดŸเต† เดฒเดญเตเดฏเดฎเดพเดฃเต http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดเดคเต เดฐเต‚เดชเดคเตเดคเดฟเตฝ เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดพเด‚. เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต‡ API เดซเดฟเตฝเดŸเตเดŸเตผ เดšเต†เดฏเตเดฏเดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เต‚ เดŽเดจเตเดจเดคเดฟเดจเดพเตฝ เดจเดฎเตเด•เตเด•เต XML-เตฝ เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเด•เตเด•เดพเด‚.

เดŽเดฒเตเดฒเดพ เดœเต‹เดฒเดฟเดฏเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดฒเดญเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚. เด…เดธเด‚เดฌเตเดฒเดฟ เดจเดพเดฎเดคเตเดคเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต‡ เดžเด™เตเด™เตพเด•เตเด•เต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณเต‚ (เดชเตเดฐเดฆเตผเดถเดจ เดจเดพเดฎเด‚) เด…เดคเดฟเดจเตเดฑเต† เดซเดฒเดตเตเด‚ (เดซเดฒเด‚):

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']

เดตเดฟเดœเดฏเดฟเดšเตเดšเดตเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เดธเตเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเต
เดชเตเดฒเด—เดฟเดจเตเดจเตเด•เตพ, เดŽเดธเตเดŽเด‚เดŽเดธเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฐเดœเดฟเดธเตเดŸเตเดฐเต‡เดทเตป เด‡เดฒเตเดฒเดพเดคเต† เดžเด™เตเด™เตพ GKE-เดฏเดฟเตฝ เด’เดฐเต เดตเดฟเดจเตเดฏเดพเดธ เดŸเดพเดธเตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฎเตเด•เตเด•เต เดœเต†เด™เตเด•เดฟเตปเดธเดฟเดจเตเดฑเต† เดœเดพเด•เตเด•เดฑเตเดฑเดฟเดจเดŸเดฟเดฏเดฟเตฝ เด’เดจเตเดจเต เด•เดฃเตเดฃเต‹เดŸเดฟเด•เตเด•เดพเด‚

เดถเดฐเดฟ, เดตเดฟเดจเต‹เดฆเดคเตเดคเดฟเดจเดพเดฏเดฟ, เดซเดฟเตฝเดŸเตเดŸเตผ เดจเดฎเตเดฎเต† เดตเดžเตเดšเดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เดพเด‚ (เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เตพ เด’เดฐเดฟเด•เตเด•เดฒเตเด‚ เด•เดณเตเดณเด‚ เดชเดฑเดฏเดฟเดฒเตเดฒ!) เด•เต‚เดŸเดพเดคเต† "เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเดพเดคเตเดค"เดตเดฏเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด•:

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

เดตเดฟเดœเดฏเดฟเด•เตเด•เดพเดคเตเดคเดตเดฏเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเดฟเดจเตเดฑเต† เดธเตเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเต
เดชเตเดฒเด—เดฟเดจเตเดจเตเด•เตพ, เดŽเดธเตเดŽเด‚เดŽเดธเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฐเดœเดฟเดธเตเดŸเตเดฐเต‡เดทเตป เด‡เดฒเตเดฒเดพเดคเต† เดžเด™เตเด™เตพ GKE-เดฏเดฟเตฝ เด’เดฐเต เดตเดฟเดจเตเดฏเดพเดธ เดŸเดพเดธเตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฎเตเด•เตเด•เต เดœเต†เด™เตเด•เดฟเตปเดธเดฟเดจเตเดฑเต† เดœเดพเด•เตเด•เดฑเตเดฑเดฟเดจเดŸเดฟเดฏเดฟเตฝ เด’เดจเตเดจเต เด•เดฃเตเดฃเต‹เดŸเดฟเด•เตเด•เดพเด‚

เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดธเต†เตผเดตเดฑเดฟเดฒเต† เด’เดฐเต เดซเต‹เตพเดกเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดชเดคเดฟเดชเตเดชเตเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต

เดชเดคเดฟเดชเตเดชเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดฒเดญเดฟเด•เตเด•เดพเตป เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดตเดดเดฟเดฏเตเดฃเตเดŸเต. 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 เดœเต‹เดฒเดฟ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด•เตพ เดซเดฏเดฒเตเด•เดณเดฟเตฝ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเต. XML เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเตฝ. เดตเดดเดฟเดฏเดฟเตฝ http://ะฟัƒั‚ัŒ-ะดะพ-ะทะฐะดะฐะฝะธั/config.xml เด…เดคเดจเตเดธเดฐเดฟเดšเตเดšเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด†เดตเดถเตเดฏเดพเดจเตเดธเดฐเดฃเด‚ เดŽเดกเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด•เดฟเดŸเตเดŸเดฟเดฏเดฟเดŸเดคเตเดคเต เดคเดจเตเดจเต† เดคเดฟเดฐเดฟเด•เต† เดตเดฏเตเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚.

เดชเดคเดฟเดชเตเดชเตเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ เด’เดฐเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดฎเตเด•เดณเดฟเตฝ เดธเดฎเตเดฎเดคเดฟเดšเตเดšเตเดตเต†เดจเตเดจเต เด“เตผเดฎเตเดฎเดฟเด•เตเด•เตเด• BUILD_VERSION?

เดจเดฎเตเด•เตเด•เต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดคเต เด…เดคเดฟเดจเตเดณเตเดณเดฟเตฝ เดจเต‹เด•เตเด•เดพเด‚. เดชเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดธเตเดฅเดฒเดคเตเดคเดพเดฃเต†เดจเตเดจเตเด‚ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดคเดฐเดคเตเดคเดฟเดฒเดพเดฃเต†เดจเตเดจเตเด‚ เด‰เดฑเดชเตเดชเดพเด•เตเด•เดพเตป เดฎเดพเดคเตเดฐเด‚.

เดธเตโ€Œเดชเต‹เดฏเดฟเดฒเดฑเดฟเดจเต เด•เต€เดดเดฟเดฒเตเดณเตเดณ เดธเตโ€Œเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเต.

เดจเดฟเด™เตเด™เดณเตเดŸเต† config.xml เดถเด•เดฒเด‚ เดธเดฎเดพเดจเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚. เดšเต‹เดฏเตโ€Œเดธเต เดŽเดฒเดฎเต†เดจเตเดฑเดฟเดจเตเดฑเต† เด‰เดณเตเดณเดŸเด•เตเด•เด‚ เด‡เดคเตเดตเดฐเต† เด•เดพเดฃเตเดจเตเดจเดฟเดฒเตเดฒ เดŽเดจเตเดจเดคเตŠเดดเดฟเดšเตเดšเดพเตฝ
เดชเตเดฒเด—เดฟเดจเตเดจเตเด•เตพ, เดŽเดธเตเดŽเด‚เดŽเดธเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฐเดœเดฟเดธเตเดŸเตเดฐเต‡เดทเตป เด‡เดฒเตเดฒเดพเดคเต† เดžเด™เตเด™เตพ GKE-เดฏเดฟเตฝ เด’เดฐเต เดตเดฟเดจเตเดฏเดพเดธ เดŸเดพเดธเตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฎเตเด•เตเด•เต เดœเต†เด™เตเด•เดฟเตปเดธเดฟเดจเตเดฑเต† เดœเดพเด•เตเด•เดฑเตเดฑเดฟเดจเดŸเดฟเดฏเดฟเตฝ เด’เดจเตเดจเต เด•เดฃเตเดฃเต‹เดŸเดฟเด•เตเด•เดพเด‚

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‰เดฑเดชเตเดชเดพเดฃเต‡เดพ? เด…เดคเตเดฐเดฏเต‡เดฏเตเดณเตเดณเต‚, เดฌเดฟเตฝเดกเต เดตเดฟเดœเดฏเดฟเดšเตเดšเดพเตฝ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดŽเดดเตเดคเดพเด‚.
เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดจเต เดชเดคเดฟเดชเตเดชเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดฒเดญเดฟเด•เตเด•เตเด‚, เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•, เดจเดฎเตเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดธเตเดฅเดฒเดคเตเดคเต เดชเดคเดฟเดชเตเดชเตเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต เดŽเดดเตเดคเตเด•, เดคเตเดŸเตผเดจเตเดจเต เด…เดคเต เดคเดฟเดฐเดฟเด•เต† เดตเดฏเตเด•เตเด•เตเด•. เด…เดคเต†. เด…เดคเต เดถเดฐเดฟเดฏเดพเดฃเต. เดชเดคเดฟเดชเตเดชเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เด‡เดคเดฟเดจเด•เด‚ เด‰เดณเตเดณ เดธเตเดฅเดฒเดคเตเดคเต XML-เตฝ เดชเดคเดฟเดชเตเดชเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดŽเดดเตเดคเตเด• (เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดจเตเดฑเต† เด†เดฆเตเดฏ เดฒเต‹เดžเตเดšเดฟเดจเต เดถเต‡เดทเด‚ เดญเดพเดตเดฟเดฏเดฟเตฝ เด†เดฏเดฟเดฐเดฟเด•เตเด•เตเด‚). เดฒเต‹เด•เดคเตเดคเต เด‡เดชเตเดชเต‹เดดเตเด‚ เดชเดคเดฟเดตเต เด†เดตเดฟเดทเตเด•เดพเดฐเด™เตเด™เตพเด•เตเด•เต เด•เดŸเตเดคเตเดค เด†เดฐเดพเดงเด•เตผ เด‰เดฃเตเดŸเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เดฑเดฟเดฏเดพเด‚. เดžเดพเตป เด…เดตเดฐเตเดŸเต‡เดคเดฒเตเดฒ. เดฆเดฏเดตเดพเดฏเดฟ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด• xmlstarler เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดŽเดกเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เดฎเต†เดทเต€เดจเดฟเดฒเต‡เด•เตเด•เต. เดธเต†เดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต 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

เดœเต†เตปเด•เดฟเตปเดธเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดคเดฟเดชเตเดชเตเด•เตพ เดจเต‡เดŸเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด“เดชเตเดทเตป เดจเดฟเด™เตเด™เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•เดฏเตเด‚ เดŽเดจเตเดจเต†เดชเตเดชเต‹เดฒเต† เดฎเดŸเดฟเดฏเดจเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดธเตโ€Œเดชเต‹เดฏเดฟเดฒเดฑเดฟเดจเต เด•เต€เดดเดฟเตฝ เด…เดคเต‡ เด•เต‹เดกเดพเดฃเต, เดชเด•เตเดทเต‡ เดœเต†เด™เตเด•เดฟเตปเดธเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต:

เดœเต†เด™เตเด•เดฟเตปเดธเต เดฎเตเดคเตฝ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดตเดฐเต†เดฏเตเดณเตเดณ เดชเดคเดฟเดชเตเดชเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดŽเดดเตเดคเตเด•
เด‡เดคเต เดฎเดจเดธเตเดธเดฟเตฝ เดตเดฏเตเด•เตเด•เตเด•: เดŽเดจเตเดฑเต† เด…เดธเด‚เดฌเตเดฒเดฟ เดจเดพเดฎเดคเตเดคเดฟเตฝ เด’เดฐเต เด•เต‹เดณเตป เด•เตŠเดฃเตเดŸเต เดตเต‡เตผเดคเดฟเดฐเดฟเดšเตเดš เด’เดฐเต เดธเต€เด•เตเดตเตปเดธเต เดจเดฎเตเดชเดฑเตเด‚ เด’เดฐเต เดชเดคเดฟเดชเตเดชเต เดจเดฎเตเดชเดฑเตเด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเดจเตเดธเดฐเดฟเดšเตเดšเต, awk เด…เดจเดพเดตเดถเตเดฏเดฎเดพเดฏ เดญเดพเด—เด‚ เดฎเตเดฑเดฟเดšเตเดšเตเดฎเดพเดฑเตเดฑเตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดตเดถเตเดฏเด™เตเด™เตพเด•เตเด•เดจเตเดธเดฐเดฟเดšเตเดšเต เดˆ เดตเดฐเดฟ เดฎเดพเดฑเตเดฑเตเด•.

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

เดธเดฟเดฆเตเดงเดพเดจเตเดคเดคเตเดคเดฟเตฝ, เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดŽเดดเตเดคเดฟเดฏ เด•เต‹เดกเต เดจเดฟเด™เตเด™เตพ เดชเดฐเต€เด•เตเดทเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดตเดฟเดจเตเดฏเดพเดธ เดŸเดพเดธเตเด•เตเด•เดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเดฟเดจเด•เด‚ เดชเดคเดฟเดชเตเดชเตเด•เดณเตเดณเตเดณ เด’เดฐเต เดกเตเดฐเต‹เดชเตเดชเต-เดกเต—เตบ เดฒเดฟเดธเตเดฑเตเดฑเต เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚. เดธเตโ€Œเดชเต‹เดฏเดฟเดฒเดฑเดฟเดจเต เด•เต€เดดเดฟเดฒเตเดณเตเดณ เดธเตโ€Œเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเดฟเดฒเต† เดชเต‹เดฒเต†เดฏเดพเดฃเดฟเดคเต.

เดชเดคเดฟเดชเตเดชเตเด•เดณเตเดŸเต† เดถเดฐเดฟเดฏเดพเดฏเดฟ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟเดฏ เดฒเดฟเดธเตเดฑเตเดฑเต
เดชเตเดฒเด—เดฟเดจเตเดจเตเด•เตพ, เดŽเดธเตเดŽเด‚เดŽเดธเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฐเดœเดฟเดธเตเดŸเตเดฐเต‡เดทเตป เด‡เดฒเตเดฒเดพเดคเต† เดžเด™เตเด™เตพ GKE-เดฏเดฟเตฝ เด’เดฐเต เดตเดฟเดจเตเดฏเดพเดธ เดŸเดพเดธเตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฎเตเด•เตเด•เต เดœเต†เด™เตเด•เดฟเตปเดธเดฟเดจเตเดฑเต† เดœเดพเด•เตเด•เดฑเตเดฑเดฟเดจเดŸเดฟเดฏเดฟเตฝ เด’เดจเตเดจเต เด•เดฃเตเดฃเต‹เดŸเดฟเด•เตเด•เดพเด‚

เดŽเดฒเตเดฒเดพเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเด•เตผเดคเตเดคเดฟ เด’เดŸเตเดŸเดฟเด•เตเด•เตเด• เดทเต†เตฝ เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เด•เต‚เดŸเดพเดคเต† เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเด•.

เด•เตเดฒเต—เดกเต เดทเต†เดฒเตเดฒเดฟเดฒเต‡เด•เตเด•เต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

เดžเด™เตเด™เตพเด•เตเด•เต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเดฟเตฝ เด•เดณเด•เตเดŸเตผเดฎเดพเดฐเตเดฃเตเดŸเต. เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดกเต†เดฒเดฟเดตเดฑเดฟ เด‰เดชเด•เดฐเดฃเดฎเดพเดฏเตเด‚ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฎเดพเดจเต‡เดœเดฑเดพเดฏเตเด‚ เดžเด™เตเด™เตพ เด…เตปเดธเดฟเดฌเดฟเตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเดจเตเดธเดฐเดฟเดšเตเดšเต, เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดฎเต‚เดจเตเดจเต เด“เดชเตเดทเดจเตเด•เตพ เดฎเดจเดธเตเดธเดฟเตฝ เดตเดฐเตเดจเตเดจเต: เดกเต‹เด•เตเด•เดฑเดฟเตฝ เดกเต‹เด•เตเด•เตผ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•, เด…เตปเดธเดฟเดฌเดฟเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดฎเต†เดทเต€เดจเดฟเตฝ เดกเต‹เด•เตเด•เตผ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เด•เตเดฒเต—เดกเต เด•เตบเดธเต‹เดณเดฟเตฝ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•. เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดœเต†เด™เตเด•เดฟเตปเดธเดฟเดจเตเดฑเต† เดชเตเดฒเด—เดฟเดจเตเดจเตเด•เดณเต† เด•เตเดฑเดฟเดšเตเดšเต เดฎเต—เดจเด‚ เดชเดพเดฒเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดธเดฎเตเดฎเดคเดฟเดšเตเดšเต. เด“เตผเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต‹?

เดžเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต: เดถเดฐเดฟ, "เดฌเต‹เด•เตเดธเดฟเดจเต เดชเตเดฑเดคเตเดคเต" เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ เด•เตเดฒเต—เดกเต เด•เตบเดธเต‹เดณเดฟเตฝ เดถเต‡เด–เดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเดคเดฟเดจเดพเตฝ, เดชเดฟเดจเตเดจเต† เดŽเดจเตเดคเดฟเดจเดพเดฃเต เดตเดฟเดทเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต? เดตเตƒเดคเตเดคเดฟเดฏเดพเดฏเดฟ เดธเต‚เด•เตเดทเดฟเด•เตเด•เตเด•, เด…เดฒเตเดฒเต‡? เดŽเดจเดฟเด•เตเด•เต เด•เตเดฒเต—เดกเต เด•เตบเดธเต‹เดณเดฟเตฝ เดœเต†เด™เตเด•เดฟเตปเดธเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เดถเต‡เด–เดฐเดฟเด•เตเด•เดฃเด‚, เดคเตเดŸเตผเดจเตเดจเต เด…เดต เด…เดตเดฟเดŸเต† เดจเดฟเดจเตเดจเต เด•เตเดฏเต‚เดฌเดฑเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เดžเตเดšเต เดšเต†เดฏเตเดฏเดฃเด‚. เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด—เต‚เด—เดฟเดณเดฟเดจเตเดฑเต† เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เดตเดณเดฐเต† เดธเดฎเตเดชเดจเตเดจเดฎเดพเดฏ เดšเดพเดจเดฒเตเด•เตพ เด‰เดฃเตเดŸเต, เด…เดคเต เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเตเดฑเต† เดตเต‡เด—เดคเดฏเดฟเตฝ เด—เตเดฃเด‚ เดšเต†เดฏเตเดฏเตเด‚.

เด•เตเดฒเต—เดกเต เด•เตบเดธเต‹เดณเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฐเดฃเตเดŸเต เด•เดพเดฐเตเดฏเด™เตเด™เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต: gCloud เด•เต‚เดŸเดพเดคเต† เด†เด•เตเดธเดธเต เด…เดตเด•เดพเดถเด™เตเด™เดณเตเด‚ Google เด•เตเดฒเต—เดกเต API เด‡เดคเต‡ เด•เดฃเด•เตเดทเตป เด‰เดฃเตเดŸเดพเด•เตเด•เตเดจเตเดจ VM เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ.

เด—เต‚เด—เดฟเตพ เด•เตเดฒเต—เดกเดฟเตฝ เดจเดฟเดจเตเดจเดฒเตเดฒ เด•เดฃเด•เตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเตป เด‰เดฆเตเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเดตเตผเด•เตเด•เต
Google เด…เดคเดฟเดจเตเดฑเต† เดธเต‡เดตเดจเด™เตเด™เดณเดฟเตฝ เดธเด‚เดตเต‡เดฆเดจเดพเดคเตเดฎเด• เด…เด‚เด—เต€เด•เดพเดฐเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เดพเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดค เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เด’เดฐเต เด•เต‹เดซเดฟ เดฎเต†เดทเต€เดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเต‹เดฒเตเด‚ เด•เตบเดธเต‹เดณเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเตป เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚, เด…เดคเต *nix เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด’เดฐเต เด•เตบเดธเต‹เตพ เดคเดจเตเดจเต†เดฏเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ.

เดˆ เด•เตเดฑเดฟเดชเตเดชเดฟเดจเตเดฑเต† เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเดฟเดจเตเดณเตเดณเดฟเตฝ เดžเดพเตป เดˆ เดตเดฟเดทเดฏเด‚ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เด•เดตเตผ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เด†เดตเดถเตเดฏเดฎเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เดณเดฟเตฝ เดŽเดดเตเดคเตเด•. เดžเด™เตเด™เตพเด•เตเด•เต เดฎเดคเดฟเดฏเดพเดฏ เดตเต‹เดŸเตเดŸเตเด•เตพ เดฒเดญเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดˆ เดตเดฟเดทเดฏเดคเตเดคเดฟเตฝ เดžเดพเตป เด’เดฐเต เด…เดชเตเดกเต‡เดฑเตเดฑเต เดŽเดดเตเดคเดพเด‚.

เด…เดตเด•เดพเดถเด™เตเด™เตพ เดจเตฝเด•เดพเดจเตเดณเตเดณ เดŽเดณเตเดชเตเดชเดตเดดเดฟ เดตเต†เดฌเต เด‡เดจเตเดฑเตผเดซเต‡เดธเดฟเดฒเต‚เดŸเต†เดฏเดพเดฃเต.

  1. เดจเดฟเด™เตเด™เตพ เดชเดฟเดจเตเดจเต€เดŸเต เด•เตเดฒเต—เดกเต เด•เตบเดธเต‹เดณเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจ VM เด‡เตปเดธเตโ€Œเดฑเตเดฑเตปเดธเต เดจเดฟเตผเดคเตเดคเตเด•.
  2. เด‰เดฆเดพเดนเดฐเดฃ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เดคเตเดฑเดจเตเดจเต เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเตเด• เดญเต‡เดฆเด—เดคเดฟ เดตเดฐเตเดคเตเดคเตเด•.
  3. เดชเต‡เดœเดฟเดจเตเดฑเต† เดเดฑเตเดฑเดตเตเด‚ เดคเดพเดดเต†, เด‡เตปเดธเตเดฑเตเดฑเตปเดธเต เด†เด•เตเดธเดธเต เดธเตเด•เต‹เดชเตเดชเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด• เดŽเดฒเตเดฒเดพ เด•เตเดฒเต—เดกเต API-เด•เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เดชเต‚เตผเดฃเตเดฃ เด†เด•เตเดธเดธเต.

    เดธเตเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเต
    เดชเตเดฒเด—เดฟเดจเตเดจเตเด•เตพ, เดŽเดธเตเดŽเด‚เดŽเดธเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฐเดœเดฟเดธเตเดŸเตเดฐเต‡เดทเตป เด‡เดฒเตเดฒเดพเดคเต† เดžเด™เตเด™เตพ GKE-เดฏเดฟเตฝ เด’เดฐเต เดตเดฟเดจเตเดฏเดพเดธ เดŸเดพเดธเตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฎเตเด•เตเด•เต เดœเต†เด™เตเด•เดฟเตปเดธเดฟเดจเตเดฑเต† เดœเดพเด•เตเด•เดฑเตเดฑเดฟเดจเดŸเดฟเดฏเดฟเตฝ เด’เดจเตเดจเต เด•เดฃเตเดฃเต‹เดŸเดฟเด•เตเด•เดพเด‚

  4. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดธเด‚เดฐเด•เตเดทเดฟเดšเตเดšเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•.

VM เดฒเต‹เดกเดฟเด‚เด—เต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟเด•เตเด•เดดเดฟเดžเตเดžเดพเตฝ, SSH เดตเดดเดฟ เด…เดคเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตโ€Œเดคเต เด’เดฐเต เดชเดฟเดถเด•เต เด•เต‚เดŸเดพเดคเต† เด•เดฃเด•เตเดทเตป เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด•. เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•:

gcloud alpha cloud-shell ssh

เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏ เด’เดฐเต เด•เดฃเด•เตเดทเตป เด‡เดคเตเดชเต‹เดฒเต† เด•เดพเดฃเดชเตเดชเต†เดŸเตเดจเตเดจเต
เดชเตเดฒเด—เดฟเดจเตเดจเตเด•เตพ, เดŽเดธเตเดŽเด‚เดŽเดธเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฐเดœเดฟเดธเตเดŸเตเดฐเต‡เดทเตป เด‡เดฒเตเดฒเดพเดคเต† เดžเด™เตเด™เตพ GKE-เดฏเดฟเตฝ เด’เดฐเต เดตเดฟเดจเตเดฏเดพเดธ เดŸเดพเดธเตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฎเตเด•เตเด•เต เดœเต†เด™เตเด•เดฟเตปเดธเดฟเดจเตเดฑเต† เดœเดพเด•เตเด•เดฑเตเดฑเดฟเดจเดŸเดฟเดฏเดฟเตฝ เด’เดจเตเดจเต เด•เดฃเตเดฃเต‹เดŸเดฟเด•เตเด•เดพเด‚

GKE-เดฒเต‡เด•เตเด•เต เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเด•

IaC-เดฒเต‡เด•เตเด•เต (เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เด’เดฐเต เด•เต‹เดกเดพเดฏเดฟ) เดฎเดพเดฑเดพเตป เดธเดพเดงเตเดฏเดฎเดพเดฏ เดŽเดฒเตเดฒเดพ เดตเดดเดฟเด•เดณเดฟเดฒเตเด‚ เดžเด™เตเด™เตพ เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดžเด™เตเด™เดณเตเดŸเต† เดกเต‹เด•เตเด•เตผเดซเดฏเดฒเตเด•เตพ Git-เตฝ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เด’เดฐเต เดตเดถเดคเตเดคเต. เด•เต‚เดŸเดพเดคเต† kubernetes-เดฒเต† เดตเดฟเดจเตเดฏเดพเดธเด‚ เด’เดฐเต yaml เดซเดฏเดฒเดพเดฃเต เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต, เด‡เดคเต เดˆ เดŸเดพเดธเตโ€Œเด•เตเด•เดฟเดจเต เดฎเดพเดคเตเดฐเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เด•เต‹เดกเต เดชเต‹เดฒเต†เดฏเดพเดฃเต. เด‡เดคเต เดฎเดฑเตเดตเดถเดคเตเดคเต เดจเดฟเดจเตเดจเดพเดฃเต. เดชเตŠเดคเตเดตเต‡, เดžเดพเตป เด‰เดฆเตเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเดคเต, เดชเดฆเตเดงเดคเดฟ เด‡เดคเดพเดฃเต:

  1. เดžเด™เตเด™เตพ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต† เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเต BUILD_VERSION เด•เต‚เดŸเดพเดคเต†, เด“เดชเตเดทเดฃเดฒเดพเดฏเดฟ, เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเดจเตเดจ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต† เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ ENV.
  2. Git-เตฝ เดจเดฟเดจเตเดจเต เดกเต‹เด•เตเด•เตผเดซเดฏเตฝ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•.
  3. เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเดพเดฏเดฟ เดฏเดพเดฎเตฝ เด‰เดฃเตเดŸเดพเด•เตเด•เตเด•.
  4. เดžเด™เตเด™เตพ เดˆ เดฐเดฃเตเดŸเต เดซเดฏเดฒเตเด•เดณเตเด‚ scp เดตเดดเดฟ เด•เตเดฒเต—เดกเต เด•เตบเดธเต‹เดณเดฟเดฒเต‡เด•เตเด•เต เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต.
  5. เดžเด™เตเด™เตพ เด…เดตเดฟเดŸเต† เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดคเดณเตเดณเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต
  6. เดžเด™เตเด™เตพ เดฒเต‹เดกเต เดตเดฟเดจเตเดฏเดพเดธ เดซเดฏเตฝ เด•เตเดฏเต‚เดฌเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

เดจเดฎเตเด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ เดชเดฑเดฏเดพเด‚. เด’เดฐเดฟเด•เตเด•เตฝ เดžเด™เตเด™เตพ เดธเด‚เดธเดพเดฐเดฟเดšเตเดšเต เดคเตเดŸเด™เตเด™เดฟ ENV, เด…เดชเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เดฐเดฃเตเดŸเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเดŸเต† เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เด•เตˆเดฎเดพเดฑเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต†เดจเตเดจเต เด•เดฐเตเดคเตเด•: เดชเดฐเด‚ 1 ะธ เดชเดฐเด‚ 2. เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ เด…เดตเดฐเตเดŸเต† เดšเตเดฎเดคเดฒ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต, เดŸเตˆเดชเตเดชเต เดšเต†เดฏเตเดฏเตเด• - เดธเตเดŸเตเดฐเดฟเด‚เด—เต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ.

เดธเตเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเต
เดชเตเดฒเด—เดฟเดจเตเดจเตเด•เตพ, เดŽเดธเตเดŽเด‚เดŽเดธเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฐเดœเดฟเดธเตเดŸเตเดฐเต‡เดทเตป เด‡เดฒเตเดฒเดพเดคเต† เดžเด™เตเด™เตพ GKE-เดฏเดฟเตฝ เด’เดฐเต เดตเดฟเดจเตเดฏเดพเดธ เดŸเดพเดธเตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฎเตเด•เตเด•เต เดœเต†เด™เตเด•เดฟเตปเดธเดฟเดจเตเดฑเต† เดœเดพเด•เตเด•เดฑเตเดฑเดฟเดจเดŸเดฟเดฏเดฟเตฝ เด’เดจเตเดจเต เด•เดฃเตเดฃเต‹เดŸเดฟเด•เตเด•เดพเด‚

เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดฑเต€เดกเดฏเดฑเด•เตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ yaml เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚ เดŽเด•เตเด•เต‹ เดซเดฏเตฝ เดšเต†เดฏเตเดฏเดพเตป. เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดกเต‹เด•เตเด•เตผเดซเดฏเดฒเดฟเตฝ เด‰เดฃเตเดŸเต†เดจเตเดจเต เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต เดชเดฐเด‚ 1 ะธ เดชเดฐเด‚ 2เดฒเต‹เดกเต เดจเต†เดฏเดฟเด‚ เด†เดฏเดฟเดฐเดฟเด•เตเด•เตเด‚ เดŽเดจเตเดจเต เด†เด•เตผเดทเดฃเต€เดฏเดฎเดพเดฏ เด…เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป, เด•เต‚เดŸเดพเดคเต† เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดชเดคเดฟเดชเตเดชเดฟเดจเตเดฑเต† เดชเตเดฐเดฏเต‹เด—เดคเตเดคเต‹เดŸเตเด•เต‚เดŸเดฟเดฏ เด…เดธเด‚เดฌเดฟเตพ เดšเต†เดฏเตเดค เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟ เดตเดดเดฟเดฏเดฟเตฝ 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 เด†เตฝเดซ เด•เตเดฒเต—เดกเต-เดทเต†เตฝ ssh เดธเด‚เดตเต‡เดฆเดจเดพเดคเตเดฎเด• เดฎเต‹เดกเต เดฒเดญเตเดฏเดฎเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เด•เตเดฒเต—เดกเต เด•เตบเดธเต‹เดณเดฟเดฒเต‡เด•เตเด•เต เด•เดฎเดพเตปเดกเตเด•เตพ เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเต --เด•เดฎเดพเตปเดกเต.

เดชเดดเดฏ เดกเต‹เด•เตเด•เตผเดซเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต เดžเด™เตเด™เตพ เด•เตเดฒเต—เดกเต เด•เตบเดธเต‹เดณเดฟเดฒเต† เดนเต‹เด‚ เดซเต‹เตพเดกเตผ เดตเตƒเดคเตเดคเดฟเดฏเดพเด•เตเด•เตเดจเตเดจเต:

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

scp เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เตเดฒเต—เดกเต เด•เตบเดธเต‹เดณเดฟเดจเตเดฑเต† เดนเต‹เด‚ เดซเต‹เตพเดกเดฑเดฟเตฝ เดชเตเดคเตเดคเดพเดฏเดฟ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดค เดกเต‹เด•เตเด•เตผเดซเดฏเตฝ เดธเตเดฅเดพเดชเดฟเด•เตเด•เตเด•:

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-เด•เตเดฒเดธเตเดฑเตเดฑเตผ) เด•เต‚เดŸเดพเดคเต† เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดชเต‡เดฐเต (เด†เด•เตผเดทเดฃเต€เดฏเดฎเดพเดฏ-เดชเดฆเตเดงเดคเดฟ), เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดŽเดตเดฟเดŸเต†เดฏเดพเดฃเต เดธเตเดฅเดฟเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต.

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"

เดžเด™เตเด™เตพ เดŸเดพเดธเตเด•เต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด•เตบเดธเต‹เตพ เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดคเตเดฑเด•เตเด•เตเด•เดฏเตเด‚ เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเดจเตเดฑเต† เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏ เด…เดธเด‚เดฌเตเดฒเดฟ เด•เดพเดฃเตเดฎเต†เดจเตเดจเต เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดธเตเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเต
เดชเตเดฒเด—เดฟเดจเตเดจเตเด•เตพ, เดŽเดธเตเดŽเด‚เดŽเดธเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฐเดœเดฟเดธเตเดŸเตเดฐเต‡เดทเตป เด‡เดฒเตเดฒเดพเดคเต† เดžเด™เตเด™เตพ GKE-เดฏเดฟเตฝ เด’เดฐเต เดตเดฟเดจเตเดฏเดพเดธ เดŸเดพเดธเตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฎเตเด•เตเด•เต เดœเต†เด™เตเด•เดฟเตปเดธเดฟเดจเตเดฑเต† เดœเดพเด•เตเด•เดฑเตเดฑเดฟเดจเดŸเดฟเดฏเดฟเตฝ เด’เดจเตเดจเต เด•เดฃเตเดฃเต‹เดŸเดฟเด•เตเด•เดพเด‚

เดคเตเดŸเตผเดจเตเดจเต เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเดคเตเดค เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเดจเตเดฑเต† เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏ เดตเดฟเดจเตเดฏเดพเดธเด‚

เดธเตเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเต
เดชเตเดฒเด—เดฟเดจเตเดจเตเด•เตพ, เดŽเดธเตเดŽเด‚เดŽเดธเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฐเดœเดฟเดธเตเดŸเตเดฐเต‡เดทเตป เด‡เดฒเตเดฒเดพเดคเต† เดžเด™เตเด™เตพ GKE-เดฏเดฟเตฝ เด’เดฐเต เดตเดฟเดจเตเดฏเดพเดธ เดŸเดพเดธเตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฎเตเด•เตเด•เต เดœเต†เด™เตเด•เดฟเตปเดธเดฟเดจเตเดฑเต† เดœเดพเด•เตเด•เดฑเตเดฑเดฟเดจเดŸเดฟเดฏเดฟเตฝ เด’เดจเตเดจเต เด•เดฃเตเดฃเต‹เดŸเดฟเด•เตเด•เดพเด‚

เด•เตเดฐเดฎเต€เด•เดฐเดฃเด‚ เดžเดพเตป เดฎเดจเดƒเดชเต‚เตผเดตเด‚ เด…เดตเด—เดฃเดฟเดšเตเดšเต เดคเตเดŸเดฐเตเด•. เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เด•เดพเดฐเดฃเดคเตเดคเดพเตฝ: เดจเดฟเด™เตเด™เตพ เด…เดคเต เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเตเด•เดดเดฟเดžเตเดžเดพเตฝ เดœเต‹เดฒเดฟเดญเดพเดฐเด‚ เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเต‡เดฐเดฟเตฝ, เดจเดฟเด™เตเด™เตพ เดˆ เดชเต‡เดฐเดฟเตฝ เดŽเดคเตเดฐ เดตเดฟเดจเตเดฏเดพเดธเด™เตเด™เตพ เดจเดŸเดคเตเดคเดฟเดฏเดพเดฒเตเด‚ เด…เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเดฏเดฟ เดคเตเดŸเดฐเตเด‚. เดถเดฐเดฟ, เดชเตŠเดคเตเดตเต‡, เด‡เดคเต เดšเดฐเดฟเดคเตเดฐเดคเตเดคเดฟเดจเตเดฑเต† เดชเดฐเดฟเดงเดฟเด•เตเด•เดชเตเดชเตเดฑเดฎเดพเดฃเต.

เดจเดฟเด—เดฎเดจเด™เตเด™เตพเด•เตเด•เต เดชเด•เดฐเด‚

เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เด˜เดŸเตเดŸเด™เตเด™เดณเตเด‚ เด’เดฐเตเดชเด•เตเดทเต‡ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เดœเต†เตปเด•เดฟเตปเดธเดฟเดจเต เด…เดตเดฐเตเดŸเต† เดฎเตเดฏเต‚เดฒเดฟเดฏเต‹เตบ เดšเดฟเดฒ เดชเตเดฒเด—เดฟเตป เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเต. เดŽเดจเตเดจเดพเตฝ เดšเดฟเดฒ เด•เดพเดฐเดฃเด™เตเด™เดณเดพเตฝ เดŽเดจเดฟเด•เตเด•เต เดชเตเดฒเด—เดฟเดจเตเด•เตพ เด‡เดทเตเดŸเดฎเดฒเตเดฒ. เดถเดฐเดฟ, เด•เต‚เดŸเตเดคเตฝ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดชเดฑเดžเตเดžเดพเตฝ, เดจเดฟเดฐเดพเดถเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดžเดพเตป เด…เดตเดฐเต† เด†เดถเตเดฐเดฏเดฟเด•เตเด•เตเดจเตเดจเดคเต.

เดŽเดจเดฟเด•เตเด•เดพเดฏเดฟ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเตเดคเดฟเดฏ เดตเดฟเดทเดฏเด‚ เดŽเดŸเตเด•เตเด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดš เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดฟเดŸเดฏเดฟเตฝ เดžเดพเตป เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏ เด•เดฃเตเดŸเต†เดคเตเดคเดฒเตเด•เตพ เดชเด™เตเด•เดฟเดŸเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดฎเดพเตผเด—เดฎเดพเดฃเต เดฎเตเด•เดณเดฟเดฒเต† เดตเดพเดšเด•เด‚. เด…เดตเดจเต†เดชเตเดชเต‹เดฒเต†, devops-เตฝ เด’เดŸเตเดŸเตเด‚ เดฎเต‹เดถเดฎเดฒเตเดฒเดพเดคเตเดค เดšเต†เดจเตเดจเดพเดฏ เด…เดฒเตเดฒเดพเดคเตเดคเดตเดฐเตเดฎเดพเดฏเดฟ เดชเด™เตเด•เดฟเดŸเตเด•. เดŽเดจเตเดฑเต† เด•เดฃเตเดŸเต†เดคเตเดคเดฒเตเด•เตพ เด†เดฐเต†เดฏเต†เด™เตเด•เดฟเดฒเตเด‚ เดธเดนเดพเดฏเดฟเดšเตเดšเดพเตฝ, เดžเดพเตป เดธเดจเตเดคเต‹เดทเดฟเด•เตเด•เตเด‚.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•