เจ…เจธเฉ€เจ‚ เจฌเจฟเจจเจพเจ‚ เจชเจฒเฉฑเจ—เจ‡เจจ, SMS เจœเจพเจ‚ เจฐเจœเจฟเจธเจŸเฉเจฐเฉ‡เจธเจผเจจ เจฆเฉ‡ GKE เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจคเฉˆเจจเจพเจคเฉ€ เจ•เจพเจฐเจœ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจ†เจ‰ เจœเฉ‡เจจเจ•เจฟเฉฐเจธ เจฆเฉ€ เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจ‡เฉฑเจ• เจเจพเจค เจฎเจพเจฐเฉ€เจ

เจ‡เจน เจธเจญ เจ‰เจฆเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจ‡เจ† เจœเจฆเฉ‹เจ‚ เจธเจพเจกเฉ€เจ†เจ‚ เจตเจฟเจ•เจพเจธ เจŸเฉ€เจฎเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจฆเฉ€ เจŸเฉ€เจฎ เจฆเฉ€ เจ…เจ—เจตเจพเจˆ เจจเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ€ เจจเจตเฉ€เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจ•เจฟเจนเจพ, เจœเฉ‹ เจ‡เฉฑเจ• เจฆเจฟเจจ เจชเจนเจฟเจฒเจพเจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจˆเจœเจผ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€เฅค เจฎเฉˆเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจชเฉ‹เจธเจŸ เจ•เฉ€เจคเจพเฅค เจฒเจ—เจญเจ— 20 เจฎเจฟเฉฐเจŸเจพเจ‚ เจฌเจพเจ…เจฆ, เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ…เจชเจกเฉ‡เจŸ เจ•เจฐเจจ เจฒเจˆ เจฌเฉ‡เจจเจคเฉ€ เจชเฉเจฐเจพเจชเจค เจนเฉ‹เจˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‰เฉฑเจฅเฉ‡ เจ‡เฉฑเจ• เจฌเจนเฉเจค เจœเจผเจฐเฉ‚เจฐเฉ€ เจšเฉ€เจœเจผ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€เฅค เจฎเฉˆเจ‚ เจจเจตเจฟเจ†เจ‡เจ†เฅค เจ•เฉเจ เจ˜เฉฐเจŸเจฟเจ†เจ‚ เจฌเจพเจ…เจฆ... เจ–เฉˆเจฐ, เจคเฉเจธเฉ€เจ‚ เจ…เฉฐเจฆเจพเจœเจผเจพ เจฒเจ—เจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจ…เฉฑเจ—เฉ‡ เจ•เฉ€ เจนเฉ‹เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจ‡เจ†...

เจฎเฉˆเจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจฎเฉˆเจ‚ เจฌเจนเฉเจค เจ†เจฒเจธเฉ€ เจนเจพเจ‚ (เจ•เฉ€ เจฎเฉˆเจ‚ เจ‡เจน เจชเจนเจฟเจฒเจพเจ‚ เจธเจตเฉ€เจ•เจพเจฐ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจธเฉ€? เจจเจนเฉ€เจ‚?), เจ…เจคเฉ‡ เจ‡เจธ เจคเฉฑเจฅ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเฉ‹เจ เจ•เจฟ เจŸเฉ€เจฎ เจฆเฉ€ เจ…เจ—เจตเจพเจˆ เจ•เจฐเจจ เจตเจพเจฒเจฟเจ†เจ‚ เจฆเฉ€ เจœเฉ‡เจจเจ•เจฟเฉฐเจธ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจธเจพเจฐเฉ‡ เจธเฉ€เจ†เจˆ/เจธเฉ€เจกเฉ€ เจนเจจ, เจฎเฉˆเจ‚ เจธเฉ‹เจšเจฟเจ†: เจ‰เจธเจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจคเจพเจ‡เจจเจพเจค เจ•เจฐเจจ เจฆเจฟเจ“ เจœเจฟเฉฐเจจเจพ เจ‰เจน เจšเจพเจนเฉเฉฐเจฆเจพ เจนเฉˆ! เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจšเฉเจŸเจ•เจฒเจพ เจฏเจพเจฆ เจ†เจ‡เจ†: เจ‡เฉฑเจ• เจ†เจฆเจฎเฉ€ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฎเฉฑเจ›เฉ€ เจฆเจฟเจ“ เจ…เจคเฉ‡ เจ‰เจน เจ‡เฉฑเจ• เจฆเจฟเจจ เจฒเจˆ เจ–เจพเจตเฉ‡เจ—เจพ; เจ‡เฉฑเจ• เจตเจฟเจ…เจ•เจคเฉ€ เจจเฉ‚เฉฐ เจซเฉ‡เจก เจ•เจพเจฒ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ‰เจน เจธเจพเจฐเฉ€ เจ‰เจฎเจฐ เจซเฉ€เจก เจฐเจนเฉ‡เจ—เจพเฅค เจ…เจคเฉ‡ เจšเจฒเจพ เจ—เจฟเจ† เจจเฉŒเจ•เจฐเฉ€ 'เจคเฉ‡ เจšเจพเจฒเจพเจ‚ เจ–เฉ‡เจกเฉ‹, เจœเฉ‹ เจ•เฉเจฌเฉ‡เจฐ เจตเจฟเฉฑเจš เจ•เจฟเจธเฉ‡ เจตเฉ€ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจฌเจฃเจพเจ เจ—เจ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจพเจฒเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจจเฉ‚เฉฐ เจคเฉˆเจจเจพเจค เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจตเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ เจตเฉ€ เจฎเฉเฉฑเจฒ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค ENV (เจฎเฉ‡เจฐเฉ‡ เจฆเจพเจฆเจพ, เจ‡เฉฑเจ• เจซเจฟเจฒเฉ‹เจฒเฉ‹เจœเจฟเจธเจŸ, เจ‡เฉฑเจ• เจ…เฉฐเจ—เจฐเฉ‡เจœเจผเฉ€ เจ…เจงเจฟเจ†เจชเจ•, เจนเฉเจฃ เจ†เจชเจฃเฉ‡ เจฎเฉฐเจฆเจฐ เจตเจฟเฉฑเจš เจ†เจชเจฃเฉ€ เจ‰เจ‚เจ—เจฒ เจ˜เฉเจฎเจพเจ‰เจฃเจ—เฉ‡ เจ…เจคเฉ‡ เจ‡เจธ เจตเจพเจ• เจจเฉ‚เฉฐ เจชเฉœเฉเจน เจ•เฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจฌเจนเฉเจค เจญเจพเจตเจชเฉ‚เจฐเจค เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจตเฉ‡เจ–เจฃเจ—เฉ‡)เฅค

เจ‡เจธ เจฒเจˆ, เจ‡เจธ เจจเฉ‹เจŸ เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเฉฑเจธเจพเจ‚เจ—เจพ เจ•เจฟ เจฎเฉˆเจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจธเจฟเฉฑเจ–เจฟเจ†:

  1. เจœเฉ‡เจจเจ•เจฟเฉฐเจธ เจตเจฟเฉฑเจš เจจเฉŒเจ•เจฐเฉ€เจ†เจ‚ เจคเฉ‹เจ‚ เจœเจพเจ‚ เจนเฉ‹เจฐ เจจเฉŒเจ•เจฐเฉ€เจ†เจ‚ เจคเฉ‹เจ‚ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจคเฉŒเจฐ 'เจคเฉ‡ เจ…เจชเจกเฉ‡เจŸ เจ•เจฐเฉ‹;
  2. เจœเฉ‡เจจเจ•เจฟเฉฐเจธ เจเจœเฉฐเจŸ เจจเจพเจฒ เจจเฉ‹เจก เจคเฉ‹เจ‚ เจ•เจฒเจพเจ‰เจก เจ•เฉฐเจธเฉ‹เจฒ (เจ•เจฒเจพเจŠเจก เจธเจผเฉˆเฉฑเจฒ) เจจเจพเจฒ เจœเฉเฉœเฉ‹;
  3. Google Kubernetes Engine 'เจคเฉ‡ เจตเจฐเจ•เจฒเฉ‹เจก เจจเฉ‚เฉฐ เจคเฉˆเจจเจพเจค เจ•เจฐเฉ‹เฅค


เจตเจพเจธเจคเจต เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚, เจฌเฉ‡เจธเจผเฉฑเจ•, เจ•เฉเจ เจนเฉฑเจฆ เจคเฉฑเจ• เจฌเฉ‡เจตเจ•เฉ‚เจซ เจนเจพเจ‚. เจ‡เจน เจฎเฉฐเจจเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ—เฉ‚เจ—เจฒ เจ•เจฒเจพเจ‰เจก เจตเจฟเฉฑเจš เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจฆเจพ เจ˜เฉฑเจŸเฉ‹ เจ˜เฉฑเจŸ เจนเจฟเฉฑเจธเจพ เจนเฉˆ, เจ…เจคเฉ‡, เจ‡เจธเจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจฆเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจนเฉ‹ เจ…เจคเฉ‡, เจฌเฉ‡เจธเจผเจ•, เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• 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/

เจ…เฉฑเจ—เฉ‡, เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจตเจฟเจ•เจฒเจช เจนเฉˆ เจ•เจฟ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเฉ‚เฉฐ เจ•เจฟเจธ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจนเฉˆเฅค เจ†เจ“ 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 เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐเจจ เจจเจพเจฒเฉ‹เจ‚ เจตเฉ€ เจœเจผเจฟเจ†เจฆเจพ เจชเจธเฉฐเจฆ เจนเฉˆ. เจ–เฉˆเจฐ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจœเฉ‡เจ•เจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจฌเจฃเจพเจˆ เจ—เจˆ เจธเฉ€, เจคเจพเจ‚ เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจ‡เจธเจจเฉ‚เฉฐ เจชเฉˆเจ• เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจ…เจคเฉ‡ เจขเฉเจ•เจตเฉ‡เจ‚ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฟเจ† เจ—เจฟเจ† เจธเฉ€เฅค เจœเจฟเจตเฉ‡เจ‚, เจ‡เฉฑเจ• เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจฆเจพ เจกเจฟเจซเฉŒเจฒเจŸ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจนเฉˆเฅค เจชเจธเฉฐเจฆ เจนเฉˆเฅค เจ–เฉˆเจฐ, เจ†เจ“ เจ‰เจธ เจจเฉ‚เฉฐ เจชเฉเฉฑเจ›เฉ€เจ เจ•เจฟ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจตเจฟเฉฑเจš เจ•เจฟเจนเฉœเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจนเจจ. เจ…เจธเฉ€เจ‚ เจฐเจฟเจฎเฉ‹เจŸ เจซเฉ‹เจฒเจกเจฐ เจจเฉ‚เฉฐ เจ•เจฐเจฒ, เจ—เฉเจฐเฉ‡เจช เจ…เจคเฉ‡ 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 เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เจธ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ, เจœเจฆเฉ‹เจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ—เฉฑเจฒ เจ†เจ‰เจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจคเจฟเฉฐเจจ เจตเจฟเจ•เจฒเจช เจฎเจจ เจตเจฟเฉฑเจš เจ†เจ‰เจ‚เจฆเฉ‡ เจนเจจ: เจกเฉŒเจ•เจฐ เจตเจฟเฉฑเจš เจกเฉŒเจ•เจฐ เจธเจฅเจพเจชเจค เจ•เจฐเฉ‹, เจเจจเจธเฉ€เจฌเจฒ เจšเฉฑเจฒ เจฐเจนเฉ€ เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจกเฉŒเจ•เจฐ เจธเจฅเจพเจชเจค เจ•เจฐเฉ‹, เจœเจพเจ‚ เจ•เจฒเจพเจ‰เจก เจ•เฉฐเจธเฉ‹เจฒ เจตเจฟเฉฑเจš เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฌเจฃเจพเจ“เฅค เจ…เจธเฉ€เจ‚ เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจœเฉ‡เจจเจ•เจฟเจจเจœเจผ เจฒเจˆ เจชเจฒเฉฑเจ—เจ‡เจจ เจฌเจพเจฐเฉ‡ เจšเฉเฉฑเจช เจฐเจนเจฟเจฃ เจฒเจˆ เจธเจนเจฟเจฎเจค เจนเฉ‹เจ เจนเจพเจ‚เฅค เจฏเจพเจฆ เจฐเฉฑเจ–เจฃเจพ?

เจฎเฉˆเจ‚ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ: เจ เฉ€เจ• เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ•เฉฐเจŸเฉ‡เจจเจฐ "เจฌเจพเจ•เจธ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ" เจ•เจฒเจพเจ‰เจก เจ•เฉฐเจธเฉ‹เจฒ เจตเจฟเฉฑเจš เจ‡เจ•เฉฑเจ เฉ‡ เจ•เฉ€เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจ, เจซเจฟเจฐ เจ•เจฟเจ‰เจ‚ เจชเจฐเฉ‡เจธเจผเจพเจจ เจนเฉ‹? เจ‡เจธ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจฐเฉฑเจ–เฉ‹, เจ เฉ€เจ• เจนเฉˆ? เจฎเฉˆเจ‚ เจ•เจฒเจพเจ‰เจก เจ•เฉฐเจธเฉ‹เจฒ เจตเจฟเฉฑเจš เจœเฉ‡เจจเจ•เจฟเฉฐเจธ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ‚, เจ…เจคเฉ‡ เจซเจฟเจฐ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‰เฉฑเจฅเฉ‹เจ‚ เจ•เจฟเจŠเจฌเจฐ เจตเจฟเฉฑเจš เจฒเจพเจ‚เจš เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ‚เฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ—เฉ‚เจ—เจฒ เจ•เฉ‹เจฒ เจ‡เจธเจฆเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจฌเจนเฉเจค เจ…เจฎเฉ€เจฐ เจšเฉˆเจจเจฒ เจนเจจ, เจœเจฟเจธเจฆเจพ เจคเฉˆเจจเจพเจคเฉ€ เจฆเฉ€ เจ—เจคเฉ€ 'เจคเฉ‡ เจฒเจพเจนเฉ‡เจตเฉฐเจฆ เจชเฉเจฐเจญเจพเจต เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจ•เจฒเจพเจ‰เจก เจ•เฉฐเจธเฉ‹เจฒ เจจเจพเจฒ เจœเฉเฉœเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเฉ‹ เจšเฉ€เจœเจผเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ: 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-เจ•เจฒเฉฑเจธเจŸเจฐ) เจ…เจคเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจจเจพเจฎ (awesome-เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ), เจœเจฟเฉฑเจฅเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐ เจธเจฅเจฟเจค เจนเฉˆเฅค

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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹