werf - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš CI / CD เจฒเจˆ เจธเจพเจกเจพ เจŸเฉ‚เจฒ (เจธเฉฐเจ–เฉ‡เจช เจ…เจคเฉ‡ เจตเฉ€เจกเฉ€เจ“ เจฐเจฟเจชเฉ‹เจฐเจŸ)

เจคเจฟเจ‰เจนเจพเจฐ เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจœเฉ‹เจ‚ เจ†เจฏเฉ‹เจœเจฟเจค DevOpsConf 27 เจ•เจพเจจเจซเจฐเฉฐเจธ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจนเจพเจฒ เจตเจฟเฉฑเจš 2019 เจฎเจˆ RIT++ 2019, "เจจเจฟเจฐเฉฐเจคเจฐ เจธเจชเฉเจฐเจฆเจ—เฉ€" เจญเจพเจ— เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจœเฉ‹เจ‚, เจ‡เฉฑเจ• เจฐเจฟเจชเฉ‹เจฐเจŸ เจฆเจฟเฉฑเจคเฉ€ เจ—เจˆ เจธเฉ€ "werf - Kubernetes เจตเจฟเฉฑเจš CI/CD เจฒเจˆ เจธเจพเจกเจพ เจŸเฉ‚เจฒ"เฅค เจ‡เจน เจ‰เจนเจจเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจฆเจพ เจนเฉˆ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจ…เจคเฉ‡ เจšเฉเจฃเฉŒเจคเฉ€เจ†เจ‚ เจœเจฟเจจเฉเจนเจพเจ‚ เจฆเจพ เจนเจฐ เจ•เฉ‹เจˆ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเฉ‚เฉฐ เจคเจพเจ‡เจจเจพเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจจเจพเจฒ เจนเฉ€ เจธเฉ‚เจ–เจฎเจคเจพเจตเจพเจ‚ เจฌเจพเจฐเฉ‡ เจœเฉ‹ เจธเจผเจพเจ‡เจฆ เจคเฉเจฐเฉฐเจค เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจจเจพ เจนเฉ‹เจฃเฅค เจธเฉฐเจญเจพเจตเจฟเจค เจนเฉฑเจฒเจพเจ‚ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ…เจธเฉ€เจ‚ เจฆเจฟเจ–เจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ‡เจน เจ‡เฉฑเจ• เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจŸเฉ‚เจฒ เจตเจฟเฉฑเจš เจ•เจฟเจตเฉ‡เจ‚ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ werf.

เจชเฉ‡เจธเจผเจ•เจพเจฐเฉ€ เจคเฉ‹เจ‚ เจฒเฉˆ เจ•เฉ‡, เจธเจพเจกเฉ€ เจ‰เจชเจฏเฉ‹เจ—เจคเจพ (เจชเจนเจฟเจฒเจพเจ‚ เจกเฉˆเจช เจตเจœเฉ‹เจ‚ เจœเจพเจฃเฉ€ เจœเจพเจ‚เจฆเฉ€ เจธเฉ€) เจฆเฉ‡ เจ‡เจคเจฟเจนเจพเจธเจ• เจฎเฉ€เจฒเจชเฉฑเจฅเจฐ 'เจคเฉ‡ เจชเจนเฉเฉฐเจš เจ—เจˆ เจนเฉˆ GitHub 'เจคเฉ‡ 1000 เจคเจพเจฐเฉ‡ โ€” เจ…เจธเฉ€เจ‚ เจ‰เจฎเฉ€เจฆ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ‡เจธเจฆเจพ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเจพ เจตเจง เจฐเจฟเจนเจพ เจญเจพเจˆเจšเจพเจฐเจพ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ DevOps เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐเจพเจ‚ เจฒเจˆ เจœเฉ€เจตเจจ เจจเฉ‚เฉฐ เจ†เจธเจพเจจ เจฌเจฃเจพ เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค

werf - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš CI / CD เจฒเจˆ เจธเจพเจกเจพ เจŸเฉ‚เจฒ (เจธเฉฐเจ–เฉ‡เจช เจ…เจคเฉ‡ เจตเฉ€เจกเฉ€เจ“ เจฐเจฟเจชเฉ‹เจฐเจŸ)

เจ‡เจธ เจฒเจˆ, เจ†เจ“ เจชเฉ‡เจธเจผ เจ•เจฐเฉ€เจ เจฐเจฟเจชเฉ‹เจฐเจŸ เจฆเฉ€ เจตเฉ€เจกเฉ€เจ“ (~ 47 เจฎเจฟเฉฐเจŸ, เจฒเฉ‡เจ– เจจเจพเจฒเฉ‹เจ‚ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจญเจฐเจชเฉ‚เจฐ) เจ…เจคเฉ‡ เจŸเฉˆเจ•เจธเจŸ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ‡เจธเจฆเจพ เจฎเฉเฉฑเจ– เจเจฌเจธเจŸเจฐเฉˆเจ•เจŸเฅค เจœเจพเจฃเจพ!

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเฉ‚เฉฐ เจ•เฉ‹เจก เจกเจฟเจฒเฉ€เจตเจฐ เจ•เจฐเจจเจพ

เจ—เฉฑเจฒ เจนเฉเจฃ werf เจฌเจพเจฐเฉ‡ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เฉ€, เจชเจฐ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš CI/CD เจฌเจพเจฐเฉ‡ เจนเฉ‹เจตเฉ‡เจ—เฉ€, เจœเจฟเจธเจฆเจพ เจ…เจฐเจฅ เจนเฉˆ เจ•เจฟ เจธเจพเจกเจพ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจกเฉŒเจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจชเฉˆเจ• เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค (เจฎเฉˆเจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจตเจฟเฉฑเจš เจ—เฉฑเจฒ เจ•เฉ€เจคเฉ€ เจธเฉ€ 2016 เจฆเฉ€ เจฐเจฟเจชเฉ‹เจฐเจŸ), เจ…เจคเฉ‡ K8s เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ‰เจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจš เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€ (เจ‡เจธ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจตเจฟเฉฑเจš 2017 เจธเจพเจฒ).

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš เจกเจฟเจฒเฉ€เจตเจฐเฉ€ เจ•เจฟเจนเฉ‹ เจœเจฟเจนเฉ€ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ?

  • เจ•เฉ‹เจก เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• Git เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจนเฉˆเฅค เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจกเฉŒเจ•เจฐ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค
  • เจ‰เจธเฉ‡ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจคเฉˆเจจเจพเจค เจ…เจคเฉ‡ เจšเจฒเจพเจ‰เจฃเจพ เจนเฉˆ เจฌเจพเจฐเฉ‡ เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจตเฉ€ เจธเจผเจพเจฎเจฒ เจนเจจเฅค เจคเฉˆเจจเจพเจคเฉ€ เจชเฉœเจพเจ… 'เจคเฉ‡, เจ‡เจน เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเฉ‚เฉฐ เจญเฉ‡เจœเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจœเฉ‹ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจคเฉ‹เจ‚ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจšเจฟเฉฑเจคเจฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเจฆเจพ เจนเฉˆเฅค
  • เจจเจพเจฒ เจนเฉ€, เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจŸเฉˆเจธเจŸ เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจ‡เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ•เฉเจ เจšเจฟเฉฑเจคเจฐ เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจ•เฉ€เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจคเฉเจธเฉ€เจ‚ (เจ‰เจธเฉ‡ เจนเจฆเจพเจ‡เจคเจพเจ‚ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ) เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจ‡เฉฑเจ• เจ•เจพเจชเฉ€ (เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ‡ K8s เจจเฉ‡เจฎเจธเจชเฉ‡เจธ เจœเจพเจ‚ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš) เจตเฉ€ เจฒเจ—เจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจ‰เฉฑเจฅเฉ‡ เจŸเฉˆเจธเจŸ เจšเจฒเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค
  • เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• CI เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ เจœเฉ‹ Git (เจœเจพเจ‚ เจฌเจŸเจจ เจ•เจฒเจฟเฉฑเจ•เจพเจ‚) เจคเฉ‹เจ‚ เจ‡เจตเฉˆเจ‚เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจธเจพเจฐเฉ‡ เจฎเจจเฉ‹เจจเฉ€เจค เจชเฉœเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจฆเจพ เจนเฉˆ: เจฌเจฟเจฒเจก, เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค, เจคเฉˆเจจเจพเจค, เจŸเฉˆเจธเจŸเฅค

werf - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš CI / CD เจฒเจˆ เจธเจพเจกเจพ เจŸเฉ‚เจฒ (เจธเฉฐเจ–เฉ‡เจช เจ…เจคเฉ‡ เจตเฉ€เจกเฉ€เจ“ เจฐเจฟเจชเฉ‹เจฐเจŸ)

เจ‡เฉฑเจฅเฉ‡ เจ•เฉเจ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจจเฉ‹เจŸเจธ เจนเจจ:

  1. เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจ…เจŸเฉฑเจฒ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเจพ เจนเฉˆ (เจ…เจธเจฅเจฟเจฐ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเจพ), เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจšเจฟเฉฑเจคเจฐ เจœเฉ‹ เจธเจพเจฐเฉ‡ เจชเฉœเจพเจตเจพเจ‚ 'เจคเฉ‡ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ (เจธเจŸเฉ‡เจœเจฟเฉฐเจ—, เจ‰เจคเจชเจพเจฆเจจ, เจ†เจฆเจฟ), เจ‡เฉฑเจ• เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ. เจฎเฉˆเจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจตเจงเฉ‡เจฐเฉ‡ เจตเจฟเจธเจฅเจพเจฐ เจจเจพเจฒ เจ…เจคเฉ‡ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจจเจพเจฒ เจ—เฉฑเจฒ เจ•เฉ€เจคเฉ€ เจนเฉˆเฅค เจ‡เฉฑเจฅเฉ‡.
  2. เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจจเฉ‚เฉฐ เจ•เฉ‹เจก เจชเจนเฉเฉฐเจš เจตเจœเฉ‹เจ‚ เจ…เจชเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ (เจ†เจˆเจเจธเฉ€), เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉ‹เจก, เจ‡เจธ เจจเฉ‚เฉฐ เจ…เจธเฉˆเจ‚เจฌเจฒ เจ•เจฐเจจ เจ…เจคเฉ‡ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจนเจฆเจพเจ‡เจคเจพเจ‚ เจนเฉ‹เจฃเฉ€เจ†เจ‚ เจšเจพเจนเฉ€เจฆเฉ€เจ†เจ‚ เจนเจจ เจฌเจฟเจฒเจ•เฉเจฒ เจ‡เฉฑเจ• เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš. เจ‡เจธ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฒเจˆ, เจตเฉ‡เจ–เฉ‹ เจ‰เจนเฉ€ เจฐเจฟเจชเฉ‹เจฐเจŸ.
  3. เจกเจฟเจฒเจฟเจตเจฐเฉ€ เจšเฉ‡เจจ (เจกเจฟเจฒเฉ€เจตเจฐเฉ€) เจ…เจธเฉ€เจ‚ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚: เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ…เจธเฉˆเจ‚เจฌเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ†, เจŸเฉˆเจธเจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ†, เจœเจพเจฐเฉ€ เจ•เฉ€เจคเจพ เจ—เจฟเจ† (เจฐเจฟเจฒเฉ€เจœเจผ เจชเฉœเจพเจ…) เจ…เจคเฉ‡ เจ‡เจน เจนเฉ€ เจนเฉˆ - เจกเจฟเจฒเฉ€เจตเจฐเฉ€ เจนเฉ‹ เจ—เจˆ เจนเฉˆเฅค เจชเจฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš, เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจ‰เจนเฉ€ เจฎเจฟเจฒเจฆเจพ เจนเฉˆ เจœเฉ‹ เจคเฉเจธเฉ€เจ‚ เจฐเฉ‹เจฒ เจ†เจŠเจŸ เจ•เฉ€เจคเจพ เจนเฉˆ, เจจเจพ เจซเจฟเจฐ เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ‰เจคเจชเจพเจฆเจจ เจฒเจˆ เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเจพ, เจ…เจคเฉ‡ เจœเจฆเฉ‹เจ‚ เจ‰เจน เจ‰เฉฑเจฅเฉ‡ เจœเจพเจฃ เจฆเฉ‡ เจฏเฉ‹เจ— เจธเฉ€ เจ…เจคเฉ‡ เจ‡เจน เจ‰เจคเจชเจพเจฆเจจ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจธเฉ€เฅค เจ‡เจธ เจฒเจˆ เจฎเฉˆเจจเฉ‚เฉฐ เจตเจฟเจธเจผเจตเจพเจธ เจนเฉˆ เจ•เจฟ เจกเจฟเจฒเจฟเจตเจฐเฉ€ เจšเฉ‡เจจ เจ–เจคเจฎ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจธเจฟเจฐเจซ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒ เจชเฉœเจพเจ… 'เจคเฉ‡ (เจฐเจจ), เจœเจพเจ‚ เจนเฉ‹เจฐ เจธเจนเฉ€ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจ‰เจธ เจธเจฎเฉ‡เจ‚ เจตเฉ€ เจœเจฆเฉ‹เจ‚ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจ‰เจคเจชเจพเจฆเจจ เจคเฉ‹เจ‚ เจนเจŸเจพ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจธเฉ€ (เจ‡เจธเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเจตเฉ‡เจ‚ เจจเจพเจฒ เจฌเจฆเจฒเจฃเจพ)เฅค

เจ†เจ‰ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš เจ‰เจชเจฐเฉ‹เจ•เจค เจกเจฟเจฒเฉ€เจตเจฐเฉ€ เจธเจ•เฉ€เจฎ เจคเฉ‡ เจตเจพเจชเจธ เจ†เจ“: เจ‡เจน เจจเจพ เจธเจฟเจฐเจซ เจธเจพเจกเฉ‡ เจฆเฉเจ†เจฐเจพ, เจฌเจฒเจ•เจฟ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจนเจฐ เจ•เจฟเจธเฉ‡ เจฆเฉเจ†เจฐเจพ เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจฃ เจฆเฉเจ†เจฐเจพ เจ–เฉ‹เจœ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€. เจ…เจธเจฒ เจตเจฟเฉฑเจš, เจ‡เจธ เจชเฉˆเจŸเจฐเจจ เจจเฉ‚เฉฐ เจนเฉเจฃ GitOps เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ (เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจธเจผเจฌเจฆ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจชเจฟเฉฑเจ›เฉ‡ เจฆเฉ‡ เจตเจฟเจšเจพเจฐเจพเจ‚ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจชเฉœเฉเจน เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ‡เฉฑเจฅเฉ‡). เจ†เจ‰ เจธเจ•เฉ€เจฎ เจฆเฉ‡ เจชเฉœเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เฉ€เจ.

เจธเจŸเฉ‡เจœ เจฌเจฃเจพเจ“

เจ…เจœเจฟเจนเจพ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ 2019 เจตเจฟเฉฑเจš เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจœเจฆเฉ‹เจ‚ เจนเจฐ เจ•เฉ‹เจˆ เจœเจพเจฃเจฆเจพ เจนเฉˆ เจ•เจฟ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเจพ เจนเฉˆ เจ…เจคเฉ‡ เจšเจฒเจพเจ‰เจฃเจพ เจนเฉˆ docker build?.. เจ‡เฉฑเจฅเฉ‡ เจ‰เจน เจฌเจพเจฐเฉ€เจ•เฉ€เจ†เจ‚ เจนเจจ เจœเจฟเจจเฉเจนเจพเจ‚ เจตเฉฑเจฒ เจฎเฉˆเจ‚ เจงเจฟเจ†เจจ เจฆเฉ‡เจฃเจพ เจšเจพเจนเจพเจ‚เจ—เจพ:

  1. เจšเจฟเฉฑเจคเจฐ เจฆเจพ เจญเจพเจฐ เจฎเจพเจฎเจฒเฉ‡, เจ‡เจธ เจฒเจˆ เจตเจฐเจคเฉ‹ เจฌเจนเฉ-เจชเฉœเจพเจ…เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซ เจ‰เจน เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ›เฉฑเจกเจฃ เจฒเจˆ เจœเฉ‹ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฒเจˆ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ.
  2. เจฒเฉ‡เจ…เจฐเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจฆเฉ€เจ†เจ‚ เจšเฉ‡เจจเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœ เจ•เฉ‡ เจ˜เฉฑเจŸ เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ RUN- เจ…เจฐเจฅ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ เจนเฉเจ•เจฎ.
  3. เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจน เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฆเจพ เจนเฉˆ เจกเฉ€เจฌเฉฑเจ—เจฟเฉฐเจ—, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจœเจฆเฉ‹เจ‚ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจ•เจฐเฉˆเจธเจผ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เจธ เจšเฉ‡เจจ เจคเฉ‹เจ‚ เจธเจนเฉ€ เจ•เจฎเจพเจ‚เจก เจฒเฉฑเจญเจฃเฉ€ เจชเจตเฉ‡เจ—เฉ€ เจœเจฟเจธ เจจเจพเจฒ เจธเจฎเฉฑเจธเจฟเจ† เจชเฉˆเจฆเจพ เจนเฉ‹เจˆเฅค
  4. เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจฆเฉ€ เจ—เจคเฉ€ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจฐเฉ‹เจฒ เจ†เจŠเจŸ เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจฆเฉ‡เจ–เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจนเจฐ เจตเจพเจฐ เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจ•เฉ‹เจˆ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹ เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจญเจพเจธเจผเจพ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจจเจฟเจฐเจญเจฐเจคเจพ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฌเจฃเจพเจ‰เจฃเจพ เจจเจนเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹เฅค
  5. เจ…เจ•เจธเจฐ เจ‡เฉฑเจ• Git เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจคเฉ‹เจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจšเจฟเฉฑเจคเจฐ, เจœเจฟเจธ เจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน (เจœเจพเจ‚ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจจเจพเจฎ เจฆเจฟเฉฑเจคเฉ‡ เจชเฉœเจพเจ…) เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจ•เฉเจฐเจฎเจตเจพเจฐ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจจเจพเจฒ เจ‡เฉฑเจ• Bash เจธเจ•เฉเจฐเจฟเจชเจŸ เจฆเฉเจ†เจฐเจพ เจนเฉฑเจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ‡เจน เจ†เจˆเจธเจฌเจฐเจ— เจฆเจพ เจธเจฟเจฐเจซ เจธเจฟเจฐเจพ เจธเฉ€ เจœเจฟเจธเจฆเจพ เจนเจฐ เจ•เฉ‹เจˆ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจฆเจพ เจนเฉˆ. เจชเจฐ เจนเฉ‹เจฐ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจนเจจ, เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡:

  1. เจ…เจ•เจธเจฐ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจฆเฉ‡ เจชเฉœเจพเจ… 'เจคเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจ•เฉเจ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจฎเจพเจŠเจ‚เจŸ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจคเฉ€เจœเฉ€-เจงเจฟเจฐ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš apt เจตเจฐเจ—เฉ‡ เจ•เจฎเจพเจ‚เจก เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจจเฉ‚เฉฐ เจ•เฉˆเจธเจผ เจ•เจฐเฉ‹)เฅค
  2. เจ…เจธเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚ Ansimate เจธเจผเฉˆเฉฑเจฒ เจตเจฟเฉฑเจš เจฒเจฟเจ–เจฃ เจฆเฉ€ เจฌเจœเจพเจ.
  3. เจ…เจธเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚ เจกเฉŒเจ•เจฐ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจฌเจฃเจพเจ“ (เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจฆเฉ€ เจ•เจฟเจ‰เจ‚ เจฒเฉ‹เฉœ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจพเจจเฉ‚เฉฐ เจ‡เจธ เจฒเจˆ เจธเจญ เจ•เฉเจ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจœเจฆเฉ‹เจ‚ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเฉฑเจธเจŸเจฐ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฒเจพ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚?)
  4. เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€, เจœเจฟเจธ เจจเฉ‚เฉฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจจเจพเจฒ เจธเจฎเจเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ: เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจคเฉ‹เจ‚ เจตเฉฑเจ–-เจตเฉฑเจ– เจ•เจฎเจพเจ‚เจกเจพเจ‚ (เจœเฉ‡ เจฎเจฒเจŸเฉ€-เจธเจŸเฉ‡เจœ เจตเจฐเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ), เจ‡เฉฑเจ•เฉ‹ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฆเฉ‡ เจ•เจˆ เจ•เจฎเจฟเจŸ, เจ•เจˆ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒเจพเจ‚เฅค
  5. เจตเฉฐเจกเฉ€ เจตเจฟเจงเจพเจจ เจธเจญเจพ: เจ…เจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจšเฉ€เจœเจผเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉŒเจกเจพเจ‚ เจตเจฟเฉฑเจš เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ "เจ…เจ•เจพเจฒเจฟเจ•" เจนเจจ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจฆเจพ เจ•เฉˆเจธเจผ เจ—เจพเจ‡เจฌ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฟเจคเฉ‡ เจตเฉฑเจ–เจฐเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค
  6. เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจ‡เฉฑเจ›เจพเจตเจพเจ‚ เจฆเฉ‡ เจธเจฟเจ–เจฐ เจฆเจพ เจจเจพเจฎ เจฆเจฟเฉฑเจคเจพ เจ†เจŸเฉ‹เจฎเฉˆเจœเจฟเจ•: เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ 'เจคเฉ‡ เจœเจพเจฃเจพ, เจ•เฉเจ เจ•เจฎเจพเจ‚เจก เจŸเจพเจˆเจช เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจคเจฟเจ†เจฐ เจšเจฟเฉฑเจคเจฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจ†เจฆเจฐเจธเจผ เจนเฉ‹เจตเฉ‡เจ—เจพ, เจ‡เจธ เจ—เฉฑเจฒ เจฆเฉ€ เจธเจฎเจ เจจเจพเจฒ เจ•เจฟ เจ•เจฟเจตเฉ‡เจ‚ เจ…เจคเฉ‡ เจ•เฉ€ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจ•เจฐเจจเจพ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจฎเฉˆเจจเฉ‚เฉฐ เจจเจฟเฉฑเจœเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจฏเจ•เฉ€เจจ เจจเจนเฉ€เจ‚ เจนเฉˆ เจ•เจฟ เจธเจพเจฐเฉ€เจ†เจ‚ เจธเฉ‚เจ–เจฎเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจฆเฉ‡เจ–เจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ.

เจ…เจคเฉ‡ เจ‡เฉฑเจฅเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจนเจจ:

  • เจฎเฉ‹เจฌเฉ€/เจฌเจฟเจฒเจกเจ•เจฟเฉฑเจŸ - เจกเฉŒเจ•เจฐ เจ‡เฉฐเจ• เจฆเจพ เจ‡เฉฑเจ• เจฌเจฟเจฒเจกเจฐ (เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจกเฉŒเจ•เจฐ เจฆเฉ‡ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจตเจฟเฉฑเจš เจเจ•เฉ€เจ•เฉเจฐเจฟเจค), เจœเฉ‹ เจ‡เจนเจจเจพเจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ;
  • เจ•เจจเฉ€เจ•เฉ‹ - เจ—เฉ‚เจ—เจฒ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจฌเจฟเจฒเจกเจฐ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ;
  • Buildpacks.io - CNCF เจฆเฉ€ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจœเจพเจฆเฉ‚ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ…เจคเฉ‡, เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡, เจฒเฉ‡เจ…เจฐเจพเจ‚ เจฒเจˆ เจฐเฉ€เจฌเฉ‡เจธ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจฆเจฟเจฒเจšเจธเจช เจนเฉฑเจฒ;
  • เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจ‰เจชเจฏเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจฌเจฟเจฒเจกเจพเจน, genuinetools/img...

...เจ…เจคเฉ‡ เจฆเฉ‡เจ–เฉ‹ GitHub 'เจคเฉ‡ เจ‰เจจเฉเจนเจพเจ‚ เจฆเฉ‡ เจ•เจฟเฉฐเจจเฉ‡ เจคเจพเจฐเฉ‡ เจนเจจเฅค เจฏเจพเจจเฉ€ เจ‡เฉฑเจ• เจชเจพเจธเฉ‡, docker build เจฎเฉŒเจœเฉ‚เจฆ เจนเฉˆ เจ…เจคเฉ‡ เจ•เฉเจ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ, เจชเจฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจฆเจพ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจนเฉฑเจฒ เจจเจนเฉ€เจ‚ เจนเฉ‹เจ‡เจ† เจนเฉˆ - เจ‡เจธเจฆเจพ เจธเจฌเฉ‚เจค เจตเจฟเจ•เจฒเจชเจ• เจ•เฉเจฒเฉˆเจ•เจŸเจฐเจพเจ‚ เจฆเจพ เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจตเจฟเจ•เจพเจธ เจนเฉˆ, เจœเจฟเจจเฉเจนเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐ เจ‡เฉฑเจ• เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจฆเฉ‡ เจ•เฉเจ เจนเจฟเฉฑเจธเฉ‡ เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

werf เจตเจฟเฉฑเจš เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€

เจ‡เจธ เจฒเจˆ เจธเจพเจจเฉ‚เฉฐ เจฎเจฟเจฒเฉ€ werf (เจชเจนเจฟเจฒเจพเจ‚) เจฎเจธเจผเจนเฉ‚เจฐ เจกเฉˆเจช เจตเจพเจ‚เจ—) โ€” เจซเจฒเฉˆเจ‚เจŸ เจ•เฉฐเจชเจจเฉ€ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจ‰เจชเจฏเฉ‹เจ—เจคเจพ, เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจ•เจˆ เจธเจพเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจฌเจฃเจพ เจฐเจนเฉ‡ เจนเจพเจ‚เฅค เจ‡เจน เจธเจญ 5 เจธเจพเจฒ เจชเจนเจฟเจฒเจพเจ‚ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒ เจฌเจฃเจพเจ‰เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจฌเจพเจธเจผ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจ‡เจ† เจธเฉ€, เจ…เจคเฉ‡ เจชเจฟเจ›เจฒเฉ‡ 3 เจธเจพเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจ‡เจธเจฆเฉ€ เจ†เจชเจฃเฉ€ เจ—เจฟเฉฑเจŸ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจชเฉ‚เจฐเจพ เจตเจฟเจ•เจพเจธ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค (เจชเจนเจฟเจฒเจพเจ‚ เจฐเฉ‚เจฌเฉ€ เจตเจฟเฉฑเจš, เจ…เจคเฉ‡ เจซเจฟเจฐ เจฆเฉเจฌเจพเจฐเจพ เจฒเจฟเจ–เจฟเจ† เจœเจพเจฃ เจฒเจˆ, เจ…เจคเฉ‡ เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚ เจจเจพเจฎ เจฌเจฆเจฒเจฟเจ† เจ—เจฟเจ†). เจตเจฐเจซ เจตเจฟเฉฑเจš เจตเจฟเจงเจพเจจ เจธเจญเจพ เจฆเฉ‡ เจ•เจฟเจนเฉœเฉ‡ เจฎเฉเฉฑเจฆเฉ‡ เจนเฉฑเจฒ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ?

werf - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš CI / CD เจฒเจˆ เจธเจพเจกเจพ เจŸเฉ‚เจฒ (เจธเฉฐเจ–เฉ‡เจช เจ…เจคเฉ‡ เจตเฉ€เจกเฉ€เจ“ เจฐเจฟเจชเฉ‹เจฐเจŸ)

เจจเฉ€เจฒเฉ‡ เจตเจฟเฉฑเจš เจฐเฉฐเจ—เจค เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจฌเจฟเจฒเจก เจ‰เจธเฉ‡ เจฎเฉ‡เจœเจผเจฌเจพเจจ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจ…เจคเฉ‡ เจชเฉ€เจฒเฉ‡ เจตเจฟเฉฑเจš เจ‰เจœเจพเจ—เจฐ เจ•เฉ€เจคเฉ‡ เจ—เจ เจฎเฉเฉฑเจฆเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ—เจฐเจฎเฉ€เจ†เจ‚ เจฆเฉ‡ เจ…เฉฐเจค เจคเฉฑเจ• เจชเฉ‚เจฐเจพ เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจœเจจเจพ เจนเฉˆ.

เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจชเฉเจฐเจ•เจพเจธเจผเจจ เจฆเจพ เจชเฉœเจพเจ… (เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค)

เจ…เจธเฉ€เจ‚ เจกเจพเจ‡เจฒ เจ•เฉ€เจคเจพ docker push... - เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจ…เฉฑเจชเจฒเฉ‹เจก เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจ•เฉ€ เจฎเฉเจธเจผเจ•เจฒ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ? เจ…เจคเฉ‡ เจซเจฟเจฐ เจธเจตเจพเจฒ เจ‰เฉฑเจ เจฆเจพ เจนเฉˆ: "เจฎเฉˆเจจเฉ‚เฉฐ เจšเจฟเฉฑเจคเจฐ 'เจคเฉ‡ เจ•เจฟเจนเฉœเจพ เจŸเฉˆเจ— เจฒเจ—เจพเจ‰เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ?" เจ‡เจน เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ•เจพเจฐเจจ เจฒเจˆ เจชเฉˆเจฆเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจ—เจฟเจŸเจซเจฒเฉ‹ (เจœเจพเจ‚ เจนเฉ‹เจฐ เจ—เจฟเฉฑเจŸ เจฐเจฃเจจเฉ€เจคเฉ€) เจ…เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ, เจ…เจคเฉ‡ เจ‰เจฆเจฏเฉ‹เจ— เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ เจ•เจฟ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš เจœเฉ‹ เจ•เฉเจ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจ‰เจน เจ—เจฟเฉฑเจŸ เจตเจฟเฉฑเจš เจตเจพเจชเจฐเจฆเจพ เจนเฉˆเฅค เจ†เจ–เจผเจฐเจ•เจพเจฐ, เจ—เจฟเฉฑเจŸ เจธเฉฑเจšเจพเจˆ เจฆเจพ เจธเจพเจกเจพ เจ‡เฉฑเจ•เฉ‹ เจ‡เฉฑเจ• เจธเจฐเฉ‹เจค เจนเฉˆเฅค

เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ‡เฉฐเจจเจพ เจฎเฉเจธเจผเจ•เจฒ เจ•เฉ€ เจนเฉˆ? เจชเฉเจฐเจœเจจเจจเจฏเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ“: เจ—เจฟเฉฑเจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจšเจจเจฌเฉฑเจงเจคเจพ เจคเฉ‹เจ‚, เจœเฉ‹ เจ•เจฟ เจ•เฉเจฆเจฐเจค เจตเจฟเฉฑเจš เจ…เจŸเฉฑเจฒ เจนเฉˆ (เจ…เจŸเฉฑเจฒ), เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฒเจˆ, เจœเจฟเจธ เจจเฉ‚เฉฐ เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเจพ เจฐเฉฑเจ–เจฟเจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจ‡เจน เจธเจพเจกเฉ‡ เจฒเจˆ เจตเฉ€ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ เจฎเฉ‚เจฒ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเฉ‹, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ‡เจน เจธเจฎเจเจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš เจšเฉฑเจฒ เจฐเจนเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เจฟเจธ เจคเฉ‹เจ‚ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€ (เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจกเจฟเจซ เจ…เจคเฉ‡ เจธเจฎเจพเจจ เจšเฉ€เจœเจผเจพเจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚)เฅค

เจŸเฉˆเจ—เจฟเฉฐเจ— เจฐเจฃเจจเฉ€เจคเฉ€เจ†เจ‚

เจชเจนเจฟเจฒเฉ€ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจนเฉˆ git เจฆเจฟเจจ. เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจŸเฉˆเจ— เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ 1.0. เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เฉ‹เจฒ เจธเจŸเฉ‡เจœ เจ…เจคเฉ‡ เจ‰เจคเจชเจพเจฆเจจ เจนเฉˆ, เจœเจฟเฉฑเจฅเฉ‡ เจ‡เจน เจšเจฟเฉฑเจคเจฐ เจ…เฉฑเจชเจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ—เจฟเฉฑเจŸ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ•เจฎเจฟเจŸ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ•เจฟเจธเฉ‡ เจธเจฎเฉ‡เจ‚ เจ…เจธเฉ€เจ‚ เจŸเฉˆเจ— เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ 2.0. เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจคเฉ‹เจ‚ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจ…เจจเฉเจธเจพเจฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจŸเฉˆเจ— เจฆเฉ‡ เจจเจพเจฒ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฆเฉ‡ เจนเจพเจ‚ 2.0. เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจธเจŸเฉ‡เจœ 'เจคเฉ‡ เจฐเฉ‹เจฒ เจ†เจŠเจŸ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡, เจœเฉ‡เจ•เจฐ เจธเจญ เจ เฉ€เจ• เจนเฉˆ, เจคเจพเจ‚ เจ‰เจคเจชเจพเจฆเจจ เจฒเจˆเฅค

werf - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš CI / CD เจฒเจˆ เจธเจพเจกเจพ เจŸเฉ‚เจฒ (เจธเฉฐเจ–เฉ‡เจช เจ…เจคเฉ‡ เจตเฉ€เจกเฉ€เจ“ เจฐเจฟเจชเฉ‹เจฐเจŸ)

เจ‡เจธ เจชเจนเฉเฉฐเจš เจจเจพเจฒ เจธเจฎเฉฑเจธเจฟเจ† เจ‡เจน เจนเฉˆ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจŸเฉˆเจ— เจฒเจ—เจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจ•เฉ‡เจตเจฒ เจคเจฆ เจนเฉ€ เจ‡เจธเจจเฉ‚เฉฐ เจŸเฉˆเจธเจŸ เจ•เฉ€เจคเจพ เจ…เจคเฉ‡ เจฐเฉ‹เจฒ เจ†เจŠเจŸ เจ•เฉ€เจคเจพเฅค เจ•เจฟเจ‰เจ‚? เจชเจนเจฟเจฒเจพเจ‚, เจ‡เจน เจธเจฟเจฐเจซเจผ เจคเจฐเจ•เจนเฉ€เจฃ เจนเฉˆ: เจ…เจธเฉ€เจ‚ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจฆเจพ เจ‡เฉฑเจ• เจธเฉฐเจธเจ•เจฐเจฃ เจœเจพเจฐเฉ€ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚ เจœเจฟเจธเจฆเจพ เจ…เจธเฉ€เจ‚ เจ…เจœเฉ‡ เจคเฉฑเจ• เจŸเฉˆเจธเจŸ เจตเฉ€ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจนเฉˆ (เจ…เจธเฉ€เจ‚ เจนเฉ‹เจฐ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจŸเฉˆเจ— เจฒเจ—เจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ)เฅค เจฆเฉ‚เจœเจพ, เจ‡เจน เจฎเจพเจฐเจ— เจ—เจฟเฉฑเจŸเจซเจฒเฉ‹ เจฆเฉ‡ เจ…เจจเฉเจ•เฉ‚เจฒ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจฆเฉ‚เจœเจพ เจตเจฟเจ•เจฒเจช เจนเฉˆ git เจ•เจฎเจฟเจŸ + เจŸเฉˆเจ—. เจฎเจพเจธเจŸเจฐ เจฌเฉเจฐเจพเจ‚เจš เจฆเจพ เจ‡เฉฑเจ• เจŸเฉˆเจ— เจนเฉˆ 1.0; เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ‡ เจฒเจˆ - เจ‰เจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจš เจคเฉˆเจจเจพเจค เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐเฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจชเฉเจฐเฉ€เจตเจฟเจŠ เจ…เจคเฉ‡ เจธเจŸเฉ‡เจœเจฟเฉฐเจ— เจฐเฉ‚เจช เจนเจจเฅค เจ…เฉฑเจ—เฉ‡ เจ…เจธเฉ€เจ‚ เจ—เจฟเฉฑเจŸเจซเจฒเฉ‹ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚: เจตเจฟเจ•เจพเจธ เจฒเจˆ เจฎเฉเฉฑเจ– เจธเจผเจพเจ–เจพ เจตเจฟเฉฑเจš (develop) เจ…เจธเฉ€เจ‚ เจจเจตเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจœเจฟเจธเจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจชเจ›เจพเจฃเจ•เจฐเจคเจพ เจจเจพเจฒ เจ‡เฉฑเจ• เจตเจšเจจเจฌเฉฑเจงเจคเจพ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ #c1. เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจธ เจชเจ›เจพเจฃเจ•เจฐเจคเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ (#c1). เจ‰เจธเฉ‡ เจชเจ›เจพเจฃเจ•เจฐเจคเจพ เจฆเฉ‡ เจจเจพเจฒ เจ…เจธเฉ€เจ‚ เจชเฉเจฐเฉ€เจตเจฟเจŠ เจฒเจˆ เจฐเฉ‹เจฒ เจ†เจŠเจŸ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ…เจธเฉ€เจ‚ เจ•เจฎเจฟเจŸเจพเจ‚ เจจเจพเจฒ เจตเฉ€ เจ…เจœเจฟเจนเจพ เจนเฉ€ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ #c2 ะธ #c3.

เจœเจฆเฉ‹เจ‚ เจธเจพเจจเฉ‚เฉฐ เจ…เจนเจฟเจธเจพเจธ เจนเฉ‹เจ‡เจ† เจ•เจฟ เจ‡เฉฑเจฅเฉ‡ เจ•เจพเจซเจผเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจนเจจ, เจ…เจธเฉ€เจ‚ เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจธเจฅเจฟเจฐ เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚. Git เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจผเจพเจ–เจพ เจฌเจฃเจพเจ“ release_1.1 (เจฌเฉ‡เจธ 'เจคเฉ‡ #c3 เจคเฉฑเจ• develop). เจ‡เจธ เจฐเฉ€เจฒเฉ€เจœเจผ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจˆ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ... เจ‡เจน เจชเจฟเจ›เจฒเฉ‡ เจชเฉœเจพเจ… เจตเจฟเฉฑเจš เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€. เจ‡เจธ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจธเจŸเฉ‡เจœเจฟเฉฐเจ— เจฒเจˆ เจฐเฉ‹เจฒ เจ†เจŠเจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจ…เจธเฉ€เจ‚ เจตเจฟเฉฑเจš เจฌเฉฑเจ— เจ เฉ€เจ• เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ #c4 เจ…เจคเฉ‡ เจ‡เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจธเจŸเฉ‡เจœเจฟเฉฐเจ— เจฒเจˆ เจฐเฉ‹เจฒ เจ†เจŠเจŸ เจ•เจฐเฉ‹เฅค เจ‡เจธ เจฆเฉ‡ เจจเจพเจฒ เจนเฉ€, เจตเจฟเฉฑเจš เจตเจฟเจ•เจพเจธ เจšเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉˆ develop, เจœเจฟเฉฑเจฅเฉ‹เจ‚ เจธเจฎเฉ‡เจ‚-เจธเจฎเฉ‡เจ‚ 'เจคเฉ‡ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ release_1.1. เจ•เจฟเจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ•เจฎเจฟเจŸ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจธเจŸเฉ‡เจœเจฟเฉฐเจ— เจฒเจˆ เจ…เจชเจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจจเจพเจฒ เจ…เจธเฉ€เจ‚ เจ–เฉเจธเจผ เจนเจพเจ‚ (#c25).

เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจฐเฉ€เจฒเฉ€เจœเจผ เจธเจผเจพเจ–เจพ เจจเฉ‚เฉฐ (เจซเจพเจธเจŸ-เจซเจพเจฐเจตเจฐเจก เจจเจพเจฒ) เจฎเจฟเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ (release_1.1) เจฎเจพเจธเจŸเจฐ เจตเจฟเฉฑเจš. เจ…เจธเฉ€เจ‚ เจ‡เจธ เจชเฉเจฐเจคเฉ€เจฌเฉฑเจงเจคเจพ 'เจคเฉ‡ เจจเจตเฉ‡เจ‚ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจŸเฉˆเจ— เจฒเจ—เจพเจ‡เจ† เจนเฉˆ (1.1). เจชเจฐ เจ‡เจน เจšเจฟเฉฑเจคเจฐ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ‡เจ•เฉฑเจ เจพ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจ‡เจธเจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจ‡เจ•เฉฑเจ เจพ เจจเจพ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจฎเฉŒเจœเฉ‚เจฆเจพ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฆเฉ‚เจœเจพ เจŸเฉˆเจ— เจœเฉ‹เฉœเจฆเฉ‡ เจนเจพเจ‚ (เจนเฉเจฃ เจ‡เจธ เจตเจฟเฉฑเจš เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจŸเฉˆเจ— เจนเจจ #c25 ะธ 1.1). เจ‰เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ‰เจคเจชเจพเจฆเจจ เจฒเจˆ เจฐเฉ‹เจฒ เจ†เจŠเจŸ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจ‡เฉฑเจ• เจ•เจฎเจœเจผเฉ‹เจฐเฉ€ เจนเฉˆ เจ•เจฟ เจธเจŸเฉ‡เจœเจฟเฉฐเจ— 'เจคเฉ‡ เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจ…เฉฑเจชเจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ (#c25), เจ…เจคเฉ‡ เจ‰เจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจš เจ‡เจน เจตเฉฑเจ–เจฐเจพ เจนเฉˆ (1.1), เจชเจฐ เจ…เจธเฉ€เจ‚ เจœเจพเจฃเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ "เจธเจฐเฉ€เจฐเจ• เจคเฉŒเจฐ 'เจคเฉ‡" เจ‡เจน เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจคเฉ‹เจ‚ เจ‰เจนเฉ€ เจšเจฟเฉฑเจคเจฐ เจนเจจเฅค

werf - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš CI / CD เจฒเจˆ เจธเจพเจกเจพ เจŸเฉ‚เจฒ (เจธเฉฐเจ–เฉ‡เจช เจ…เจคเฉ‡ เจตเฉ€เจกเฉ€เจ“ เจฐเจฟเจชเฉ‹เจฐเจŸ)

เจ…เจธเจฒ เจจเฉเจ•เจธเจพเจจ เจ‡เจน เจนเฉˆ เจ•เจฟ เจฎเจฐเจœ เจ•เจฎเจฟเจŸ เจฒเจˆ เจ•เฉ‹เจˆ เจธเจฎเจฐเจฅเจจ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจซเจพเจธเจŸ-เจซเจพเจฐเจตเจฐเจก เจ•เจฐเจจเจพ เจชเจตเฉ‡เจ—เจพเฅค

เจ…เจธเฉ€เจ‚ เจนเฉ‹เจฐ เจ…เฉฑเจ—เฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจšเจพเจฒ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚... เจ†เจ“ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจตเฉ‡เจ–เฉ€เจ:

FROM ruby:2.3 as assets
RUN mkdir -p /app
WORKDIR /app
COPY . ./
RUN gem install bundler && bundle install
RUN bundle exec rake assets:precompile
CMD bundle exec puma -C config/puma.rb

FROM nginx:alpine
COPY --from=assets /app/public /usr/share/nginx/www/public

เจ†เจ“ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจธเจฟเจงเจพเจ‚เจค เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจฌเจฃเจพเจˆเจ:

  • เจตเจฐเจคเฉ‡ เจ—เจ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจฆเฉ‡ เจชเจ›เจพเจฃเจ•เจฐเจคเจพเจตเจพเจ‚ เจคเฉ‹เจ‚ SHA256 (ruby:2.3 ะธ nginx:alpine), เจœเฉ‹ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจฆเฉ‡ เจšเฉˆเฉฑเจ•เจธเจฎ เจนเจจ;
  • เจธเจพเจฐเฉ€เจ†เจ‚ เจŸเฉ€เจฎเจพเจ‚ (RUN, CMD เจ‡เจคเจ†เจฆเจฟ.);
  • SHA256 เจซเจพเจˆเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจœเฉ‹ เจœเฉ‹เฉœเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจธเจจเฅค

... เจ…เจคเฉ‡ เจ…เจœเจฟเจนเฉ€ เจซเจพเจˆเจฒ เจคเฉ‹เจ‚ เจšเฉˆเฉฑเจ•เจธเจฎ (เจฆเฉเจฌเจพเจฐเจพ SHA256) เจฒเจ“เฅค เจ‡เจน เจฆเจธเจคเจ–เจค เจนเจฐ เจšเฉ€เจœเจผ เจœเฉ‹ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจค เจ•เจฐเจฆเฉ€ เจนเฉˆ.

werf - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš CI / CD เจฒเจˆ เจธเจพเจกเจพ เจŸเฉ‚เจฒ (เจธเฉฐเจ–เฉ‡เจช เจ…เจคเฉ‡ เจตเฉ€เจกเฉ€เจ“ เจฐเจฟเจชเฉ‹เจฐเจŸ)

เจ†เจ‰ เจกเจพเจ‡เจ—เฉเจฐเจพเจฎ เจคเฉ‡ เจตเจพเจชเจธ เจšเจฒเฉ€เจ เจ…เจคเฉ‡ เจ•เจฎเจฟเจŸเจธ เจฆเฉ€ เจฌเจœเจพเจ เจ…เจธเฉ€เจ‚ เจ…เจœเจฟเจนเฉ‡ เจฆเจธเจคเจ–เจคเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡, i.e. เจฆเจธเจคเจ–เจคเจพเจ‚ เจจเจพเจฒ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจŸเฉˆเจ— เจ•เจฐเฉ‹เฅค

werf - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš CI / CD เจฒเจˆ เจธเจพเจกเจพ เจŸเฉ‚เจฒ (เจธเฉฐเจ–เฉ‡เจช เจ…เจคเฉ‡ เจตเฉ€เจกเฉ€เจ“ เจฐเจฟเจชเฉ‹เจฐเจŸ)

เจนเฉเจฃ, เจœเจฆเฉ‹เจ‚ เจ‡เจน เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจฐเฉ€เจฒเฉ€เจœเจผ เจคเฉ‹เจ‚ เจฎเจพเจธเจŸเจฐ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฎเจฟเจฒเจพเจ‰เจฃเจพ, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ…เจธเจฒ เจฎเจฐเจœ เจ•เจฎเจฟเจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚: เจ‡เจธเจฆเจพ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเจพ เจชเจ›เจพเจฃเจ•เจฐเจคเจพ เจนเฉ‹เจตเฉ‡เจ—เจพ, เจชเจฐ เจ‰เจนเฉ€ เจฆเจธเจคเจ–เจค เจนเฉ‹เจฃเจ—เฉ‡เฅค เจ‰เจธเฉ‡ เจชเจ›เจพเจฃเจ•เจฐเจคเจพ เจฆเฉ‡ เจจเจพเจฒ เจ…เจธเฉ€เจ‚ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจ‰เจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจš เจฐเฉ‹เจฒ เจ†เจŠเจŸ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจจเฉเจ•เจธเจพเจจ เจ‡เจน เจนเฉˆ เจ•เจฟ เจนเฉเจฃ เจ‡เจน เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพ เจ•เจฟ เจ•เจฟเจธ เจ•เจฟเจธเจฎ เจฆเฉ€ เจชเฉเจฐเจคเฉ€เจฌเฉฑเจงเจคเจพ เจจเฉ‚เฉฐ เจ‰เจคเจชเจพเจฆเจจ เจฒเจˆ เจงเฉฑเจ•เจฟเจ† เจ—เจฟเจ† เจธเฉ€ - เจšเฉˆเจ•เจธเจฎ เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจฆเจฟเจธเจผเจพ เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ. เจ‡เจน เจธเจฎเฉฑเจธเจฟเจ† เจฎเฉˆเจŸเจพเจกเฉ‡เจŸเจพ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจชเจฐเจค เจฆเฉเจ†เจฐเจพ เจนเฉฑเจฒ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ - เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจนเฉ‹เจฐ เจฆเฉฑเจธเจพเจ‚เจ—เจพเฅค

werf เจตเจฟเฉฑเจš เจŸเฉˆเจ—เจฟเฉฐเจ—

werf เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจนเฉ‹เจฐ เจตเฉ€ เจ…เฉฑเจ—เฉ‡ เจšเจฒเฉ‡ เจ—เจ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ•เฉˆเจธเจผ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจกเจฟเจธเจŸเฉเจฐเฉ€เจฌเจฟเจŠเจŸเจฟเจก เจฌเจฟเจฒเจก เจ•เจฐเจจ เจฆเฉ€ เจคเจฟเจ†เจฐเฉ€ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจ‡เฉฑเจ• เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจธเจŸเฉ‹เจฐ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ... เจ‡เจธ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจฆเฉ‹ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ‡ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพ เจฐเจนเฉ‡ เจนเจพเจ‚, เจ…เจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจนเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚ เจชเฉœเจพเจ… ะธ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ.

werf Git เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฌเจฟเจฒเจก-เจตเจฟเจธเจผเฉ‡เจธเจผ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจœเฉ‹ เจฌเจฟเจฒเจก เจฆเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจชเฉœเจพเจตเจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆ (เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเฉ‹, เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจธเจฅเจพเจชเจจเจพ เจ•เจฐเจจเจพ). เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเฉ‡ เจชเฉœเจพเจ… เจฆเฉ‡ เจšเฉˆเจ•เจธเจฎ เจตเจœเฉ‹เจ‚ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจฆเจธเจคเจ–เจค เจฆเฉ‡ เจจเจพเจฒ เจชเจนเจฟเจฒเฉ‡ เจชเฉœเจพเจ… เจฆเฉ‡ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจคเจฐ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจธเจฐเฉ‹เจค เจ•เฉ‹เจก เจœเฉ‹เฉœเจฆเฉ‡ เจนเจพเจ‚, เจจเจตเฉ€เจ‚ เจธเจŸเฉ‡เจœ เจšเจฟเฉฑเจคเจฐ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจ‡เจธเจฆเฉ‡ เจšเฉˆเฉฑเจ•เจธเจฎ เจฆเฉ€ เจ—เจฃเจจเจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚... เจ‡เจน เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจธเจพเจฐเฉ‡ เจชเฉœเจพเจตเจพเจ‚ เจฒเจˆ เจฆเฉเจนเจฐเจพเจˆเจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ, เจœเจฟเจธ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจธเจพเจจเฉ‚เฉฐ เจธเจŸเฉ‡เจœ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจฎเจฟเจฒเจฆเจพ เจนเฉˆเฅค เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจ…เฉฐเจคเจฟเจฎ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ‡ เจฎเฉ‚เจฒ เจฌเจพเจฐเฉ‡ เจฎเฉˆเจŸเจพเจกเฉ‡เจŸเจพ เจตเฉ€ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เจธ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจจเจพเจฒ เจŸเฉˆเจ— เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ (เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจตเฉ‡เจฐเจตเฉ‡)เฅค

werf - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš CI / CD เจฒเจˆ เจธเจพเจกเจพ เจŸเฉ‚เจฒ (เจธเฉฐเจ–เฉ‡เจช เจ…เจคเฉ‡ เจตเฉ€เจกเฉ€เจ“ เจฐเจฟเจชเฉ‹เจฐเจŸ)

เจฎเฉฐเจจ เจฒเจ“ เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจ•เจฎเจฟเจŸ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉ‹เจก เจฌเจฆเจฒเจฟเจ† เจ—เจฟเจ† เจนเฉˆเฅค เจ•เฉ€ เจนเฉ‹เจตเฉ‡เจ—เจพ? เจ•เฉ‹เจก เจฌเจฆเจฒเจพเจ… เจฒเจˆ, เจ‡เฉฑเจ• เจชเฉˆเจš เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจชเฉœเจพเจ… เจšเจฟเฉฑเจคเจฐ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจ‡เจธ เจฆเฉ‡ เจนเจธเจคเจพเจ–เจฐ เจชเฉเจฐเจพเจฃเฉ‡ เจชเฉœเจพเจ… เจšเจฟเฉฑเจคเจฐ เจ…เจคเฉ‡ เจจเจตเฉ‡เจ‚ เจชเฉˆเจš เจฆเฉ‡ เจšเฉˆเจ•เจธเจฎ เจตเจœเฉ‹เจ‚ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ‡ เจœเจพเจฃเจ—เฉ‡เฅค เจ‡เจธ เจšเจฟเฉฑเจคเจฐ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจ…เฉฐเจคเจฎ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพเฅค เจ‡เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจฆเจพ เจตเจฟเจตเจนเจพเจฐ เจฆเฉ‚เจœเฉ‡ เจชเฉœเจพเจตเจพเจ‚ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเจพเจฒ เจตเจพเจชเจฐเฉ‡เจ—เจพเฅค

เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจธเจŸเฉ‡เจœ เจšเจฟเฉฑเจคเจฐ เจ‡เฉฑเจ• เจ•เฉˆเจš เจนเจจ เจœเฉ‹ เจตเฉฐเจก เจ•เฉ‡ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจ, เจ…เจคเฉ‡ เจ‡เจธ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฌเจฃเจพเจˆเจ†เจ‚ เจ—เจˆเจ†เจ‚ เจคเจธเจตเฉ€เจฐเจพเจ‚ เจกเฉŒเจ•เจฐ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ…เฉฑเจชเจฒเฉ‹เจก เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค

werf - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš CI / CD เจฒเจˆ เจธเจพเจกเจพ เจŸเฉ‚เจฒ (เจธเฉฐเจ–เฉ‡เจช เจ…เจคเฉ‡ เจตเฉ€เจกเฉ€เจ“ เจฐเจฟเจชเฉ‹เจฐเจŸ)

เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจฆเฉ€ เจธเจซเจพเจˆ

เจ…เจธเฉ€เจ‚ เจฒเฉ‡เจ…เจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพเจ‰เจฃ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจจเจนเฉ€เจ‚ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจฎเจฟเจŸเจพเจ เจ—เจ เจŸเฉˆเจ—เจพเจ‚ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจฒเจŸเจ•เจฆเฉ€เจ†เจ‚ เจฐเจนเจฟเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ - เจ‡เจน เจกเฉŒเจ•เจฐ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจฆเฉ€ เจ‡เฉฑเจ• เจฎเจฟเจ†เจฐเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจนเฉˆ. เจ…เจธเฉ€เจ‚ เจ…เจœเจฟเจนเฉ€ เจธเจฅเจฟเจคเฉ€ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚ เจœเจฆเฉ‹เจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจกเฉŒเจ•เจฐ เจŸเฉˆเจ— เจ‡เจ•เฉฑเจ เฉ‡ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจธเจฎเจเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจธเจพเจจเฉ‚เฉฐ เจนเฉเจฃ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ•เฉเจ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจ‰เจน เจœเจ—เฉเจนเจพ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเจจ (เจ…เจคเฉ‡/เจœเจพเจ‚ เจ…เจธเฉ€เจ‚ เจ‡เจธเจฆเจพ เจญเฉเจ—เจคเจพเจจ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚)เฅค

เจธเจซเจพเจˆ เจฆเฉ€เจ†เจ‚ เจฐเจฃเจจเฉ€เจคเฉ€เจ†เจ‚ เจ•เฉ€ เจนเจจ?

  1. เจคเฉเจธเฉ€เจ‚ เจฌเจธ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจธเจพเจซเจผ เจจเจพ เจ•เจฐเฉ‹. เจ•เจˆ เจตเจพเจฐ เจŸเฉˆเจ—เจธ เจฆเฉ€ เจ‡เฉฑเจ• เจตเฉฑเจกเฉ€ เจ‰เจฒเจเจฃ เจจเฉ‚เฉฐ เจ–เฉ‹เจฒเฉเจนเจฃ เจจเจพเจฒเฉ‹เจ‚ เจตเจพเจงเฉ‚ เจฅเจพเจ‚ เจฒเจˆ เจฅเฉ‹เฉœเฉเจนเจพ เจœเจฟเจนเจพ เจญเฉเจ—เจคเจพเจจ เจ•เจฐเจจเจพ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ†เจธเจพเจจ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจชเจฐ เจ‡เจน เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจ–เจพเจธ เจฌเจฟเฉฐเจฆเฉ‚ เจคเฉฑเจ• เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ.
  2. เจชเฉ‚เจฐเจพ เจฐเฉ€เจธเฉˆเจŸ. เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจคเจธเจตเฉ€เจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ CI เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซเจผ เจฎเฉŒเจœเฉ‚เจฆเจพ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ€ เจฎเฉเฉœ-เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เฉฑเจ• เจธเจฎเฉฑเจธเจฟเจ† เจชเฉˆเจฆเจพ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจœเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจจเฉ‚เฉฐ เจ‰เจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจš เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจšเจฟเฉฑเจคเจฐ เจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ - เจ‡เฉฑเจ• เจœเจฟเจธเจฆเฉ€ เจ…เจœเฉ‡ เจคเฉฑเจ• เจ•เจฟเจธเฉ‡ เจฆเฉเจ†เจฐเจพ เจœเจพเจ‚เจš เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆเฅค เจ‡เจน เจ…เจŸเฉฑเจฒ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ‡ เจตเจฟเจšเจพเจฐ เจจเฉ‚เฉฐ เจ–เจคเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค
  3. เจจเฉ€เจฒเจพ-เจนเจฐเจพ. เจ‡เฉฑเจ• เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจ“เจตเจฐเจซเจฒเฉ‹ เจนเฉ‹เจฃ เจฒเฉฑเจ—เฉ€ - เจ…เจธเฉ€เจ‚ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‚เจœเฉ€ 'เจคเฉ‡ เจ…เฉฑเจชเจฒเฉ‹เจก เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจชเจฟเจ›เจฒเฉ€ เจตเจฟเจงเฉ€ เจตเจพเจ‚เจ— เจ‰เจนเฉ€ เจธเจฎเฉฑเจธเจฟเจ†: เจคเฉเจธเฉ€เจ‚ เจ•เจฟเจธ เจฌเจฟเฉฐเจฆเฉ‚ 'เจคเฉ‡ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเฉ‹ เจ“เจตเจฐเจซเจฒเฉ‹ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹ เจ—เจˆ เจนเฉˆ?
  4. เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจจเจพเจฒ. เจ•เฉ€ 1 เจฎเจนเฉ€เจจเฉ‡ เจคเฉ‹เจ‚ เจชเฉเจฐเจพเจฃเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจคเจธเจตเฉ€เจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพเจ‰เจฃเจพ เจนเฉˆ? เจชเจฐ เจจเจฟเจธเจผเจšเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจ…เจœเจฟเจนเฉ€ เจธเฉ‡เจตเจพ เจนเฉ‹เจตเฉ‡เจ—เฉ€ เจœเฉ‹ เจ‡เจ• เจฎเจนเฉ€เจจเฉ‡ เจคเฉ‹เจ‚ เจ…เจชเจกเฉ‡เจŸ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ ...
  5. เจนเฉฑเจฅ เจจเจพเจฒ เจ‡เจน เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเฉ‹ เจ•เจฟ เจ•เฉ€ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฎเจฟเจŸเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ‡เฉฑเจฅเฉ‡ เจฆเฉ‹ เจธเฉฑเจšเจฎเฉเฉฑเจš เจตเจฟเจนเจพเจฐเจ• เจตเจฟเจ•เจฒเจช เจนเจจ: เจธเจพเจซเจผ เจจเจพ เจ•เจฐเฉ‹ เจœเจพเจ‚ เจจเฉ€เจฒเฉ‡-เจนเจฐเฉ‡ + เจนเฉฑเจฅเฉ€เจ‚ เจธเฉเจฎเฉ‡เจฒ เจจเจพ เจ•เจฐเฉ‹เฅค เจฌเจพเจ…เจฆ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚: เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจธเจฎเจเจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเจจ เจฆเจพ เจธเจฎเจพเจ‚ เจ† เจ—เจฟเจ† เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš เจธเจพเจฐเฉ€เจ†เจ‚ เจจเจตเฉ€เจ†เจ‚ เจคเจธเจตเฉ€เจฐเจพเจ‚ เจœเฉ‹เฉœเจฆเฉ‡ เจนเฉ‹, เจ‰เจฆเจพเจนเจฐเจฃ เจฒเจˆ, เจ‡เฉฑเจ• เจฎเจนเฉ€เจจเฉ‡ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจเฅค เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฎเจนเฉ€เจจเฉ‡ เจฌเจพเจ…เจฆ, เจฆเฉ‡เจ–เฉ‹ เจ•เจฟ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš เจ•เจฟเจนเฉœเฉ‡ เจชเฉ‹เจก เจ…เจœเฉ‡ เจตเฉ€ เจชเฉเจฐเจพเจฃเฉ€ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจฐเจนเฉ‡ เจนเจจ, เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉ€ เจจเจตเฉ€เจ‚ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเฉ‹เฅค

เจ…เจธเฉ€เจ‚ เจ•เฉ€ เจ•เจฐเจจ เจ†เจ เจนเจพเจ‚ werf? เจ…เจธเฉ€เจ‚ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

  1. เจ—เจฟเฉฑเจŸ เจนเฉˆเจก: เจธเจพเจฐเฉ‡ เจŸเฉˆเจ—เจธ, เจธเจพเจฐเฉ€เจ†เจ‚ เจฌเฉเจฐเจพเจ‚เจšเจพเจ‚ - เจ‡เจน เจฎเฉฐเจจ เจ•เฉ‡ เจ•เจฟ เจธเจพเจจเฉ‚เฉฐ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจ—เจฟเฉฑเจŸ เจตเจฟเฉฑเจš เจŸเฉˆเจ— เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเจฐ เจšเฉ€เจœเจผ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ (เจ…เจคเฉ‡ เจœเฉ‡ เจจเจนเฉ€เจ‚, เจคเจพเจ‚ เจธเจพเจจเฉ‚เฉฐ เจ‡เจธเจจเฉ‚เฉฐ เจ—เจฟเฉฑเจŸ เจตเจฟเฉฑเจš เจนเฉ€ เจฎเจฟเจŸเจพเจ‰เจฃ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ);
  2. เจธเจพเจฐเฉ€เจ†เจ‚ เจซเจฒเฉ€เจ†เจ‚ เจœเฉ‹ เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเฉ‚เฉฐ เจฌเจพเจนเจฐ เจ•เฉฑเจขเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ;
  3. เจชเฉเจฐเจพเจฃเฉ€ เจฐเจฟเจชเจฒเฉ€เจ•เจพเจธเฉˆเจŸเจธ (เจœเฉ‹ เจนเจพเจฒ เจนเฉ€ เจตเจฟเฉฑเจš เจœเจพเจฐเฉ€ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€), เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจนเฉˆเจฒเจฎ เจฐเฉ€เจฒเฉ€เจœเจผเจพเจ‚ เจจเฉ‚เฉฐ เจธเจ•เฉˆเจจ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‰เฉฑเจฅเฉ‡ เจจเจตเฉ€เจจเจคเจฎ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจšเฉเจฃเจจ เจฆเฉ€ เจตเฉ€ เจฏเฉ‹เจœเจจเจพ เจฌเจฃเจพ เจฐเจนเฉ‡ เจนเจพเจ‚เฅค

... เจ…เจคเฉ‡ เจ‡เจธ เจธเฉˆเฉฑเจŸ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจตเฉเจนเจพเจˆเจŸเจฒเจฟเจธเจŸ เจฌเจฃเจพเจ“ - เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเฉ‚เจšเฉ€ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจจเจนเฉ€เจ‚ เจนเจŸเจพเจตเจพเจ‚เจ—เฉ‡เฅค เจ…เจธเฉ€เจ‚ เจฌเจพเจ•เฉ€ เจธเจญ เจ•เฉเจ เจธเจพเจซเจผ เจ•เจฐ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚, เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ…เจธเฉ€เจ‚ เจ…เจจเจพเจฅ เจธเจŸเฉ‡เจœ เจšเจฟเฉฑเจคเจฐ เจฒเฉฑเจญเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉ€ เจฎเจฟเจŸเจพ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจธเจŸเฉ‡เจœ เจคเฉˆเจจเจพเจค เจ•เจฐเฉ‹

เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจ˜เฉ‹เจธเจผเจฃเจพเจฏเฉ‹เจ—เจคเจพ

เจชเจนเจฟเจฒเจพ เจฌเจฟเฉฐเจฆเฉ‚ เจœเจฟเจธ เจตเฉฑเจฒ เจฎเฉˆเจ‚ เจคเฉˆเจจเจพเจคเฉ€ เจตเจฟเฉฑเจš เจงเจฟเจ†เจจ เจ–เจฟเฉฑเจšเจฃเจพ เจšเจพเจนเจพเจ‚เจ—เจพ, เจ‰เจน เจนเฉˆ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เฉ€เจคเฉ‡ เจธเจฐเฉ‹เจค เจธเฉฐเจฐเจšเจจเจพ เจฆเจพ เจฐเฉ‹เจฒเจ†เจŠเจŸ, เจ˜เฉ‹เจธเจผเจฃเจพเจคเจฎเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจ˜เฉ‹เจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจจ เจตเจพเจฒเจพ เจ…เจธเจฒ YAML เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจ…เจธเจฒ เจตเจฟเฉฑเจš เจšเฉฑเจฒ เจฐเจนเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจคเฉ‹เจ‚ เจนเจฎเฉ‡เจธเจผเจพเจ‚ เจฌเจนเฉเจค เจตเฉฑเจ–เจฐเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจฆเจพ เจนเฉˆ:

  1. เจชเจ›เจพเจฃเจ•เจฐเจคเจพ;
  2. เจธเฉ‡เจตเจพ เจœเจพเจฃเจ•เจพเจฐเฉ€;
  3. เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฎเฉ‚เจฒ เจฎเฉเฉฑเจฒ;
  4. เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจฅเจฟเจคเฉ€ เจตเจพเจฒเจพ เจญเจพเจ—;
  5. เจฆเจพเจ–เจฒเจพ เจตเฉˆเจฌเจนเฉเฉฑเจ• เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจœเฉ‹เจ‚ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚;
  6. เจตเฉฑเจ–-เจตเฉฑเจ– เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐเจพเจ‚ (เจ…เจคเฉ‡ เจธเจผเจกเจฟเจŠเจฒเจฐ) เจฆเฉ‡ เจ•เฉฐเจฎ เจฆเจพ เจจเจคเฉ€เจœเจพเฅค

เจ‡เจธ เจฒเจˆ, เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจธเจฐเฉ‹เจค เจธเฉฐเจฐเจšเจจเจพ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ (เจจเฉเจฏเฉ‚), เจ…เจธเฉ€เจ‚ เจ‡เจธ เจจเจพเจฒ เจฎเฉŒเจœเฉ‚เจฆเจพ, "เจฒเจพเจˆเจต" เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจฒเฉˆ เจ•เฉ‡ เจ“เจตเจฐเจฐเจพเจˆเจŸ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ (เจธเจฟเฉฑเจงเจพ). เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ เจธเจพเจจเฉ‚เฉฐ เจคเฉเจฒเจจเจพ เจ•เจฐเจจเฉ€ เจชเจตเฉ‡เจ—เฉ€ เจจเฉเจฏเฉ‚ เจ†เจ–เจฐเฉ€ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจจเจพเจฒ (เจ†เจ–เจฐเฉ€-เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ) เจ…เจคเฉ‡ เจ‡เจธ 'เจคเฉ‡ เจฐเฉ‹เจฒ เจ•เจฐเฉ‹ เจธเจฟเฉฑเจงเจพ เจชเฉˆเจš เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ.

เจ‡เจธ เจชเจนเฉเฉฐเจš เจจเฉ‚เฉฐ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ 2-เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจฎเจฟเจฒเจพเจ‰เจฃเจพ. เจ‡เจน เจนเฉˆเจฒเจฎ เจตเจฟเฉฑเจš เจตเจฐเจคเจฟเจ† เจ—เจฟเจ† เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ.

เจตเฉ€ เจนเฉˆ 3-เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจฎเจฟเจฒเจพเจ‰เจฃเจพ, เจœเฉ‹ เจ•เจฟ เจ‡เจธ เจตเจฟเฉฑเจš เจตเฉฑเจ–เจฐเจพ เจนเฉˆ:

  • เจคเฉเจฒเจจเจพ เจ†เจ–เจฐเฉ€-เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ ะธ เจจเฉเจฏเฉ‚, เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ•เฉ€ เจฎเจฟเจŸเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€;
  • เจคเฉเจฒเจจเจพ เจจเฉเจฏเฉ‚ ะธ เจธเจฟเฉฑเจงเจพ, เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ•เฉ€ เจœเฉ‹เฉœเจฟเจ† เจœเจพเจ‚ เจฌเจฆเจฒเจฟเจ† เจ—เจฟเจ† เจนเฉˆ;
  • เจธเฉฐเจ–เฉ‡เจช เจชเฉˆเจš เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจธเจฟเฉฑเจงเจพ.

เจ…เจธเฉ€เจ‚ เจนเฉˆเจฒเจฎ เจฆเฉ‡ เจจเจพเจฒ 1000+ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจคเฉˆเจจเจพเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ‡เจธเจฒเจˆ เจ…เจธเฉ€เจ‚ เจ…เจธเจฒ เจตเจฟเฉฑเจš 2-เจตเฉ‡เจ… เจฎเจฐเจœ เจจเจพเจฒ เจฐเจนเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจธ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจนเจจ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจชเฉˆเจšเจพเจ‚ เจจเจพเจฒ เจนเฉฑเจฒ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจนเจจ, เจœเฉ‹ เจนเฉˆเจฒเจฎ เจจเฉ‚เฉฐ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค

เจ…เจธเจฒ เจฐเฉ‹เจฒเจ†เจ‰เจŸ เจธเจฅเจฟเจคเฉ€

เจธเจพเจกเฉ‡ CI เจธเจฟเจธเจŸเจฎ เจฆเฉเจ†เจฐเจพ เจ…เจ—เจฒเฉ€ เจ˜เจŸเจจเจพ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฒเจˆ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจธเฉฐเจฐเจšเจจเจพ เจคเจฟเจ†เจฐ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ‡เจน เจ‡เจธเจจเฉ‚เฉฐ เจตเจฐเจคเฉ‹เจ‚ เจฒเจˆ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ (เจฒเจพเจ—เฉ‚ เจ•เจฐเฉ‹) เจ‡เฉฑเจ• เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš - เจนเฉˆเจฒเจฎ เจœเจพเจ‚ kubectl apply. เจ…เฉฑเจ—เฉ‡, เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฆเฉฑเจธเจฟเจ† เจ—เจฟเจ† เจเจจ-เจตเฉ‡เจ… เจ…เจญเฉ‡เจฆ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจฒเจˆ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ API CI เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจฎเจจเจœเจผเฉ‚เจฐเฉ€ เจจเจพเจฒ เจœเจตเจพเจฌ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจน เจ‡เจธเจฆเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐเฅค

werf - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš CI / CD เจฒเจˆ เจธเจพเจกเจพ เจŸเฉ‚เจฒ (เจธเฉฐเจ–เฉ‡เจช เจ…เจคเฉ‡ เจตเฉ€เจกเฉ€เจ“ เจฐเจฟเจชเฉ‹เจฐเจŸ)

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

เจธเจญ เจ•เฉเจ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจ•เจฐเจจ เจฒเจˆ, เจ‡เจธ เจธเจ•เฉ€เจฎ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจฒเจฟเฉฐเจ• เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ - เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจŸเจฐเฉˆเจ•เจฐ เจœเฉ‹ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ API เจคเฉ‹เจ‚ เจธเจฅเจฟเจคเฉ€ เจฆเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจšเฉ€เจœเจผเจพเจ‚ เจฆเฉ€ เจ…เจธเจฒ เจธเจฅเจฟเจคเฉ€ เจฆเฉ‡ เจนเฉ‹เจฐ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฒเจˆ เจ‡เจธเจจเฉ‚เฉฐ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เจฐเฉ‡เจ—เจพ. เจ…เจธเฉ€เจ‚ เจ—เฉ‹ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฌเจฃเจพเจˆ เจนเฉˆ - cubedog (เจ‡เจธเจฆเฉ€ เจ˜เฉ‹เจธเจผเจฃเจพ เจตเฉ‡เจ–เฉ‹ เจ‡เฉฑเจฅเฉ‡), เจœเฉ‹ เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ werf เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค

werf เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจ‡เจธ เจŸเจฐเฉˆเจ•เจฐ เจฆเฉ‡ เจตเจฟเจตเจนเจพเจฐ เจจเฉ‚เฉฐ เจเจจเฉ‹เจŸเฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจœเฉ‹ เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸเจธ เจœเจพเจ‚ เจธเจŸเฉ‡เจŸเจซเฉเจฒเจธเฉˆเจŸเจธ 'เจคเฉ‡ เจฐเฉฑเจ–เฉ‡ เจ—เจ เจนเจจเฅค เจฎเฉเฉฑเจ– เจตเจฟเจ†เจ–เจฟเจ† - fail-mode - เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจ…เจฐเจฅเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฎเจเจฆเจพ เจนเฉˆ:

  • IgnoreAndContinueDeployProcess - เจ…เจธเฉ€เจ‚ เจ‡เจธ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจจเฉ‚เฉฐ เจฐเฉ‹เจฒ เจ†เจŠเจŸ เจ•เจฐเจจ เจฆเฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจจเจœเจผเจฐเจ…เฉฐเจฆเจพเจœเจผ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจคเฉˆเจจเจพเจคเฉ€ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจพเจ‚;
  • FailWholeDeployProcessImmediately โ€” เจ‡เจธ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฆเฉ€ เจนเฉˆ;
  • HopeUntilEndOfDeployProcess โ€” เจ…เจธเฉ€เจ‚ เจ‰เจฎเฉ€เจฆ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ‡เจน เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจคเฉˆเจจเจพเจคเฉ€ เจฆเฉ‡ เจ…เฉฐเจค เจคเฉฑเจ• เจ•เฉฐเจฎ เจ•เจฐเฉ‡เจ—เจพเฅค

เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจธเจฐเฉ‹เจคเจพเจ‚ เจ…เจคเฉ‡ เจเจจเฉ‹เจŸเฉ‡เจธเจผเจจ เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเจพ เจ‡เจน เจธเฉเจฎเฉ‡เจฒ fail-mode:

werf - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš CI / CD เจฒเจˆ เจธเจพเจกเจพ เจŸเฉ‚เจฒ (เจธเฉฐเจ–เฉ‡เจช เจ…เจคเฉ‡ เจตเฉ€เจกเฉ€เจ“ เจฐเจฟเจชเฉ‹เจฐเจŸ)

เจœเจฆเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเฉ€ เจตเจพเจฐ เจคเฉˆเจจเจพเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ (MongoDB) เจ…เจœเฉ‡ เจคเจฟเจ†เจฐ เจจเจพ เจนเฉ‹เจตเฉ‡ - เจคเฉˆเจจเจพเจคเฉ€เจ†เจ‚ เจ…เจธเจซเจฒ เจนเฉ‹ เจœเจพเจฃเจ—เฉ€เจ†เจ‚เฅค เจชเจฐ เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจฆเฉ‡ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจฃ เจฒเจˆ เจชเจฒ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡ เจคเฉˆเจจเจพเจคเฉ€ เจ…เจœเฉ‡ เจตเฉ€ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค

เจตเจฐเจซ เจตเจฟเฉฑเจš เจ•เฉเจฌเฉ‡เจกเฉ‹เจ— เจฒเจˆ เจฆเฉ‹ เจนเฉ‹เจฐ เจเจจเฉ‹เจŸเฉ‡เจธเจผเจจ เจนเจจ:

  • failures-allowed-per-replica - เจนเจฐเฉ‡เจ• เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจฒเจˆ เจฎเจจเจœเจผเฉ‚เจฐ เจซเจพเจฒเจธ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€;
  • show-logs-until โ€” เจ‰เจธ เจชเจฒ เจจเฉ‚เฉฐ เจจเจฟเจฏเฉฐเจคเฉเจฐเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจธเจพเจฐเฉ‡ เจฐเฉ‹เจฒ เจ†เจŠเจŸ เจชเฉŒเจกเจพเจ‚ เจคเฉ‹เจ‚ werf (stdout เจตเจฟเฉฑเจš) เจฒเฉŒเจ— เจจเจนเฉ€เจ‚ เจฆเจฟเจ–เจพเจ‰เจ‚เจฆเจพเฅค เจกเจฟเจซเจพเจฒเจŸ เจนเฉˆ PodIsReady (เจธเฉเจจเฉ‡เจนเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจจเจœเจผเจฐเจ…เฉฐเจฆเจพเจœเจผ เจ•เจฐเจจ เจฒเจˆ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจธเจผเจพเจ‡เจฆ เจจเจนเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจœเจฆเฉ‹เจ‚ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจชเฉŒเจก 'เจคเฉ‡ เจ†เจ‰เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹ เจœเจพเจตเฉ‡), เจชเจฐ เจฎเฉเฉฑเจฒ เจตเฉ€ เจตเฉˆเจง เจนเจจ: ControllerIsReady ะธ EndOfDeploy.

เจ…เจธเฉ€เจ‚ เจคเจพเจ‡เจจเจพเจคเฉ€ เจคเฉ‹เจ‚ เจนเฉ‹เจฐ เจ•เฉ€ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚?

เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจตเจฐเจฃเจฟเจค เจฆเฉ‹ เจฌเจฟเฉฐเจฆเฉ‚เจ†เจ‚ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ…เจธเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚:

  • เจฆเฉ‡เจ–เจฃ เจฒเจˆ เจฒเฉŒเจ— - เจ…เจคเฉ‡ เจธเจฟเจฐเจซ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡, เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ•เจคเจพเจฐ เจตเจฟเฉฑเจš เจธเจญ เจ•เฉเจ เจจเจนเฉ€เจ‚;
  • เจŸเจฐเฉˆเจ• เจชเฉเจฐเจ—เจคเฉ€, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจœเฉ‡ เจ•เฉฐเจฎ "เจšเฉเฉฑเจช" เจ•เจˆ เจฎเจฟเฉฐเจŸเจพเจ‚ เจฒเจˆ เจฒเจŸเจ•เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจธเจฎเจเจฃเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ เจ•เจฟ เจ‰เฉฑเจฅเฉ‡ เจ•เฉ€ เจนเฉ‹ เจฐเจฟเจนเจพ เจนเฉˆ;
  • ะธะผะตั‚ัŒ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจฐเฉ‹เจฒเจฌเฉˆเจ• เจœเฉ‡เจ•เจฐ เจ•เฉเจ เจ—เจฒเจค เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆ (เจ…เจคเฉ‡ เจ‡เจธ เจฒเจˆ เจคเฉˆเจจเจพเจคเฉ€ เจฆเฉ€ เจ…เจธเจฒ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจœเจพเจฃเจจเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ)เฅค เจฐเฉ‹เจฒเจ†เจ‰เจŸ เจชเจฐเจฎเจพเจฃเฉ‚ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ: เจœเจพเจ‚ เจคเจพเจ‚ เจ‡เจน เจ…เฉฐเจค เจคเฉฑเจ• เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจพเจ‚ เจนเจฐ เจšเฉ€เจœเจผ เจ†เจชเจฃเฉ€ เจชเจฟเจ›เจฒเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจตเจพเจชเจธ เจ†เจ‰เจ‚เจฆเฉ€ เจนเฉˆเฅค

เจจเจคเฉ€เจœเฉ‡

เจ‡เฉฑเจ• เจ•เฉฐเจชเจจเฉ€ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจธเจพเจกเฉ‡ เจฒเจˆ, เจกเจฟเจฒเฉ€เจตเจฐเฉ€ เจฆเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจชเฉœเจพเจตเจพเจ‚ (เจฌเจฟเจฒเจก, เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค, เจคเฉˆเจจเจพเจค) 'เจคเฉ‡ เจธเจพเจฐเฉ€เจ†เจ‚ เจตเจฐเจฃเจจ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจธเฉ‚เจ–เจฎเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจธเฉ€เจ†เจˆ เจธเจฟเจธเจŸเจฎ เจ…เจคเฉ‡ เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจ•เจพเจซเจผเฉ€ เจนเจจเฅค werf.

เจ•เจฟเจธเฉ‡ เจธเจฟเฉฑเจŸเฉ‡ เจฆเฉ€ เจฌเจœเจพเจ:

werf - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš CI / CD เจฒเจˆ เจธเจพเจกเจพ เจŸเฉ‚เจฒ (เจธเฉฐเจ–เฉ‡เจช เจ…เจคเฉ‡ เจตเฉ€เจกเฉ€เจ“ เจฐเจฟเจชเฉ‹เจฐเจŸ)

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

เจตเฉ€เจกเฉ€เจ“เจœเจผ เจ…เจคเฉ‡ เจธเจฒเจพเจˆเจกเจพเจ‚

เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจคเฉ‹เจ‚ เจตเฉ€เจกเฉ€เจ“ (~47 เจฎเจฟเฉฐเจŸ):

เจฐเจฟเจชเฉ‹เจฐเจŸ เจฆเฉ€ เจชเฉ‡เจธเจผเจ•เจพเจฐเฉ€:

PS

เจธเจพเจกเฉ‡ เจฌเจฒเฉŒเจ— 'เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจฐเจฟเจชเฉ‹เจฐเจŸเจพเจ‚:

เจธเจฐเฉ‹เจค: www.habr.com

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