เช…เชฎเซ‡ เชชเซเชฒเช—เช‡เชจเซเชธ, SMS เช…เชฅเชตเชพ เชจเซ‹เช‚เชงเชฃเซ€ เชตเชฟเชจเชพ GKE เชฎเชพเช‚ เชœเชฎเชพเชตเชŸ เช•เชพเชฐเซเชฏ เชฌเชจเชพเชตเซ€เช เช›เซ€เช. เชšเชพเชฒเซ‹ เชœเซ‡เชจเช•เชฟเชจเซเชธเชจเชพ เชœเซ‡เช•เซ‡เชŸเชจเซ€ เชจเซ€เชšเซ‡ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช

เช† เชฌเชงเซเช‚ เชคเซเชฏเชพเชฐเซ‡ เชถเชฐเซ‚ เชฅเชฏเซเช‚ เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเชพเชฐเซ€ เชเช• เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ เชŸเซ€เชฎเชจเชพ เชŸเซ€เชฎ เชฒเซ€เชกเช เช…เชฎเชจเซ‡ เชคเซ‡เชฎเชจเซ€ เชจเชตเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพ เช•เชนเซเชฏเซเช‚, เชœเซ‡ เชเช• เชฆเชฟเชตเชธ เชชเชนเซ‡เชฒเชพ เช•เชจเซเชŸเซ‡เชจเชฐเชพเช‡เช เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€. เชฎเซ‡เช‚ เชคเซ‡เชจเซ‡ เชชเซ‹เชธเซเชŸ เช•เชฐเซเชฏเซเช‚. เชฒเช—เชญเช— 20 เชฎเชฟเชจเชฟเชŸ เชชเช›เซ€, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เชฎเชณเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซเชฏเชพเช‚ เชเช• เช–เซ‚เชฌ เชœ เชœเชฐเซ‚เชฐเซ€ เชตเชธเซเชคเซ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€. เชฎเซ‡เช‚ เชจเชตเซ€เช•เชฐเชฃ เช•เชฐเซเชฏเซเช‚. เชฌเซ€เชœเชพ เชฌเซ‡ เช•เชฒเชพเช• เชชเช›เซ€... เชธเชพเชฐเซเช‚, เชคเชฎเซ‡ เช…เชจเซเชฎเชพเชจ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ เช†เช—เชณ เชถเซเช‚ เชฅเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เชฅเชฏเซเช‚...

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

เชคเซ‡เชฅเซ€, เช† เชจเซ‹เช‚เชงเชฎเชพเช‚ เชนเซเช‚ เชคเชฎเชจเซ‡ เช•เชนเซ€เชถ เช•เซ‡ เชนเซเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชถเซ€เช–เซเชฏเซ‹:

  1. เชœเซ‡เชจเช•เชฟเชจเซเชธเชฎเชพเช‚ เชจเซ‹เช•เชฐเซ€เชฎเชพเช‚เชฅเซ€ เช…เชฅเชตเชพ เช…เชจเซเชฏ เชจเซ‹เช•เชฐเซ€เช“เชฎเชพเช‚เชฅเซ€ เช—เชคเชฟเชถเซ€เชฒ เชฐเซ€เชคเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‹;
  2. เชœเซ‡เชจเช•เชฟเชจเซเชธ เชเชœเชจเซเชŸ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเชพ เชจเซ‹เชกเชฎเชพเช‚เชฅเซ€ เช•เซเชฒเชพเช‰เชก เช•เชจเซเชธเซ‹เชฒ (เช•เซเชฒเชพเช‰เชก เชถเซ‡เชฒ) เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซ‹;
  3. Google Kubernetes Engine เชชเชฐ เชตเชฐเซเช•เชฒเซ‹เชกเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹.


เชนเช•เซ€เช•เชคเชฎเชพเช‚, เชนเซเช‚, เช…เชฒเชฌเชคเซเชค, เช•เช‚เชˆเช• เช…เช‚เชถเซ‡ เช•เชชเชŸเซ€ เช›เซเช‚. เชเชตเซเช‚ เชฎเชพเชจเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ Google เช•เซเชฒเชพเช‰เชกเชฎเชพเช‚ เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐเชจเซ‹ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซ‹ เชญเชพเช— เช›เซ‡, เช…เชจเซ‡ เชคเซ‡เชฅเซ€, เชคเชฎเซ‡ เชคเซ‡เชจเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช›เซ‹ เช…เชจเซ‡, เช…เชฒเชฌเชคเซเชค, เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ GCP เชเช•เชพเช‰เชจเซเชŸ เช›เซ‡. เชชเชฐเช‚เชคเซ เชคเซ‡ เช† เชจเซ‹เชŸ เชตเชฟเชถเซ‡ เชจเชฅเซ€.

เช† เชฎเชพเชฐเซ€ เช†เช—เชพเชฎเซ€ เชšเซ€เชŸ เชถเซ€เชŸ เช›เซ‡. เชนเซเช‚ เชซเช•เซเชค เชเช• เชœ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เช†เชตเซ€ เชจเซ‹เช‚เชงเซ‹ เชฒเช–เชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚: เชฎเชจเซ‡ เชเช• เชธเชฎเชธเซเชฏเชพเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชตเซ‹ เชชเชกเซเชฏเซ‹ เชนเชคเซ‹, เชฎเชจเซ‡ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชนเชฒ เช•เชฐเชตเซเช‚ เชคเซ‡ เช–เชฌเชฐ เชจ เชนเชคเซ€, เช‰เช•เซ‡เชฒ เชคเซˆเชฏเชพเชฐ-เชฎเซ‡เช‡เชก Google เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชจ เชนเชคเซ‹, เชคเซ‡เชฅเซ€ เชฎเซ‡เช‚ เชคเซ‡เชจเซ‡ เชญเชพเช—เซ‹เชฎเชพเช‚ เช—เซ‚เช—เชฒ เช•เชฐเซเชฏเซเช‚ เช…เชจเซ‡ เช†เช–เชฐเซ‡ เชธเชฎเชธเซเชฏเชพ เชนเชฒ เช•เชฐเซ€. เช…เชจเซ‡ เชคเซ‡เชฅเซ€ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚, เชœเซเชฏเชพเชฐเซ‡ เชนเซเช‚ เชญเซ‚เชฒเซ€ เชœเชพเช‰เช‚ เช•เซ‡ เชฎเซ‡เช‚ เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเซเชฏเซเช‚, เชคเซเชฏเชพเชฐเซ‡ เชฎเชพเชฐเซ‡ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซเชจเซ‡ เชŸเซเช•เชกเซ‡-เชŸเซเช•เชกเซ‡ เชซเชฐเซ€เชฅเซ€ เช—เซ‚เช—เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชเช•เชธเชพเชฅเซ‡ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€, เชนเซเช‚ เชฎเชพเชฐเซ€ เชœเชพเชคเชจเซ‡ เช†เชตเซ€ เชšเซ€เชŸ เชถเซ€เชŸเซเชธ เชฒเช–เซเช‚ เช›เซเช‚.

เชกเชฟเชธเช•เซเชฒเซ‡เชฎเชฐ: 1. เชญเซ‚เชฎเชฟเช•เชพ เชฎเชพเชŸเซ‡ เชจเซ‹เช‚เชง โ€œเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡โ€ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ เชถเซเชฐเซ‡เชทเซเช  เช…เชญเซเชฏเชพเชธ เชฒเชพเช—เซ เชชเชกเชคเซเช‚ เชจเชฅเซ€. เชŸเชฟเชชเซเชชเชฃเซ€เช“เชฎเชพเช‚ "เช† เชฐเซ€เชคเซ‡ เช•เชฐเชตเซเช‚ เชตเชงเซ เชธเชพเชฐเซเช‚ เชนเซ‹เชค" เชตเชฟเช•เชฒเซเชชเซ‹ เชตเชพเช‚เชšเซ€เชจเซ‡ เชฎเชจเซ‡ เช†เชจเช‚เชฆ เชฅเชฏเซ‹.
2. เชœเซ‹ เชจเซ‹เชŸเชจเชพ เชฒเชพเช—เซ เช•เชฐเซ‡เชฒเชพ เชญเชพเช—เชจเซ‡ เชฎเซ€เช เซเช‚ เชฎเชพเชจเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‹, เชฎเชพเชฐเซ€ เช…เช—เชพเช‰เชจเซ€ เชฌเชงเซ€ เชจเซ‹เช‚เชงเซ‹เชจเซ€ เชœเซ‡เชฎ, เช† เชเช• เชจเชฌเชณเซเช‚ เชฎเซ€เช เซเช‚ เชธเซ‹เชฒเซเชฏเซเชถเชจ เช›เซ‡.

เชœเซ‡เชจเช•เชฟเชจเซเชธเชฎเชพเช‚ เชœเซ‹เชฌ เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชจเซ‡ เช—เชคเชฟเชถเซ€เชฒ เชฐเซ€เชคเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เชนเซเช‚ เชคเชฎเชพเชฐเชพ เชชเซเชฐเชถเซเชจเชจเซ€ เช†เช—เชพเชนเซ€ เช•เชฐเซเช‚ เช›เซเช‚: เช—เชคเชฟเชถเซ€เชฒ เชœเซ‹เชฌ เช…เชชเชกเซ‡เชŸเชจเซ‹ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชถเซเช‚ เชธเช‚เชฌเช‚เชง เช›เซ‡? เชธเซเชŸเซเชฐเชฟเช‚เช— เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเชจเซเช‚ เชฎเซ‚เชฒเซเชฏ เชœเชพเชคเซ‡ เชฆเชพเช–เชฒ เช•เชฐเซ‹ เช…เชจเซ‡ เชคเชฎเซ‡ เชœเชพเช“ เช›เซ‹!

เชนเซเช‚ เชœเชตเชพเชฌ เช†เชชเซเช‚ เช›เซเช‚: เชนเซเช‚ เช–เชฐเซ‡เช–เชฐ เช†เชณเชธเซ เช›เซเช‚, เชœเซเชฏเชพเชฐเซ‡ เชคเซ‡เช“ เชซเชฐเชฟเชฏเชพเชฆ เช•เชฐเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชฎเชจเซ‡ เชคเซ‡ เช—เชฎเชคเซเช‚ เชจเชฅเซ€: เชฎเซ€เชถเชพ, เชœเชฎเชพเชตเชŸ เชคเซ‚เชŸเซ€ เชฐเชนเซ€ เช›เซ‡, เชฌเชงเซเช‚ เชธเชฎเชพเชชเซเชค เชฅเชˆ เช—เชฏเซเช‚ เช›เซ‡! เชคเชฎเซ‡ เชœเซ‹เชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‹, เช…เชจเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชŸเชพเชธเซเช• เชฒเซ‹เชจเซเชš เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเชจเชพ เชฎเซ‚เชฒเซเชฏเชฎเชพเช‚ เชŸเชพเชˆเชชเซ‹ เช›เซ‡. เชคเซ‡เชฅเซ€, เชนเซเช‚ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเซ€ เช…เชธเชฐเช•เชพเชฐเช• เชฐเซ€เชคเซ‡ เชฌเชงเซเช‚ เช•เชฐเชตเชพเชจเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเซเช‚ เช›เซเช‚. เชœเซ‹ เชชเชธเช‚เชฆ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เช†เชชเซ€เชจเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‡ เชธเซ€เชงเชพ เชกเซ‡เชŸเชพ เชฆเชพเช–เชฒ เช•เชฐเชคเชพ เช…เชŸเช•เชพเชตเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชนเซ‹เชฏ, เชคเซ‹ เชนเซเช‚ เชชเชธเช‚เชฆเช—เซ€ เช—เซ‹เช เชตเซเช‚ เช›เซเช‚.

เชฏเซ‹เชœเชจเชพ เช† เช›เซ‡: เช…เชฎเซ‡ เชœเซ‡เชจเช•เชฟเชจเซเชธเชฎเชพเช‚ เชเช• เชœเซ‹เชฌ เชฌเชจเชพเชตเซ€เช เช›เซ€เช, เชœเซ‡เชฎเชพเช‚, เชฒเซ‹เช‚เชš เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ, เช…เชฎเซ‡ เชธเซ‚เชšเชฟเชฎเชพเช‚เชฅเซ€ เชเช• เชธเช‚เชธเซเช•เชฐเชฃ เชชเชธเช‚เชฆ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช, เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‡ เชชเชธเชพเชฐ เช•เชฐเซ‡เชฒเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชฎเชพเชŸเซ‡ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช ENV, เชชเช›เซ€ เชคเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€เชฎเชพเช‚ เชงเช•เซ‡เชฒเซ‡ เช›เซ‡. เชชเช›เซ€ เชคเซเชฏเชพเช‚เชฅเซ€ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‡ เช•เซเชฏเซเชฌเชฐ เชคเชฐเซ€เช•เซ‡ เชฒเซ‹เชจเซเชš เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชตเชฐเซเช•เชฒเซ‹เชก เชœเซ‹เชฌเชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชธเชพเชฅเซ‡.

เช…เชฎเซ‡ เชœเซ‡เชจเช•เชฟเชจเซเชธเชฎเชพเช‚ เชจเซ‹เช•เชฐเซ€ เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเชถเซเช‚ เชจเชนเซ€เช‚, เช† เชตเชฟเชทเชฏเชจเซ€ เชฌเชนเชพเชฐ เช›เซ‡. เช…เชฎเซ‡ เชงเชพเชฐเซ€เชถเซเช‚ เช•เซ‡ เช•เชพเชฐเซเชฏ เชคเซˆเชฏเชพเชฐ เช›เซ‡. เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เชธเชพเชฅเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‡เชฒเซ€ เชธเซ‚เชšเชฟเชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเชจเซ‡ เชฌเซ‡ เชตเชธเซเชคเซเช“เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡: เชชเซเชฐเชพเชฏเซ‹เชฐเซ€ เชฎเชพเชจเซเชฏ เชธเช‚เชธเซเช•เชฐเชฃ เชจเช‚เชฌเชฐเซ‹ เชธเชพเชฅเซ‡เชจเซ€ เชตเชฐเซเชคเชฎเชพเชจ เชธเซเชฐเซ‹เชค เชธเซ‚เชšเชฟ เช…เชจเซ‡ เชšเชฒ เชชเชธเช‚เชฆเช—เซ€ เชชเชฐเชฟเชฎเชพเชฃ เช•เชพเชฐเซเชฏ เชฎเชพเช‚. เช…เชฎเชพเชฐเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚, เชšเชฒเชจเซ‡ เชจเชพเชฎ เช†เชชเชตเชพ เชฆเซ‹ BUILD_VERSION, เช…เชฎเซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชตเชฟเช—เชคเชตเชพเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ€เชถเซเช‚ เชจเชนเซ€เช‚. เชชเชฐเช‚เชคเซ เชšเชพเชฒเซ‹ เชธเซเชฐเซ‹เชค เชธเซ‚เชšเชฟ เชชเชฐ เชจเชœเซ€เช•เชฅเซ€ เชจเชœเชฐ เช•เชฐเซ€เช.

เชคเซเชฏเชพเช‚ เช˜เชฃเชพ เชฌเชงเชพ เชตเชฟเช•เชฒเซเชชเซ‹ เชจเชฅเซ€. เชฌเซ‡ เชตเชธเซเชคเซเช“ เชคเชฐเชค เชœ เชงเซเชฏเชพเชจเชฎเชพเช‚ เช†เชตเซ€:

  • เชฐเซ€เชฎเซ‹เชŸ เชเช•เซเชธเซ‡เชธ API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เชœเซ‡ เชœเซ‡เชจเช•เชฟเชจเซเชธ เชคเซ‡เชจเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‡ เช“เชซเชฐ เช•เชฐเซ‡ เช›เซ‡;
  • เชฐเชฟเชฎเซ‹เชŸ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€ เชซเซ‹เชฒเซเชกเชฐเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€เชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ‹ (เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เช† เชœเซ‡เชซเซเชฐเซ‹เช— เช†เชฐเซเชŸเชฟเชซเซ‡เช•เซเชŸเชฐเซ€ เช›เซ‡, เชœเซ‡ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชจเชฅเซ€).

เชœเซ‡เชจเช•เชฟเชจเซเชธ เชฐเชฟเชฎเซ‹เชŸ เชเช•เซเชธเซ‡เชธ 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/

เช†เช—เชณ, เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชชเชธเช‚เชฆเช—เซ€ เช›เซ‡ เช•เซ‡ เช†เช‰เชŸเชชเซเชŸ เช•เชฏเชพ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ เชฎเซ‡เชณเชตเชตเซเช‚. เชšเชพเชฒเซ‹ XML เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเซ€เช, เช•เชพเชฐเชฃ เช•เซ‡ API เชซเช•เซเชค เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชซเชฟเชฒเซเชŸเชฐเชฟเช‚เช—เชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เชšเชพเชฒเซ‹ เชซเช•เซเชค เชคเชฎเชพเชฎ เชœเซ‹เชฌ เชฐเชจเชจเซ€ เชธเซ‚เชšเชฟ เชฎเซ‡เชณเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เช. เช…เชฎเชจเซ‡ เชซเช•เซเชค เชเชธเซ‡เชฎเซเชฌเชฒเซ€เชจเชพ เชจเชพเชฎเชฎเชพเช‚ เชฐเชธ เช›เซ‡ (เชกเชฟเชธเซเชชเซเชฒเซ‡ เชจเชพเชฎ) เช…เชจเซ‡ เชคเซ‡เชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ (เชชเชฐเชฟเชฃเชพเชฎ):

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

เชธเชซเชณเชจเซ€ เชฏเชพเชฆเซ€เชจเซ‹ เชธเซเช•เซเชฐเซ€เชจเชถเซ‹เชŸ
เช…เชฎเซ‡ เชชเซเชฒเช—เช‡เชจเซเชธ, SMS เช…เชฅเชตเชพ เชจเซ‹เช‚เชงเชฃเซ€ เชตเชฟเชจเชพ GKE เชฎเชพเช‚ เชœเชฎเชพเชตเชŸ เช•เชพเชฐเซเชฏ เชฌเชจเชพเชตเซ€เช เช›เซ€เช. เชšเชพเชฒเซ‹ เชœเซ‡เชจเช•เชฟเชจเซเชธเชจเชพ เชœเซ‡เช•เซ‡เชŸเชจเซ€ เชจเซ€เชšเซ‡ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช

เชฌเชธ, เชฎเชพเชคเซเชฐ เช†เชจเช‚เชฆ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ เช–เชพเชคเชฐเซ€ เช•เชฐเซ€เช เช•เซ‡ เชซเชฟเชฒเซเชŸเชฐ เช†เชชเชฃเชจเซ‡ เช›เซ‡เชคเชฐเชคเซเช‚ เชจเชฅเซ€ (เชซเชฟเชฒเซเชŸเชฐเซเชธ เช•เซเชฏเชพเชฐเซ‡เชฏ เชœเซ‚เช เซเช‚ เชฌเซ‹เชฒเชคเชพ เชจเชฅเซ€!) เช…เชจเซ‡ "เช…เชธเชซเชณ" เชฒเซ‹เช•เซ‹เชจเซ€ เชธเซ‚เชšเชฟ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ€เช:

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

เชฌเชฟเชจ-เชธเชซเชณ เชฒเซ‹เช•เซ‹เชจเซ€ เชธเซ‚เชšเชฟเชจเซ‹ เชธเซเช•เซเชฐเซ€เชจเชถเซ‹เชŸ
เช…เชฎเซ‡ เชชเซเชฒเช—เช‡เชจเซเชธ, SMS เช…เชฅเชตเชพ เชจเซ‹เช‚เชงเชฃเซ€ เชตเชฟเชจเชพ GKE เชฎเชพเช‚ เชœเชฎเชพเชตเชŸ เช•เชพเชฐเซเชฏ เชฌเชจเชพเชตเซ€เช เช›เซ€เช. เชšเชพเชฒเซ‹ เชœเซ‡เชจเช•เชฟเชจเซเชธเชจเชพ เชœเซ‡เช•เซ‡เชŸเชจเซ€ เชจเซ€เชšเซ‡ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช

เชฆเซ‚เชฐเชธเซเชฅ เชธเชฐเซเชตเชฐ เชชเชฐ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚เชฅเซ€ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ€ เชธเซ‚เชšเชฟ

เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เชฎเซ‡เชณเชตเชตเชพเชจเซ€ เชฌเซ€เชœเซ€ เชฐเซ€เชค เช›เซ‡. เชฎเชจเซ‡ เชคเซ‡ เชœเซ‡เชจเช•เชฟเชจเซเชธ 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[^/]+' )

เชœเซ‡เชจเช•เชฟเชจเซเชธเชฎเชพเช‚ เชœเซ‹เชฌเซเชธ เช…เชจเซ‡ เชœเซ‹เชฌ เช•เชจเซเชซเชฟเช—เชฐเซ‡เชถเชจ เชซเชพเช‡เชฒ เชธเซ‡เชŸ เช•เชฐเชตเซ€

เช…เชฎเซ‡ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ€ เชธเซ‚เชšเชฟเชจเซ‹ เชธเซเชฐเซ‹เชค เชถเซ‹เชงเซ€ เช•เชพเชขเซเชฏเซ‹. เชšเชพเชฒเซ‹ เชนเชตเซ‡ เชชเชฐเชฟเชฃเชพเชฎเซ€ เชธเซ‚เชšเชฟเชจเซ‡ เช•เชพเชฐเซเชฏเชฎเชพเช‚ เชธเชพเชฎเซ‡เชฒ เช•เชฐเซ€เช. เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡, เชธเซเชชเชทเซเชŸ เช‰เช•เซ‡เชฒ เช เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฌเชฟเชฒเซเชก เช•เชพเชฐเซเชฏเชฎเชพเช‚ เชเช• เชชเช—เชฒเซเช‚ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ‹ เชนเชคเซ‹. เชœเซ‹ เชชเชฐเชฟเชฃเชพเชฎ "เชธเชซเชณเชคเชพ" เชนเชคเซเช‚ เชคเซ‹ เชœเซ‡ เชชเช—เชฒเซเช‚ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เช•เชพเชฐเซเชฏ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เช–เซ‹เชฒเซ‹ เช…เชจเซ‡ เช–เซ‚เชฌ เชœ เชคเชณเชฟเชฏเซ‡ เชธเซเช•เซเชฐเซ‹เชฒ เช•เชฐเซ‹. เชฌเชŸเชจเซ‹ เชชเชฐ เช•เซเชฒเชฟเช• เช•เชฐเซ‹: เชฌเชฟเชฒเซเชก เชชเช—เชฒเซเช‚ เช‰เชฎเซ‡เชฐเซ‹ -> เชถเชฐเชคเซ€ เชชเช—เชฒเซเช‚ (เชธเชฟเช‚เช—เชฒ). เชธเซเชŸเซ‡เชช เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชฎเชพเช‚, เชถเชฐเชค เชชเชธเช‚เชฆ เช•เชฐเซ‹ เชตเชฐเซเชคเชฎเชพเชจ เชฌเชฟเชฒเซเชก เชธเซเชฅเชฟเชคเชฟ, เชฎเซ‚เชฒเซเชฏ เชธเซ‡เชŸ เช•เชฐเซ‹ เชธเชซเชณเชคเชพ, เชœเซ‹ เชธเชซเชณ เชฅเชพเชฏ เชคเซ‹ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เช•เซเชฐเชฟเชฏเชพ เชถเซ‡เชฒ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ‹.

เช…เชจเซ‡ เชนเชตเซ‡ เชฎเชœเชพ เชญเชพเช—. เชœเซ‡เชจเช•เชฟเชจเซเชธ เชœเซ‹เชฌ เช•เชจเซเชซเชฟเช—เชฐเซ‡เชถเชจเชจเซ‡ เชซเชพเช‡เชฒเซ‹เชฎเชพเช‚ เชธเซเชŸเซ‹เชฐ เช•เชฐเซ‡ เช›เซ‡. XML เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚. เชฐเชธเซเชคเชพเชฎเชพเช‚ http://ะฟัƒั‚ัŒ-ะดะพ-ะทะฐะดะฐะฝะธั/config.xml เชคเชฆเชจเซเชธเชพเชฐ, เชคเชฎเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒเชจเซ‡ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชคเซ‡เชจเซ‡ เช†เชตเชถเซเชฏเช•เชคเชพ เชฎเซเชœเชฌ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชœเซเชฏเชพเช‚เชฅเซ€ เชฎเชณเซ€ เชคเซเชฏเชพเช‚ เชคเซ‡เชจเซ‡ เชชเชพเช›เซเช‚ เชฎเซ‚เช•เซ€ เชถเช•เซ‹ เช›เซ‹.

เชฏเชพเชฆ เชฐเชพเช–เซ‹, เช…เชฎเซ‡ เช‰เชชเชฐ เชธเช‚เชฎเชค เชฅเชฏเชพ เช›เซ€เช เช•เซ‡ เช…เชฎเซ‡ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เชฎเชพเชŸเซ‡ เชเช• เชชเชฐเชฟเชฎเชพเชฃ เชฌเชจเชพเชตเซ€เชถเซเช‚ BUILD_VERSION?

เชšเชพเชฒเซ‹ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเชˆเชฒ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ€ เช…เช‚เชฆเชฐ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช. เชซเช•เซเชค เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‡ เชชเชฐเชฟเชฎเชพเชฃ เชธเซเชฅเชพเชจเซ‡ เช›เซ‡ เช…เชจเซ‡ เช‡เชšเซเช›เชฟเชค เชชเซเชฐเช•เชพเชฐเชจเซเช‚ เช›เซ‡.

เชธเซเชชเซ‹เช‡เชฒเชฐ เชนเซ‡เช เชณ เชธเซเช•เซเชฐเซ€เชจเชถเซ‰เชŸ.

เชคเชฎเชพเชฐเซเช‚ config.xml เชซเซเชฐเซ‡เช—เชฎเซ‡เชจเซเชŸ เชธเชฎเชพเชจ เชฆเซ‡เช–เชพเชตเซเช‚ เชœเซ‹เชˆเช. เชธเชฟเชตเชพเชฏ เช•เซ‡ เชชเชธเช‚เชฆเช—เซ€เชจเชพ เชคเชคเซเชตเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เชนเชœเซ€ เช–เซ‚เชŸเซ‡ เช›เซ‡
เช…เชฎเซ‡ เชชเซเชฒเช—เช‡เชจเซเชธ, SMS เช…เชฅเชตเชพ เชจเซ‹เช‚เชงเชฃเซ€ เชตเชฟเชจเชพ GKE เชฎเชพเช‚ เชœเชฎเชพเชตเชŸ เช•เชพเชฐเซเชฏ เชฌเชจเชพเชตเซ€เช เช›เซ€เช. เชšเชพเชฒเซ‹ เชœเซ‡เชจเช•เชฟเชจเซเชธเชจเชพ เชœเซ‡เช•เซ‡เชŸเชจเซ€ เชจเซ€เชšเซ‡ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช

เชถเซเช‚ เชคเชฎเชจเซ‡ เช–เชพเชคเชฐเซ€ เช›เซ‡? เชฌเชธ, เชšเชพเชฒเซ‹ เชเช• เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฒเช–เซ€เช เชœเซ‡ เชฌเชฟเชฒเซเชก เชธเชซเชณ เชฅเชพเชฏ เชคเซ‹ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซเช•เชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.
เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เชฎเซ‡เชณเชตเชถเซ‡, เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชถเซ‡, เช…เชฎเชจเซ‡ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เชคเซเชฏเชพเช‚ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เชฒเช–เชถเซ‡ เช…เชจเซ‡ เชชเช›เซ€ เชคเซ‡เชจเซ‡ เชชเชพเช›เซเช‚ เชฎเซ‚เช•เชถเซ‡. เชนเชพ. เชคเซ‡ เชธเชพเชšเซเช‚ เช›เซ‡. XML เชฎเชพเช‚ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เชฒเช–เซ‹ เชœเซเชฏเชพเช‚ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เช›เซ‡ (เชธเซเช•เซเชฐเซ€เชชเซเชŸเชจเชพ เชชเซเชฐเชฅเชฎ เชฒเซ‹เช‚เชš เชชเช›เซ€ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เชนเชถเซ‡). เชนเซเช‚ เชœเชพเชฃเซเช‚ เช›เซเช‚ เช•เซ‡ เชตเชฟเชถเซเชตเชฎเชพเช‚ เชนเชœเซ€ เชชเชฃ เชจเชฟเชฏเชฎเชฟเชค เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเชจเชพ เช‰เช—เซเชฐ เชšเชพเชนเช•เซ‹ เช›เซ‡. เชนเซเช‚ เชคเซ‡เชฎเชจเซ‹ เชจเชฅเซ€. เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹ xmlstarler เชฎเชถเซ€เชจ เชชเชฐ เชœเซเชฏเชพเช‚ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ sed เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ 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

เชธเชฟเชฆเซเชงเชพเช‚เชคเชฎเชพเช‚, เชœเซ‹ เชคเชฎเซ‡ เช‰เชชเชฐเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹เชจเชพ เช†เชงเชพเชฐเซ‡ เชฒเช–เซ‡เชฒเชพ เช•เซ‹เชกเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซเชฏเซเช‚ เช›เซ‡, เชคเซ‹ เชœเชฎเชพเชตเชŸ เช•เชพเชฐเซเชฏเชฎเชพเช‚ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เชธเชพเชฅเซ‡ เชกเซเชฐเซ‹เชช-เชกเชพเช‰เชจ เชธเซ‚เชšเชฟ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช. เชคเซ‡ เชธเซเชชเซ‹เชˆเชฒเชฐ เชนเซ‡เช เชณเชจเชพ เชธเซเช•เซเชฐเซ€เชจเชถเซ‹เชŸเชฎเชพเช‚ เชœเซ‡เชตเซเช‚ เช›เซ‡.

เช†เชตเซƒเชคเซเชคเชฟเช“เชจเซ€ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชชเซ‚เชฐเซเชฃ เช•เชฐเซ‡เชฒเซ€ เชธเซ‚เชšเชฟ
เช…เชฎเซ‡ เชชเซเชฒเช—เช‡เชจเซเชธ, SMS เช…เชฅเชตเชพ เชจเซ‹เช‚เชงเชฃเซ€ เชตเชฟเชจเชพ GKE เชฎเชพเช‚ เชœเชฎเชพเชตเชŸ เช•เชพเชฐเซเชฏ เชฌเชจเชพเชตเซ€เช เช›เซ€เช. เชšเชพเชฒเซ‹ เชœเซ‡เชจเช•เชฟเชจเซเชธเชจเชพ เชœเซ‡เช•เซ‡เชŸเชจเซ€ เชจเซ€เชšเซ‡ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช

เชœเซ‹ เชฌเชงเซเช‚ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‡ เช•เซ‹เชชเซ€-เชชเซ‡เชธเซเชŸ เช•เชฐเซ‹ เชถเซ‡เชฒ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ‹ เช…เชจเซ‡ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชธเชพเชšเชตเซ‹.

เช•เซเชฒเชพเช‰เชก เชถเซ‡เชฒ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เชฅเชˆ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เช•เชฒเซ‡เช•เซเชŸเชฐเซเชธ เช›เซ‡. เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชกเชฟเชฒเชฟเชตเชฐเซ€ เชŸเซ‚เชฒ เช…เชจเซ‡ เช•เชจเซเชซเชฟเช—เชฐเซ‡เชถเชจ เชฎเซ‡เชจเซ‡เชœเชฐ เชคเชฐเซ€เช•เซ‡ Ansible เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช. เชคเชฆเชจเซเชธเชพเชฐ, เชœเซเชฏเชพเชฐเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชตเชพเชค เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชคเซเชฐเชฃ เชตเชฟเช•เชฒเซเชชเซ‹ เชงเซเชฏเชพเชจเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡: เชกเซ‹เช•เชฐเชฎเชพเช‚ เชกเซ‹เช•เชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹, เชเชจเซเชธเชฟเชฌเชฒ เชšเชพเชฒเชคเชพ เชฎเชถเซ€เชจ เชชเชฐ เชกเซ‹เช•เชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹ เช…เชฅเชตเชพ เช•เซเชฒเชพเช‰เชก เช•เชจเซเชธเซ‹เชฒเชฎเชพเช‚ เช•เชจเซเชŸเซ‡เชจเชฐ เชฌเชจเชพเชตเซ‹. เช…เชฎเซ‡ เช† เชฒเซ‡เช–เชฎเชพเช‚ เชœเซ‡เชจเช•เชฟเชจเซเชธ เชฎเชพเชŸเซ‡เชจเชพ เชชเซเชฒเช—เช‡เชจเซเชธ เชตเชฟเชถเซ‡ เชฎเซŒเชจ เชฐเชนเซ‡เชตเชพ เชธเช‚เชฎเชค เชฅเชฏเชพ เช›เซ€เช. เชฏเชพเชฆ เช›เซ‡?

เชฎเซ‡เช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚: เชธเชพเชฐเซเช‚, เช•เชพเชฐเชฃ เช•เซ‡ เช•เซเชฒเชพเช‰เชก เช•เชจเซเชธเซ‹เชฒเชฎเชพเช‚ เช•เชจเซเชŸเซ‡เชจเชฐ "เชฌเซ‰เช•เซเชธเชจเซ€ เชฌเชนเชพเชฐ" เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชถเชพ เชฎเชพเชŸเซ‡ เชšเชฟเช‚เชคเชพ เช•เชฐเชตเซ€? เชคเซ‡เชจเซ‡ เชธเซเชตเชšเซเช› เชฐเชพเช–เซ‹ เชจเซ‡? เชนเซเช‚ เช•เซเชฒเชพเช‰เชก เช•เชจเซเชธเซ‹เชฒเชฎเชพเช‚ เชœเซ‡เชจเช•เชฟเชจเซเชธ เช•เชจเซเชŸเซ‡เชจเชฐ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚, เช…เชจเซ‡ เชชเช›เซ€ เชคเซ‡เชฎเชจเซ‡ เชคเซเชฏเชพเช‚เชฅเซ€ เช•เซเชฏเซเชฌเชฐเชฎเชพเช‚ เชฒเซ‹เช‚เชš เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚. เชตเชงเซเชฎเชพเช‚, Google เชคเซ‡เชจเซ€ เชˆเชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐเชฎเชพเช‚ เช–เซ‚เชฌ เชœ เชธเชฎเซƒเชฆเซเชง เชšเซ‡เชจเชฒเซ‹ เชงเชฐเชพเชตเซ‡ เช›เซ‡, เชœเซ‡ เชœเชฎเชพเชตเชŸเชจเซ€ เชเชกเชช เชชเชฐ เชซเชพเชฏเชฆเชพเช•เชพเชฐเช• เช…เชธเชฐ เช•เชฐเชถเซ‡.

เช•เซเชฒเชพเช‰เชก เช•เชจเซเชธเซ‹เชฒเชฅเซ€ เช•เชจเซ‡เช•เซเชŸ เชฅเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชฌเซ‡ เชตเชธเซเชคเซเช“เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡: gCloud เช…เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช…เชงเชฟเช•เชพเชฐเซ‹ Google Cloud API VM เช‰เชฆเชพเชนเชฐเชฃ เชฎเชพเชŸเซ‡ เช•เซ‡ เชœเซ‡เชฎเชพเช‚เชฅเซ€ เช† เชœ เชœเซ‹เชกเชพเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชœเซ‡เช“ เช—เซ‚เช—เชฒ เช•เซเชฒเชพเช‰เชกเชฅเซ€ เชฌเชฟเชฒเช•เซเชฒ เช•เชจเซ‡เช•เซเชŸ เชจ เชฅเชตเชพเชจเซเช‚ เชตเชฟเชšเชพเชฐเซ‡ เช›เซ‡
Google เชคเซ‡เชจเซ€ เชธเซ‡เชตเชพเช“เชฎเชพเช‚ เช‡เชจเซเชŸเชฐเซ‡เช•เซเชŸเชฟเชต เช…เชงเชฟเช•เซƒเชคเชคเชพเชจเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเชตเชพเชจเซ€ เชถเช•เซเชฏเชคเชพเชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เช† เชคเชฎเชจเซ‡ เช•เซ‹เชซเซ€ เชฎเชถเซ€เชจเชฎเชพเช‚เชฅเซ€ เชชเชฃ เช•เชจเซเชธเซ‹เชฒ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเชถเซ‡, เชœเซ‹ เชคเซ‡ *nix เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เชนเซ‹เชฏ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เช•เชจเซเชธเซ‹เชฒ เชนเซ‹เชฏ.

เชœเซ‹ เชฎเชจเซ‡ เช† เชจเซ‹เช‚เชงเชจเชพ เชฎเชพเชณเช–เชพเชฎเชพเช‚ เช† เชฎเซเชฆเซเชฆเชพเชจเซ‡ เชตเชงเซ เชตเชฟเช—เชคเชตเชพเชฐ เช†เชตเชฐเซ€ เชฒเซ‡เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ, เชคเซ‹ เชŸเชฟเชชเซเชชเชฃเซ€เช“เชฎเชพเช‚ เชฒเช–เซ‹. เชœเซ‹ เช…เชฎเชจเซ‡ เชชเซ‚เชฐเชคเชพ เชฎเชค เชฎเชณเชถเซ‡, เชคเซ‹ เชนเซเช‚ เช† เชตเชฟเชทเชฏ เชชเชฐ เช…เชชเชกเซ‡เชŸ เชฒเช–เซ€เชถ.

เช…เชงเชฟเช•เชพเชฐเซ‹ เช†เชชเชตเชพเชจเซ‹ เชธเซŒเชฅเซ€ เชธเชนเซ‡เชฒเซ‹ เชฐเชธเซเชคเซ‹ เชตเซ‡เชฌ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชฆเซเชตเชพเชฐเชพ เช›เซ‡.

  1. VM เช‰เชฆเชพเชนเชฐเชฃเชจเซ‡ เชฐเซ‹เช•เซ‹ เช•เซ‡ เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชคเชฎเซ‡ เชชเช›เซ€เชฅเซ€ เช•เซเชฒเชพเช‰เชก เช•เชจเซเชธเซ‹เชฒ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เชฅเชถเซ‹.
  2. เชฆเชพเช–เชฒเชพเชจเซ€ เชตเชฟเช—เชคเซ‹ เช–เซ‹เชฒเซ‹ เช…เชจเซ‡ เช•เซเชฒเชฟเช• เช•เชฐเซ‹ เชธเซเชงเชพเชฐเซ‹.
  3. เชชเซƒเชทเซเช เชจเชพ เช–เซ‚เชฌ เชœ เชคเชณเชฟเชฏเซ‡, เช‡เชจเซเชธเซเชŸเชจเซเชธ เชเช•เซเชธเซ‡เชธ เชธเซเช•เซ‹เชช เชชเชธเช‚เชฆ เช•เชฐเซ‹ เชคเชฎเชพเชฎ เช•เซเชฒเชพเช‰เชก API เชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชเช•เซเชธเซ‡เชธ.

    เชธเซเช•เซเชฐเซ€เชจเชถเซ‹เชŸ
    เช…เชฎเซ‡ เชชเซเชฒเช—เช‡เชจเซเชธ, SMS เช…เชฅเชตเชพ เชจเซ‹เช‚เชงเชฃเซ€ เชตเชฟเชจเชพ GKE เชฎเชพเช‚ เชœเชฎเชพเชตเชŸ เช•เชพเชฐเซเชฏ เชฌเชจเชพเชตเซ€เช เช›เซ€เช. เชšเชพเชฒเซ‹ เชœเซ‡เชจเช•เชฟเชจเซเชธเชจเชพ เชœเซ‡เช•เซ‡เชŸเชจเซ€ เชจเซ€เชšเซ‡ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช

  4. เชคเชฎเชพเชฐเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชธเชพเชšเชตเซ‹ เช…เชจเซ‡ เชฆเชพเช–เชฒเซ‹ เชฒเซ‹เช‚เชš เช•เชฐเซ‹.

เชเช•เชตเชพเชฐ VM เชฒเซ‹เชก เช•เชฐเชตเชพเชจเซเช‚ เชธเชฎเชพเชชเซเชค เช•เชฐเซ€ เชฒเซ‡, เชชเช›เซ€ เชคเซ‡เชจเซ‡ SSH เชฆเซเชตเชพเชฐเชพ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซ‹ เช…เชจเซ‡ เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ เช•เซ‡ เช•เชจเซ‡เช•เซเชถเชจ เชญเซ‚เชฒ เชตเชฟเชจเชพ เชฅเชพเชฏ เช›เซ‡. เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹:

gcloud alpha cloud-shell ssh

เชธเชซเชณ เช•เชจเซ‡เช•เซเชถเชจ เช•เช‚เชˆเช• เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡
เช…เชฎเซ‡ เชชเซเชฒเช—เช‡เชจเซเชธ, SMS เช…เชฅเชตเชพ เชจเซ‹เช‚เชงเชฃเซ€ เชตเชฟเชจเชพ GKE เชฎเชพเช‚ เชœเชฎเชพเชตเชŸ เช•เชพเชฐเซเชฏ เชฌเชจเชพเชตเซ€เช เช›เซ€เช. เชšเชพเชฒเซ‹ เชœเซ‡เชจเช•เชฟเชจเซเชธเชจเชพ เชœเซ‡เช•เซ‡เชŸเชจเซ€ เชจเซ€เชšเซ‡ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช

GKE เชฎเชพเช‚ เชœเชฎเชพเชตเชŸ เช•เชฐเซ‹

เช…เชฎเซ‡ IaC (เช•เซ‹เชก เชคเชฐเซ€เช•เซ‡ เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐ) เชชเชฐ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชธเซเชตเชฟเชš เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฆเชฐเซ‡เช• เชธเช‚เชญเชตเชฟเชค เชฐเซ€เชคเซ‡ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เชนเซ‹เชตเชพเชฅเซ€, เช…เชฎเชพเชฐเซ€ เชกเซ‹เช•เชฐ เชซเชพเช‡เชฒเซ‹ Git เชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เช›เซ‡. เช† เชเช• เชคเชฐเชซ เช›เซ‡. เช…เชจเซ‡ kubernetes เชฎเชพเช‚ เชœเชฎเชพเชตเชŸ yaml เชซเชพเช‡เชฒ เชฆเซเชตเชพเชฐเชพ เชตเชฐเซเชฃเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชซเช•เซเชค เช† เช•เชพเชฐเซเชฏ เชฆเซเชตเชพเชฐเชพ เชฅเชพเชฏ เช›เซ‡, เชœเซ‡ เชชเซ‹เชคเซ‡ เชชเชฃ เช•เซ‹เชก เชœเซ‡เชตเซเช‚ เช›เซ‡. เช† เชฌเซ€เชœเซ€ เชฌเชพเชœเซเชฅเซ€ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชฎเชพเชฐเซ‹ เชฎเชคเชฒเชฌ, เชฏเซ‹เชœเชจเชพ เช† เช›เซ‡:

  1. เช†เชชเชฃเซ‡ เชšเชฒเซ‹เชจเซ€ เช•เชฟเช‚เชฎเชคเซ‹ เชฒเชˆเช เช›เซ€เช BUILD_VERSION เช…เชจเซ‡, เชตเซˆเช•เชฒเซเชชเชฟเช• เชฐเซ€เชคเซ‡, เชšเชฒเซ‹เชจเซ€ เช•เชฟเช‚เชฎเชคเซ‹ เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชถเซ‡ ENV.
  2. เช—เชฟเชŸเชฎเชพเช‚เชฅเซ€ เชกเซ‹เช•เชฐเชซเชพเช‡เชฒ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‹.
  3. เชœเชฎเชพเชตเชŸ เชฎเชพเชŸเซ‡ yaml เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‹.
  4. เช…เชฎเซ‡ เช† เชฌเช‚เชจเซ‡ เชซเชพเช‡เชฒเซ‹เชจเซ‡ scp เชฆเซเชตเชพเชฐเชพ เช•เซเชฒเชพเช‰เชก เช•เชจเซเชธเซ‹เชฒ เชชเชฐ เช…เชชเชฒเซ‹เชก เช•เชฐเซ€เช เช›เซ€เช.
  5. เช…เชฎเซ‡ เชคเซเชฏเชพเช‚ เชเช• เช•เชจเซเชŸเซ‡เชจเชฐ เชฌเชจเชพเชตเซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€เชฎเชพเช‚ เชฆเชฌเชพเชฃ เช•เชฐเซ€เช เช›เซ€เช
  6. เช…เชฎเซ‡ เช•เซเชฏเซเชฌเชฐ เชชเชฐ เชฒเซ‹เชก เชกเชฟเชชเซเชฒเซ‹เชฏเชฎเซ‡เชจเซเชŸ เชซเชพเช‡เชฒ เชฒเชพเช—เซ เช•เชฐเซ€เช เช›เซ€เช.

เชšเชพเชฒเซ‹ เชตเชงเซ เชšเซ‹เช•เซเช•เชธ เชฌเชจเซ€เช. เชเช•เชตเชพเชฐ เช…เชฎเซ‡ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚ ENV, เชชเช›เซ€ เชงเชพเชฐเซ‹ เช•เซ‡ เช†เชชเชฃเซ‡ เชฌเซ‡ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹ เชชเชธเชพเชฐ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡: PARAM1 ะธ PARAM2. เช…เชฎเซ‡ เชœเชฎเชพเชตเชŸ เชฎเชพเชŸเซ‡ เชคเซ‡เชฎเชจเซเช‚ เช•เชพเชฐเซเชฏ เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช, เชชเซเชฐเช•เชพเชฐ - เชถเชฌเซเชฆเชฎเชพเชณเชพ เชชเชฐเชฟเชฎเชพเชฃ.

เชธเซเช•เซเชฐเซ€เชจเชถเซ‹เชŸ
เช…เชฎเซ‡ เชชเซเชฒเช—เช‡เชจเซเชธ, SMS เช…เชฅเชตเชพ เชจเซ‹เช‚เชงเชฃเซ€ เชตเชฟเชจเชพ GKE เชฎเชพเช‚ เชœเชฎเชพเชตเชŸ เช•เชพเชฐเซเชฏ เชฌเชจเชพเชตเซ€เช เช›เซ€เช. เชšเชพเชฒเซ‹ เชœเซ‡เชจเช•เชฟเชจเซเชธเชจเชพ เชœเซ‡เช•เซ‡เชŸเชจเซ€ เชจเซ€เชšเซ‡ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช

เช…เชฎเซ‡ เชธเชฐเชณ เชฐเซ€เชกเชพเชฏเชฐเซ‡เช•เซเชถเชจ เชธเชพเชฅเซ‡ yaml เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ€เชถเซเช‚ เช‡เช•เซ‹ เชซเชพเชˆเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡. เชเชตเซเช‚ เชฎเชพเชจเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช•เซ‡, เช…เชฒเชฌเชคเซเชค, เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชคเชฎเชพเชฐเซ€ เชกเซ‹เช•เชฐเชซเชพเชˆเชฒเชฎเชพเช‚ เช›เซ‡ PARAM1 ะธ PARAM2เช•เซ‡ เชฒเซ‹เชก เชจเชพเชฎ เชนเชถเซ‡ awesomeapp, เช…เชจเซ‡ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชธเช‚เชธเซเช•เชฐเชฃเชจเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชพเชฅเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชจเซเชŸเซ‡เชจเชฐ เช†เชตเซ‡เชฒเซเช‚ เช›เซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€ เชฐเชธเซเชคเชพเชฎเชพ 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

เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชœเซ‡เชจเช•เชฟเชจเซเชธ เชเชœเชจเซเชŸ gcloud alpha cloud-shell 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"

เช…เชฎเซ‡ เช•เชพเชฐเซเชฏ เชšเชฒเชพเชตเซ€เช เช›เซ€เช, เช•เชจเซเชธเซ‹เชฒ เช†เช‰เชŸเชชเซเชŸ เช–เซ‹เชฒเซ€เช เช›เซ€เช เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เชธเชซเชณ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชœเซ‹เชตเชพเชจเซ€ เช†เชถเชพ เชฐเชพเช–เซ€เช เช›เซ€เช.

เชธเซเช•เซเชฐเซ€เชจเชถเซ‹เชŸ
เช…เชฎเซ‡ เชชเซเชฒเช—เช‡เชจเซเชธ, SMS เช…เชฅเชตเชพ เชจเซ‹เช‚เชงเชฃเซ€ เชตเชฟเชจเชพ GKE เชฎเชพเช‚ เชœเชฎเชพเชตเชŸ เช•เชพเชฐเซเชฏ เชฌเชจเชพเชตเซ€เช เช›เซ€เช. เชšเชพเชฒเซ‹ เชœเซ‡เชจเช•เชฟเชจเซเชธเชจเชพ เชœเซ‡เช•เซ‡เชŸเชจเซ€ เชจเซ€เชšเซ‡ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช

เช…เชจเซ‡ เชชเช›เซ€ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เชธเชซเชณ เชœเชฎเชพเชตเชŸ

เชธเซเช•เซเชฐเซ€เชจเชถเซ‹เชŸ
เช…เชฎเซ‡ เชชเซเชฒเช—เช‡เชจเซเชธ, SMS เช…เชฅเชตเชพ เชจเซ‹เช‚เชงเชฃเซ€ เชตเชฟเชจเชพ GKE เชฎเชพเช‚ เชœเชฎเชพเชตเชŸ เช•เชพเชฐเซเชฏ เชฌเชจเชพเชตเซ€เช เช›เซ€เช. เชšเชพเชฒเซ‹ เชœเซ‡เชจเช•เชฟเชจเซเชธเชจเชพ เชœเซ‡เช•เซ‡เชŸเชจเซ€ เชจเซ€เชšเซ‡ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช

เชฎเซ‡เช‚ เช‡เชฐเชพเชฆเชพเชชเซ‚เชฐเซเชตเช• เชธเซ‡เชŸเชฟเช‚เช—เชจเซ‡ เช…เชตเช—เชฃเซเชฏเซเช‚ เชชเซเชฐเชตเซ‡เชถ. เชเช• เชธเชฐเชณ เช•เชพเชฐเชฃเซ‹เชธเชฐ: เชเช•เชตเชพเชฐ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชธเซ‡เชŸ เช•เชฐเซ€ เชฒเซ‹ เชตเชฐเซเช•เชฒเซ‹เชก เช†เชชเซ‡เชฒ เชจเชพเชฎ เชธเชพเชฅเซ‡, เชคเซ‡ เช•เชพเชฐเซเชฏเชฐเชค เชฐเชนเซ‡เชถเซ‡, เชชเช›เซ€ เชญเชฒเซ‡ เชคเชฎเซ‡ เช† เชจเชพเชฎ เชธเชพเชฅเซ‡ เช•เซ‡เชŸเชฒเซ€ เชœเชฎเชพเชตเชŸ เช•เชฐเซ‹. เชธเชพเชฐเซเช‚, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เช† เช‡เชคเชฟเชนเชพเชธเชจเชพ เช…เชตเช•เชพเชถเชจเซ€ เชฌเชนเชพเชฐ เชฅเซ‹เชกเซเช‚ เช›เซ‡.

เชคเชพเชฐเชฃเซ‹เชจเซ‡ เชฌเชฆเชฒเซ‡

เช‰เชชเชฐเซ‹เช•เซเชค เชคเชฎเชพเชฎ เชชเช—เชฒเชพเช“ เช•เชฆเชพเชš เชฅเชˆ เชถเช•เซเชฏเชพ เชจ เชนเซ‹เชค, เชชเชฐเช‚เชคเซ เชœเซ‡เชจเช•เชฟเชจเซเชธ, เชคเซ‡เชฎเชจเชพ เชฎเซเชฏเซเชฏเซเชฒเชฟเชฏเชจ เชฎเชพเชŸเซ‡ เชซเช•เซเชค เช•เซ‡เชŸเชฒเชพเช• เชชเซเชฒเช—เช‡เชจ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซเชฏเชพ. เชชเชฐเช‚เชคเซ เช•เซ‡เชŸเชฒเชพเช• เช•เชพเชฐเชฃเซ‹เชธเชฐ เชฎเชจเซ‡ เชชเซเชฒเช—เชˆเชจเซเชธ เชชเชธเช‚เชฆ เชจเชฅเซ€. เชธเชพเชฐเซเช‚, เชตเชงเซ เชธเซเชชเชทเซเชŸ เชฐเซ€เชคเซ‡, เชนเซเช‚ เชซเช•เซเชค เชนเชคเชพเชถเชพเชฅเซ€ เชœ เชคเซ‡เชฎเชจเซ‹ เช†เชถเชฐเซ‹ เชฒเช‰เช‚ เช›เซเช‚.

เช…เชจเซ‡ เชนเซเช‚ เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชˆ เชจเชตเซ‹ เชตเชฟเชทเชฏ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชจเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเซเช‚ เช›เซเช‚. เช‰เชชเชฐเซ‹เช•เซเชค เชŸเซ‡เช•เซเชธเซเชŸ เช เชคเชพเชฐเชฃเซ‹ เชถเซ‡เชฐ เช•เชฐเชตเชพเชจเซ€ เชเช• เชฐเซ€เชค เช›เซ‡ เชœเซ‡ เชฎเซ‡เช‚ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เชธเชฎเชธเซเชฏเชพเชจเซเช‚ เชจเชฟเชฐเชพเช•เชฐเชฃ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช•เชฐเซ€ เชนเชคเซ€. เชคเซ‡ เชฒเซ‹เช•เซ‹ เชธเชพเชฅเซ‡ เชถเซ‡เชฐ เช•เชฐเซ‹ เชœเซ‡เช“ เชคเซ‡เชฎเชจเชพ เชœเซ‡เชตเชพ, เชกเซ‡เชตเซ‹เชชเซเชธเชฎเชพเช‚ เชญเชฏเช‚เช•เชฐ เชตเชฐเซ เชจเชฅเซ€. เชœเซ‹ เชฎเชพเชฐเชพ เชคเชพเชฐเชฃเซ‹ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เช•เซ‹เชˆเชจเซ‡ เชฎเชฆเชฆ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชนเซเช‚ เช–เซเชถ เชฅเชˆเชถ.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹