เจชเฉเจฒเฉเจฎเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉ‹เจก เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจเจพเฅค เจญเจพเจ— 2

เจธเจพเจฐเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจธเจคเจฟ เจธเจผเฉเจฐเฉ€ เจ…เจ•เจพเจฒ. เจ…เฉฑเจœ เจ…เจธเฉ€เจ‚ เจคเฉเจนเจพเจกเฉ‡ เจจเจพเจฒ เจฒเฉ‡เจ– เจฆเจพ เจ…เฉฐเจคเจฎ เจนเจฟเฉฑเจธเจพ เจธเจพเจ‚เจเจพ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚เฅค "เจชเจฒเฉ‚เจฎเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉ‹เจก เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ€ เจœเจพเจ‚เจš", เจœเจฟเจธ เจฆเจพ เจ…เจจเฉเจตเจพเจฆ เจ•เฉ‹เจฐเจธ เจฆเฉ‡ เจตเจฟเจฆเจฟเจ†เจฐเจฅเฉ€เจ†เจ‚ เจฒเจˆ เจตเจฟเจธเจผเฉ‡เจธเจผ เจคเฉŒเจฐ 'เจคเฉ‡ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ "DevOps เจ…เจญเจฟเจ†เจธ เจ…เจคเฉ‡ เจธเจพเจงเจจ".

เจชเฉเจฒเฉเจฎเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉ‹เจก เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจเจพเฅค เจญเจพเจ— 2

เจคเฉˆเจจเจพเจคเฉ€ เจŸเฉˆเจธเจŸเจฟเฉฐเจ—

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

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

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

เจ‡เจธ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจจเฉ‚เฉฐ เจšเจฒเจพ เจ•เฉ‡ เจคเฉเจธเฉ€เจ‚ เจนเฉ‡เจ  เจฒเจฟเจ–เจฟเจ†เจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹:

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

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจœเจฒเจฆเฉ€ เจนเฉ€ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡, เจ‡เจธ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจจเฉ‚เฉฐ เจฐเจจเจŸเจพเจˆเจฎ เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจ•เจฐเจจ เจฒเจˆ เจตเฉ€ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจธเจงเจพเจฐเจจ เจเจ•เฉ€เจ•เจฐเจฃ เจŸเฉˆเจธเจŸ

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

เจนเฉ‡เจ เจพเจ‚ เจธเจพเจกเจพ เจ‡เฉฑเจ• เจธเจฐเจฒ เจŸเฉˆเจธเจŸ เจนเฉˆ เจ‰เจฆเจพเจนเจฐเจจ เจœเฉ‹ S3 เจฌเจพเจฒเจŸเฉ€ เจ…เจคเฉ‡ เจ•เฉเจ เจนเฉ‹เจฐ เจตเจธเจคเฉ‚เจ†เจ‚ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆ:

example_test.go:

package test
 
import (
    "os"
    "path"
    "testing"
 
    "github.com/pulumi/pulumi/pkg/testing/integration"
)
 
func TestExamples(t *testing.T) {
    awsRegion := os.Getenv("AWS_REGION")
    if awsRegion == "" {
        awsRegion = "us-west-1"
    }
    cwd, _ := os.Getwd()
    integration.ProgramTest(t, &integration.ProgramTestOptions{
        Quick:       true,
        SkipRefresh: true,
        Dir:         path.Join(cwd, "..", "..", "aws-js-s3-folder"),
        Config: map[string]string{
            "aws:region": awsRegion,
        },
    })
}

เจ‡เจน เจŸเฉˆเจธเจŸ เจซเฉ‹เจฒเจกเจฐ เจฒเจˆ เจธเจŸเฉˆเจ• เจฌเจฃเจพเจ‰เจฃ, เจธเฉ‹เจงเจฃ เจ…เจคเฉ‡ เจจเจธเจผเจŸ เจ•เจฐเจจ เจฆเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจœเฉ€เจตเจจ เจšเฉฑเจ•เจฐ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฒเฉฐเจ˜เจฆเจพ เจนเฉˆ aws-js-s3-folder. เจชเจพเจธ เจ•เฉ€เจคเฉ‡ เจ—เจ เจŸเฉˆเจธเจŸ เจฆเฉ€ เจฐเจฟเจชเฉ‹เจฐเจŸ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฒเจ—เจญเจ— เจ‡เฉฑเจ• เจฎเจฟเฉฐเจŸ เจฒเฉฑเจ—เฉ‡เจ—เจพ:

$ go test .
PASS
ok      ... 43.993s

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

เจธเจฐเฉ‹เจค เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เฉ€เจคเฉ€ เจœเจพ เจฐเจนเฉ€ เจนเฉˆ

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

เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ ExtraRuntimeValidation เจจเฉ‚เฉฐ ProgramTestOptions เจธเจพเจจเฉ‚เฉฐ เจชเฉเจฒเฉเจฎเฉ€ เจฆเฉเจ†เจฐเจพ เจฐเจฟเจ•เจพเจฐเจก เจ•เฉ€เจคเฉ€ เจชเฉ‹เจธเจŸ-เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจตเจพเจงเฉ‚ เจœเจพเจ‚เจš เจ•เจฐ เจธเจ•เฉ€เจเฅค เจ‡เจธ เจตเจฟเฉฑเจš เจธเฉฐเจฐเจšเจจเจพ, เจจเจฟเจฐเจฏเจพเจค เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจฎเฉเฉฑเจฒ, เจธเจพเจฐเฉ‡ เจธเจฐเฉ‹เจค เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจธเฉฐเจชเฉฑเจคเฉ€ เจฎเฉเฉฑเจฒ, เจ…เจคเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจธเจพเจฐเฉ€เจ†เจ‚ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจธเจฎเฉ‡เจค เจจเจคเฉ€เจœเฉ‡ เจตเจพเจฒเฉ‡ เจธเจŸเฉˆเจ• เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจฆเจพ เจ‡เฉฑเจ• เจชเฉ‚เจฐเจพ เจธเจจเฉˆเจชเจธเจผเจพเจŸ เจธเจผเจพเจฎเจฒ เจนเฉˆเฅค

เจ‡เจธเจฆเฉ€ เจ‡เฉฑเจ• เจฎเฉเจขเจฒเฉ€ เจ‰เจฆเจพเจนเจฐเจฃ เจฆเฉ‡เจ–เจฃ เจฒเจˆ, เจ†เจ“ เจœเจพเจ‚เจš เจ•เจฐเฉ€เจ เจ•เจฟ เจธเจพเจกเจพ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ‡เฉฑเจ• เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ S3 เจฌเจพเจฒเจŸเฉ€:

  integration.ProgramTest(t, &integration.ProgramTestOptions{
        // as before...
        ExtraRuntimeValidation: func(t *testing.T, stack integration.RuntimeValidationStackInfo) {
            var foundBuckets int
            for _, res := range stack.Deployment.Resources {
                if res.Type == "aws:s3/bucket:Bucket" {
                    foundBuckets++
                }
            }
            assert.Equal(t, 1, foundBuckets, "Expected to find a single AWS S3 Bucket")
        },
    })

เจนเฉเจฃ, เจœเจฆเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจ—เฉ‹ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจ‡เจน เจจเจพ เจธเจฟเจฐเจซเจผ เจœเฉ€เจตเจจ เจšเฉฑเจ•เจฐ เจŸเฉˆเจธเจŸเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจฌเฉˆเจŸเจฐเฉ€ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฒเฉฐเจ˜เฉ‡เจ—เจพ, เจฌเจฒเจ•เจฟ, เจธเจŸเฉˆเจ• เจจเฉ‚เฉฐ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจคเฉˆเจจเจพเจค เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ‡เจน เจจเจคเฉ€เจœเฉ‡ เจตเจพเจฒเฉ€ เจธเจฅเจฟเจคเฉ€ 'เจคเฉ‡ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจœเจพเจ‚เจš เจ•เจฐเฉ‡เจ—เจพเฅค

เจฐเจจเจŸเจพเจˆเจฎ เจŸเฉˆเจธเจŸ

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

เจคเฉเจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ…เฉฐเจฆเจพเจœเจผเจพ เจฒเจ—เจพ เจฒเจฟเจ† เจนเฉˆ เจ•เจฟ เจ‡เจน เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเจจเจพ เจนเฉˆ: เจตเจฟเจ•เจฒเจช ExtraRuntimeValidation เจจเฉ‚เฉฐ ProgramTestOptions - เจ‡เจน เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจ‡เฉฑเจ• เจตเจงเฉ€เจ† เจฎเฉŒเจ•เจพ เจนเฉˆเฅค เจ‡เจธ เจธเจฎเฉ‡เจ‚, เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจชเฉ‚เจฐเฉ€ เจธเจฅเจฟเจคเฉ€ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจ•เจธเจŸเจฎ เจ—เฉ‹ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹เฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจœเจพเจฃเจ•เจพเจฐเฉ€ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ IP เจเจกเจฐเฉˆเฉฑเจธ, URL, เจ…เจคเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจ•เจฒเจพเจ‰เจก เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจ…เจคเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจจเจพเจฒ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‡เฉฐเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจจ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจนเจฐ เจšเฉ€เจœเจผเฅค

เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจธเจพเจกเจพ เจŸเฉˆเจธเจŸ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจธเฉฐเจชเจคเฉ€ เจจเฉ‚เฉฐ เจจเจฟเจฐเจฏเจพเจค เจ•เจฐเจฆเจพ เจนเฉˆ webEndpoint เจฌเจพเจฒเจŸเฉ€ เจ•เจนเจฟเฉฐเจฆเฉ‡ เจนเจจ websiteUrl, เจœเฉ‹ เจ•เจฟ เจชเฉ‚เจฐเจพ URL เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ index document. เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ เจฒเฉฑเจญเจฃ เจฒเจˆ เจธเจŸเฉ‡เจŸ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจ–เฉเจฆเจพเจˆ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ bucket เจ…เจคเฉ‡ เจ‰เจธ เจธเฉฐเจชเฉฑเจคเฉ€ เจจเฉ‚เฉฐ เจธเจฟเฉฑเจงเฉ‡ เจชเฉœเฉเจนเฉ‹, เจชเจฐ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจธเจพเจกเฉ‡ เจธเจŸเฉˆเจ• เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจจเจฟเจฐเจฏเจพเจค เจ•เจฐเจฆเฉ‡ เจนเจจ เจœเฉ‹ เจธเจพเจจเฉ‚เฉฐ เจœเจพเจ‚เจš เจฒเจˆ เจตเจฐเจคเจฃเจพ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ:

integration.ProgramTest(t, &integration.ProgramTestOptions{
            // as before ...
        ExtraRuntimeValidation: func(t *testing.T, stack integration.RuntimeValidationStackInfo) {
            url := "http://" + stack.Outputs["websiteUrl"].(string)
            resp, err := http.Get(url)
            if !assert.NoError(t, err) {
                return
            }
            if !assert.Equal(t, 200, resp.StatusCode) {
                return
            }
            defer resp.Body.Close()
            body, err := ioutil.ReadAll(resp.Body)
            if !assert.NoError(t, err) {
                return
            }
            assert.Contains(t, string(body), "Hello, Pulumi!")
        },
    })

เจธเจพเจกเฉ€เจ†เจ‚ เจชเจฟเจ›เจฒเฉ€เจ†เจ‚ เจฐเจจเจŸเจพเจˆเจฎ เจœเจพเจ‚เจšเจพเจ‚ เจตเจพเจ‚เจ—, เจ‡เจน เจšเฉˆเจ• เจธเจŸเฉˆเจ• เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจคเฉเจฐเฉฐเจค เจฌเจพเจ…เจฆ เจšเจฒเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพ, เจ‡เจน เจธเจญ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจ•เจพเจฒ เจฆเฉ‡ เจœเจตเจพเจฌ เจตเจฟเฉฑเจš go test. เจ…เจคเฉ‡ เจ‡เจน เจธเจฟเจฐเจซ เจ†เจˆเจธเจฌเจฐเจ— เจฆเฉ€ เจŸเจฟเจช เจนเฉˆโ€”เจนเจฐ เจ—เฉ‹ เจŸเฉˆเจธเจŸ เจซเฉ€เจšเจฐ เจœเฉ‹ เจคเฉเจธเฉ€เจ‚ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจฒเจฟเจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ‰เจชเจฒเจฌเจง เจนเฉˆเฅค

เจจเจฟเจฐเฉฐเจคเจฐ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเจพ เจเจ•เฉ€เจ•เจฐเจฃ

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

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

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

เจชเฉเจฒเฉเจฎเฉ€ เจ•เฉ‹เจฒ เจ†เจฎ CI เจธเจฟเจธเจŸเจฎเจพเจ‚ เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจนเฉˆเฅค เจ‡เฉฑเจฅเฉ‡ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ•เฉเจ เจนเจจ:

เจตเจงเฉ‡เจฐเฉ‡ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฒเจˆ, เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจฒเจˆ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจตเฉ‡เจ–เฉ‹ เจฒเจ—เจพเจคเจพเจฐ เจกเจฟเจฒเจฟเจตเจฐเฉ€.

เจ…เจฒเฉŒเจ•เจฟเจ• เจตเจพเจคเจพเจตเจฐเจฃ

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

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

เจชเฉเจฒเฉเจฎเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉ‹เจก เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจเจพเฅค เจญเจพเจ— 2

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

เจจเจคเฉ€เจœเจพ

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

เจชเฉเจฒเฉเจฎเฉ€ - เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ, เจตเจฐเจคเจฃ เจฒเจˆ เจฎเฉเจซเจค เจ…เจคเฉ‡ เจคเฉเจนเจพเจกเฉ€เจ†เจ‚ เจฎเจจเจชเจธเฉฐเจฆ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจญเจพเจธเจผเจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจ•เจฒเจพเจ‰เจกเจธ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ - เจ…เฉฑเจœ เจ‡เจธ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ‹!

โ†’ เจชเจนเจฟเจฒเจพ เจนเจฟเฉฑเจธเจพ

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

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