เดชเตเดฒเตเดฎเดฟเด•เตเด•เตŠเดชเตเดชเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต—เด•เดฐเตเดฏเด™เตเด™เตพ เด•เต‹เดกเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต. เดญเดพเด—เด‚ 2

เดŽเดฒเตเดฒเดพเดตเตผเด•เตเด•เตเด‚ เดนเดพเดฏเต. เด‡เดจเตเดจเต เดžเด™เตเด™เตพ เดจเดฟเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เด…เดตเดธเดพเดจ เดญเดพเด—เด‚ เดชเด™เตเด•เดฟเดŸเตเดจเตเดจเต. "เดชเตเดณเตเดฎเดฟเด•เตเด•เตŠเดชเตเดชเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต—เด•เดฐเตเดฏเด™เตเด™เตพ เด’เดฐเต เด•เต‹เดกเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต", เด‡เดคเดฟเดจเตเดฑเต† เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เด•เต‹เดดเตโ€Œเดธเต เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเด•เตพเด•เตเด•เดพเดฏเดฟ เดชเตเดฐเดคเตเดฏเต‡เด•เด‚ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดฟเดฏเดคเดพเดฃเต "DevOps เดชเตเดฐเดพเด•เตเดŸเต€เดธเตเด•เดณเตเด‚ เดŸเต‚เดณเตเด•เดณเตเด‚".

เดชเตเดฒเตเดฎเดฟเด•เตเด•เตŠเดชเตเดชเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต—เด•เดฐเตเดฏเด™เตเด™เตพ เด•เต‹เดกเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต. เดญเดพเด—เด‚ 2

เดตเดฟเดจเตเดฏเดพเดธ เดชเดฐเดฟเดถเต‹เดงเดจ

เดˆ เดฐเต€เดคเดฟเดฏเดฟเดฒเตเดณเตเดณ เดชเดฐเดฟเดถเต‹เดงเดจ เดถเด•เตเดคเดฎเดพเดฏ เด’เดฐเต เดธเดฎเต€เดชเดจเดฎเดพเดฃเต เด•เต‚เดŸเดพเดคเต† เดžเด™เตเด™เดณเตเดŸเต† เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เด•เต‹เดกเดฟเดจเตเดฑเต† เด†เดจเตเดคเดฐเดฟเด• เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดตเตˆเดฑเตเดฑเต เดฌเต‹เด•เตเดธเต เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดจเดŸเดคเตเดคเดพเตป เดžเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดจเดฎเตเด•เตเด•เต เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดคเดฟเดจเต† เด‡เดคเต เด’เดฐเต เดชเดฐเดฟเดงเดฟเดตเดฐเต† เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเต. เดฏเดฅเดพเตผเดคเตเดฅ เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดชเตเดฒเตเดฎเดฟ เดธเตƒเดทเตเดŸเดฟเดšเตเดš เด‡เตป-เดฎเต†เดฎเตเดฎเดฑเดฟ เดตเดฟเดจเตเดฏเดพเดธ เดชเดฆเตเดงเดคเดฟเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเดพเดฃเต เดชเดฐเดฟเดถเต‹เดงเดจเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเดคเต, เด…เดคเดฟเดจเดพเตฝ เดตเดฟเดจเตเดฏเดพเดธเด‚ เดคเดจเตเดจเต† เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ. เด…เดคเตเดคเดฐเด‚ เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ, เดชเตเดฒเตเดฎเดฟเด•เตเด•เต เด’เดฐเต เด‡เดจเตเดฑเด—เตเดฐเต‡เดทเตป เดŸเต†เดธเตเดฑเตเดฑเต เดซเตเดฐเต†เดฏเดฟเด‚เดตเตผเด•เตเด•เต เด‰เดฃเตเดŸเต. เดˆ เดฐเดฃเตเดŸเต เดธเดฎเต€เดชเดจเด™เตเด™เดณเตเด‚ เด’เดฐเตเดฎเดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต!

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

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

เด‡เดคเดฟเดจเตเดฑเต† เด’เดฐเต เด…เดŸเดฟเดธเตเดฅเดพเดจ เด‰เดฆเดพเดนเดฐเดฃเด‚ เด•เดพเดฃเตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เด’เดจเตเดจเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต‹เดฏเต†เดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚ เดŽเดธเต 3 เดฌเด•เตเด•เดฑเตเดฑเต:

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

เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เด‡เดจเตเดฑเด—เตเดฐเต‡เดทเตป

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

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

เด‡เดตเดฏเดฟเตฝ เด“เดฐเต‹เดจเตเดจเดฟเดจเตเด‚, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดฟเดฏเดชเตเดชเต†เดŸเตเดŸ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดเด•เต€เด•เดฐเดฃ เดธเด‚เดตเดฟเดงเดพเดจเดตเตเดฎเดพเดฏเตเดณเตเดณ เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเต† เดชเตเดฒเตเดฎเดฟ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเต. เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเดฟเดฒเต‚เดŸเต†, เด‡เดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเดฑเดฟเดจเดพเดฏเดฟ เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเต‹เดซเตโ€Œเดฑเตเดฑเตโ€Œเดตเต†เดฏเดฑเดฟเดจเตเดณเตเดณ เด…เดคเต‡ เดŸเต†เดธเตเดฑเตเดฑเต เด•เดตเดฑเต‡เดœเต เดจเตฝเด•เตเดจเตเดจเต.

เดธเดพเดงเดพเดฐเดฃ เดธเดฟเด เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เตพเด•เตเด•เต เดชเตเดฒเตเดฎเดฟเด•เตเด•เต เดชเดฟเดจเตเดคเตเดฃเดฏเตเดฃเตเดŸเต. เด…เดตเดฏเดฟเตฝ เดšเดฟเดฒเดคเต เด‡เดคเดพ:

เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏ เดตเดฟเดตเดฐเด™เตเด™เตพเด•เตเด•เต, เดฆเดฏเดตเดพเดฏเดฟ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด• เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดกเต†เดฒเดฟเดตเดฑเดฟ.

เดŽเดซเต†เดฎเดฑเตฝ เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟเด•เตพ

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

เดจเดฟเด™เตเด™เตพ GitHub เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดชเตเดฒเตเดฎเดฟ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต GitHub เด†เดชเตเดชเต, เดจเดฟเด™เตเด™เดณเตเดŸเต† CI เดชเตˆเดชเตเดชเตเดฒเตˆเดจเดฟเดจเตเดณเตเดณเดฟเตฝ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเดฟเตปเดตเดฒเดฟเด•เตเด•เดพเตป เดธเตเดตเต€เด•เดพเดฐเตเดฏเดค เดชเดฐเดฟเดถเต‹เดงเดจเดฏเต† เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเด‚. GitHub เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดพเตฝ เดฎเดคเดฟ, เดจเดฟเด™เตเด™เดณเตเดŸเต† CI, เดชเต‚เตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเดฟเดฒเต‡เด•เตเด•เต เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เดชเตเดฐเดฟเดตเตเดฏเต‚เด•เตพ, เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเตเด•เตพ, เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดซเดฒเด™เตเด™เตพ เดŽเดจเตเดจเดฟเดตเดฏเต† เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ Pulumi เดšเต‡เตผเด•เตเด•เตเด‚:

เดชเตเดฒเตเดฎเดฟเด•เตเด•เตŠเดชเตเดชเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต—เด•เดฐเตเดฏเด™เตเด™เตพ เด•เต‹เดกเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต. เดญเดพเด—เด‚ 2

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

เดซเดฒเด‚

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

เดชเตเดฒเตเดฎเดฟ - เด“เดชเตเดชเตบ เดธเต‹เดดเตโ€Œเดธเต เดธเต‹เดซเตโ€Œเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ, เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดธเตŒเดœเดจเตเดฏเดตเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดฟเดฏเดชเตเดชเต†เดŸเตเดŸ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดญเดพเดทเด•เดณเตเดฎเดพเดฏเตเด‚ เด•เตเดฒเต—เดกเตเด•เดณเตเดฎเดพเดฏเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต - เด‡เดจเตเดจเต เดคเดจเตเดจเต† เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เต‚!

โ†’ เด†เดฆเตเดฏ เดญเดพเด—เด‚

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

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