เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”เบเบฑเบš Pulumi. เบžเบฒเบเบ—เบต 2

เบชเบฐเบšเบฒเบเบ”เบตเบ—เบธเบเบ„เบปเบ™. เบกเบทเป‰เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเปเบšเปˆเบ‡เบ›เบฑเบ™เบเบฑเบšเบ—เปˆเบฒเบ™เบชเปˆเบงเบ™เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบก. "เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”เบเบฑเบš Pulumi", เบเบฒเบ™เปเบ›เบžเบฒเบชเบฒเบ—เบตเปˆเป„เบ”เป‰เบเบฐเบเบฝเบกเป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบชเบถเบเบชเบฒเบซเบผเบฑเบเบชเบนเบ” "เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบกเบท DevOps".

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”เบเบฑเบš Pulumi. เบžเบฒเบเบ—เบต 2

เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹

เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเปˆเบญเบ‡เบชเบตเบ‚เบฒเบงเป€เบžเบทเปˆเบญเบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบžเบฒเบเปƒเบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบฑเบ™เบˆเปเบฒเบเบฑเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ—เบปเบ”เบชเบญเบšเป„เบ”เป‰. เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเปเบœเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบ Pulumi เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเบˆเบดเบ‡เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ›เบฑเบšเบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ—เบปเบ”เบชเบญเบšเป„เบ”เป‰. เบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, Pulumi เบกเบตเบเบญเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡. เปเบฅเบฐเบ—เบฑเบ‡เบชเบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบเบฎเปˆเบงเบกเบเบฑเบ™เป„เบ”เป‰เบ”เบต!

เบเบญเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡ Pulumi เปเบกเปˆเบ™เบ‚เบฝเบ™เปƒเบ™ Go, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ—เบปเบ”เบชเบญเบšเบฅเบฐเบซเบฑเบ”เบžเบฒเบเปƒเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบงเบดเบ—เบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ—เบตเปˆเป„เบ”เป‰เบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเปˆเบญเบ‡เบชเบตเบ‚เบฒเบง, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปเบกเปˆเบ™เบเปˆเบญเบ‡เบชเบตเบ”เปเบฒ. (เบเบฑเบ‡เบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบžเบฒเบเปƒเบ™เบขเปˆเบฒเบ‡เป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”.) เบเบญเบšเบ™เบตเป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™ Pulumi เบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบงเบปเบ‡เบˆเบญเบ™เบŠเบตเบงเบดเบ”เบ•เปˆเบฒเบ‡เป†เปƒเบ™เบกเบฑเบ™, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เปƒเบŠเป‰ stack เปƒเบซเบกเปˆเบˆเบฒเบเบˆเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ›เบฑเบšเบ›เบธเบ‡เบกเบฑเบ™เบ”เป‰เบงเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เปเบฅเบฐเบฅเบถเบšเบกเบฑเบ™, เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบซเบผเบฒเบเบ„เบฑเป‰เบ‡. . เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบด (เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เบ•เบญเบ™เบเบฒเบ‡เบ„เบทเบ™) เปเบฅเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™.

(เบžเบงเบเป€เบฎเบปเบฒ เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เปเบกเปˆเบ™เบกเบตเบขเบนเปˆเปƒเบ™ SDK เบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เบ‚เบญเบ‡เบžเบฒเบชเบฒ. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบเบญเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡ Go เป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบžเบฒเบชเบฒเบ—เบตเปˆเป‚เบ„เบ‡เบเบฒเบ™ Pulumi เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ–เบทเบเบ‚เบฝเบ™).

เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบ‡เบฒเบ™โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบเบญเบšโ€‹เบ™เบตเป‰โ€‹เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบเบฒเบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

  • เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡ syntactically เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.
  • เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ stack เปเบฅเบฐเบ„เบงเบฒเบกเบฅเบฑเบšเป€เบฎเบฑเบ”เบงเบฝเบเปเบฅเบฐเบ–เบทเบเบ•เบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡.
  • เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เบณเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบชเบณเป€เบฅเบฑเบ”เบœเบปเบ™เปƒเบ™เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ„เบฅเบฒเบงเบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบฅเบทเบญเบ.
  • เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบเบปเบโ€‹เบฅเบฐโ€‹เบ”เบฑเบšโ€‹เบชเบปเบšโ€‹เบœเบปเบ™โ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ”โ€‹เบˆเบฒเบโ€‹เบฅเบฑเบ”โ€‹เป€เบšเบทเป‰เบญเบ‡โ€‹เบ•เบปเป‰เบ™โ€‹เป€เบ›เบฑเบ™ N เบฅเบฑเบ”โ€‹เบญเบทเปˆเบ™เป†โ€‹.
  • เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ–เบทเบโ€‹เบ—เปเบฒโ€‹เบฅเบฒเบโ€‹เบชเบปเบšโ€‹เบœเบปเบ™โ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ”โ€‹เปเบฅเบฐโ€‹เป€เบญเบปเบฒโ€‹เบญเบญเบโ€‹เบˆเบฒเบโ€‹เบœเบนเป‰โ€‹เปƒเบซเป‰โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹เบŸเบฑเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹.

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบซเบฑเบ™เปƒเบ™เป„เบงเป†เบ™เบตเป‰, เบเบญเบšเบ™เบตเป‰เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบงเบฅเบฒเปเบฅเปˆเบ™.

เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เป‚เบเบ‡โ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹

เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ pulumi/examples, เบเป‰เบญเบ™เบงเปˆเบฒเบ—เบตเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบฅเบฐเบŠเบธเบกเบŠเบปเบ™ Pulumi เปƒเบŠเป‰เบกเบฑเบ™เป€เบžเบทเปˆเบญเบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบ”เบถเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบ‡, เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒ, เปเบฅเบฐเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบ™เบ•เบญเบ™เบเบฒเบ‡เบ„เบทเบ™.

เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เบ–เบฑเบ‡ 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,
        },
    })
}

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ™เบตเป‰เบœเปˆเบฒเบ™เบงเบปเบ‡เบˆเบญเบ™เบŠเบตเบงเบดเบ”เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡, เบ”เบฑเบ”เปเบเป‰, เปเบฅเบฐเบ—เปเบฒเบฅเบฒเบ stack เบชเปเบฒเบฅเบฑเบšเป‚เบŸเบ™เป€เบ”เบต aws-js-s3-folder. เบกเบฑเบ™เบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบ›เบฐเบกเบฒเบ™เปœเบถเปˆเบ‡เบ™เบฒเบ—เบตเป€เบžเบทเปˆเบญเบฅเบฒเบเบ‡เบฒเบ™เบเบฒเบ™เบชเบญเบšเป€เบชเบฑเบ‡เบœเปˆเบฒเบ™:

$ go test .
PASS
ok      ... 43.993s

เบกเบตเบซเบผเบฒเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡เบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป€เบ•เบฑเบกเบ‚เบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ ProgramTestOptions. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ”เบ‚เบญเบ‡ Jaeger เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฒเบก (Tracing), เบŠเบตเป‰เบšเบญเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบˆเบฐเบฅเบปเป‰เบกเป€เบซเบฅเบงเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบกเปˆเบ™เป€เบ›เบฑเบ™เบฅเบปเบš (ExpectFailure), เบ™เปเบฒเปƒเบŠเป‰เบŠเบธเบ”เบ‚เบญเบ‡ "เบเบฒเบ™เปเบเป‰เป„เบ‚" เบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบฅเบฑเบ” (EditDirs) เปเบฅเบฐโ€‹เบกเบตโ€‹เบซเบผเบฒเบโ€‹เบซเบผเบฒเบโ€‹. เบกเบฒเป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™เป€เบžเบทเปˆเบญเบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ.

เบเบณเบฅเบฑเบ‡เบเบงเบ”เบชเบญเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ "เป€เบฎเบฑเบ”เบงเบฝเบ" - เบกเบฑเบ™เบšเปเปˆเบ‚เบฑเบ”. เปเบ•เปˆเบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบงเบ”เป€เบšเบดเปˆเบ‡เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡ stack เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš? เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบกเบต (เบซเบผเบทเบšเปเปˆเบกเบต) เป„เบ”เป‰เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เปเบฅเบฐเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบšเบฒเบ‡เบขเปˆเบฒเบ‡.

Parameter ExtraRuntimeValidation เบเบฒเบ™ ProgramTestOptions เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบซเบผเบฑเบ‡เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบ—เบตเปˆเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เป‚เบ”เบ Pulumi เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบเบงเบ”เบชเบญเบšเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป„เบ”เป‰. เบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบตเบžเบฒเบšเบฅเบงเบกเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡ stack เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เบกเบนเบ™เบ„เปˆเบฒเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบชเบปเปˆเบ‡เบญเบญเบ, เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบกเบนเบ™เบ„เปˆเบฒเบŠเบฑเบšเบชเบดเบ™เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ, เปเบฅเบฐเบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบฅเบฐเบซเบงเปˆเบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™.

เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰, เปƒเบซเป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบซเบ™เบถเปˆเบ‡ S3 Bucket:

  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")
        },
    })

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป„เบ›, เบกเบฑเบ™เบˆเบฐเบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบœเปˆเบฒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบงเบปเบ‡เบˆเบญเบ™เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบซเบกเปเป‰เป„เบŸ, เปเบ•เปˆเบเบฑเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ stack เบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”, เบกเบฑเบ™เบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเปˆเบ™

เบกเบฒเบฎเบญเบ”เบ›เบฐเบˆเบธเบšเบฑเบ™, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบฑเบ‡เปเบปเบ”เปเบกเปˆเบ™เบเปˆเบฝเบงเบเบฑเบšเบžเบถเบ”เบ•เบดเบเบณเบเบฒเบ™เบ™เบณเปƒเบŠเป‰ เปเบฅเบฐ เบฎเบนเบšเปเบšเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ Pulumi. เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบงเปˆเบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เปเบ—เป‰เบšเป? เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡ virtual เบเปเบฒเบฅเบฑเบ‡เปเบฅเปˆเบ™, เบ–เบฑเบ‡ S3 เบกเบตเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ„เบฒเบ”เบซเบงเบฑเบ‡, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

เบ—เปˆเบฒเบ™โ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เป€เบ”เบปเบฒโ€‹เปเบฅเป‰เบงโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เปเบ™เบงโ€‹เบ™เบตเป‰โ€‹: เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹ ExtraRuntimeValidation เบเบฒเบ™ ProgramTestOptions - เบ™เบตเป‰เปเบกเปˆเบ™เป‚เบญเบเบฒเบ”เบ—เบตเปˆเบ”เบตเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰. เปƒเบ™เบˆเบธเบ”เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš Go เปเบšเบšเบเปเบฒเบ™เบปเบ”เป€เบญเบ‡เบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบชเบฐเบ–เบฒเบ™เบฐเป€เบ•เบฑเบกเบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบฅเบฑเบ”เบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบตเบ‚เปเป‰เบกเบนเบ™เป€เบŠเบฑเปˆเบ™: เบ—เบตเปˆเบขเบนเปˆ IP เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡ virtual, URLs, เปเบฅเบฐเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบชเปเบฒเบžเบฑเบ™เบ•เบปเบงเบˆเบดเบ‡เบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบŸเบฑเบ‡เปเบฅเบฐเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เป‚เบ„เบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเบปเปˆเบ‡เบญเบญเบเบŠเบฑเบšเบชเบดเบ™ webEndpoint เบ„เบธเป€เบญเบตเป‰เบ™เบงเปˆเบฒ websiteUrl, เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™ URL เป€เบ•เบฑเบกเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ index document. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ‚เบธเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบ‚เบญเบ‡เบฅเบฑเบ”เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒ bucket เปเบฅเบฐเบญเปˆเบฒเบ™เบŠเบฑเบšเบชเบดเบ™เบ™เบฑเป‰เบ™เป‚เบ”เบเบเบปเบ‡, เปเบ•เปˆเปƒเบ™เบซเบผเบฒเบเป†เบเปเบฅเบฐเบ™เบต stacks เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเบปเปˆเบ‡เบญเบญเบเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒเบชเบฐเบ”เบงเบเปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบš:

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!")
        },
    })

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบš runtime เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ™เบตเป‰เบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบฑเบ™เบ—เบตเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบเบปเบ stack, เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบžเบทเปˆเบญเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบเบฑเบšเบเบฒเบ™เป‚เบ—เบ‡เปˆเบฒเบเบ”เบฒเบ. go test. เปเบฅเบฐเบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบ›เบฒเบเบ‚เบญเบ‡เบเป‰เบญเบ™เบซเบตเบ™โ€”เบ—เบธเบเป†เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš Go เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”เปเบกเปˆเบ™เบกเบตเปƒเบซเป‰.

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡

เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบ”เบตเบ—เบตเปˆเบˆเบฐเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‚เบ™เบ”เบšเบธเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบเปเบฒเบฅเบฑเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบฅเบฐเบซเบฑเบ”. เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเปเบฅเบฐเบฅเบนเบเบ„เป‰เบฒเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ—เบปเบ”เบชเบญเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡เบงเบปเบ‡เบˆเบญเบ™เบŠเบตเบงเบดเบ”เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ:

  • เปƒเบ™เบ—เบธเบเป†เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบ”เบถเบ‡เป€เบ›เบตเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบฅเบงเบก.
  • เปƒเบ™เบเบฒเบ™เบ•เบญเบšเป‚เบ•เป‰เปเบ•เปˆเบฅเบฐเบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒ, เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบชเบญเบ‡เบ„เบฑเป‰เบ‡เบงเปˆเบฒเบเบฒเบ™เบฅเบงเบกเป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡.
  • เปเบ•เปˆเบฅเบฐเป„เบฅเบเบฐ, เป€เบŠเบฑเปˆเบ™เปƒเบ™เบ•เบญเบ™เบเบฒเบ‡เบ„เบทเบ™เบซเบผเบทเบ›เบฐเบˆเปเบฒเบญเบฒเบ—เบดเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบžเบตเปˆเบกเป€เบ•เบตเบก.
  • เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบผเบทเบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™, เป€เบŠเบดเปˆเบ‡เบ›เบปเบเบเบฐเบ•เบดเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ‚เบฐเบซเบ™เบฒเบ™เปเบฅเบฐ / เบซเบผเบทเบ™เปเบฒเปƒเบŠเป‰เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™เบซเบผเบฒเบเบ„เบฑเป‰เบ‡.

เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ„เบปเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, Pulumi เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบšเบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบกเบฑเบ. เบ”เป‰เบงเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡, เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบกเบตเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ”เบฝเบงเบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบŠเบญเบšเปเบงเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

Pulumi เบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฅเบฐเบšเบปเบš CI เบ—เบปเปˆเบงเป„เบ›. เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ:

เบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เบเบฐเบฅเบธเบ™เบฒเป€เบšเบดเปˆเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบชเปเบฒเบฅเบฑเบš เบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡.

เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบŠเบปเปˆเบงเบ„เบฒเบง

เป‚เบญเบเบฒเบ”เบ—เบตเปˆเบกเบตเบญเปเบฒเบ™เบฒเบ”เบซเบผเบฒเบเบ—เบตเปˆเป€เบ›เบตเบ”เบ‚เบถเป‰เบ™เปเบกเปˆเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบšเปเปˆเบŠเป‰เปเบฒเบเบฑเบ™เป€เบžเบทเปˆเบญเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบเบญเบกเบฎเบฑเบšเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ” เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เปเบฅเบฐ stacksโ€‹ Pulumi เบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเบ—เปเบฒเบฅเบฒเบเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเป‚เบ”เบ”เบ”เปˆเบฝเบงเปเบฅเบฐเป€เบญเบเบฐเบฅเบฒเบ”เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™, เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ CLI เบ‡เปˆเบฒเบเป†เบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบเบซเบผเบทเบ™เปเบฒเปƒเบŠเป‰เบเบญเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰ GitHub, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ Pulumi เบชเบฐเป€เบซเบ™เบต เปเบญเบฑเบš GitHub, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบเบญเบกเบฎเบฑเบšเป€เบžเบทเปˆเบญเบ”เบถเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบžเบฒเบเปƒเบ™เบ—เปเปˆ CI เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบžเบฝเบ‡เปเบ•เปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ GitHub, เปเบฅเบฐ Pulumi เบˆเบฐเป€เบžเบตเปˆเบกเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบšเบดเปˆเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™, เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เปเบฅเบฐเบœเบปเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปƒเบซเป‰เบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป CI เปเบฅเบฐเบชเบฐเบ™เบธเบเป€เบเบตเบ‚เบญเบ‡เบ—เปˆเบฒเบ™:

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”เบเบฑเบš Pulumi. เบžเบฒเบเบ—เบต 2

เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เปƒเบŠเป‰ Pulumi เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบเบญเบกเบฎเบฑเบšเบซเบผเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบ—เปˆเบฒเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบซเบกเปˆเบ—เบตเปˆเบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบ—เบตเบกเบ‡เบฒเบ™เปเบฅเบฐเปƒเบซเป‰เบ—เปˆเบฒเบ™เบซเบกเบฑเป‰เบ™เปƒเบˆเปƒเบ™เบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš

เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบซเบฑเบ™เบงเปˆเบฒเป‚เบ”เบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ—เบตเปˆเบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ—เบปเปˆเบงเป„เบ›, เป€เบ•เบฑเบเบ™เบดเบเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเปเปเบงเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบžเบงเบเป€เบ‚เบปเบฒเบ›เบฐเบเบญเบšเบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบ™เปˆเบงเบเบ‡เบฒเบ™, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡, เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบฎเบฑเบ”เบงเบฝเบเบฎเปˆเบงเบกเบเบฑเบ™เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš runtime เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡. เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบผเบทเปƒเบ™เบฅเบฐเบšเบปเบš CI เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เบ›เบนเบฅเบนเบกเบต - เบŠเบญเบšโ€‹เปเบงโ€‹เปเบซเบผเปˆเบ‡โ€‹เป€เบ›เบตเบ”โ€‹, เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบŸเบฃเบตโ€‹เปเบฅเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบฎเปˆเบงเบกโ€‹เบเบฑเบšโ€‹เบžเบฒโ€‹เบชเบฒโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบ—เปˆเบฒเบ™โ€‹เบกเบฑเบโ€‹เปเบฅเบฐโ€‹เบŸเบฑเบ‡ - เบžเบฐเบเบฒเบเบฒเบกเบกเบฑเบ™เปƒเบ™เบกเบทเป‰เบ™เบตเป‰!

โ†’ เบชเปˆเบงเบ™ เบ—เบณ เบญเบดเบ”

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™