рд╕рд░реНрд╡рд╛рдВрдирд╛ рдирдорд╕реНрдХрд╛рд░. рдЖрдЬ рдЖрдореНрд╣реА рддреБрдордЪреНрдпрд╛рд╕реЛрдмрдд рд▓реЗрдЦрд╛рдЪрд╛ рд╢реЗрд╡рдЯрдЪрд╛ рднрд╛рдЧ рд╢реЗрдЕрд░ рдХрд░рдд рдЖрд╣реЛрдд.
рдЙрдкрдпреЛрдЬрди рдЪрд╛рдЪрдгреА
рдЪрд╛рдЪрдгреАрдЪреА рд╣реА рд╢реИрд▓реА рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рджреГрд╖реНрдЯреАрдХреЛрди рдЖрд╣реЗ рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛ рдХреЛрдбрдЪреНрдпрд╛ рдЕрдВрддрд░реНрдЧрдд рдХрд╛рдордХрд╛рдЬрд╛рдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рд╡реНрд╣рд╛рдИрдЯ рдмреЙрдХреНрд╕ рдЪрд╛рдЪрдгреА рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рддрдерд╛рдкрд┐, рдЖрдореНрд╣реА рдХрд╛рдп рдЪрд╛рдЪрдгреА рдХрд░реВ рд╢рдХрддреЛ рд╣реЗ рдХрд╛рд╣реА рдкреНрд░рдорд╛рдгрд╛рдд рдорд░реНрдпрд╛рджрд┐рдд рдХрд░рддреЗ. рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреИрдирд╛рддреАрдкреВрд░реНрд╡реА рдкреБрд▓реБрдореАрдиреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЗрди-рдореЗрдорд░реА рдЙрдкрдпреЛрдЬрди рдпреЛрдЬрдиреЗрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЪрд╛рдЪрдгреНрдпрд╛ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рддреНрдпрд╛рдореБрд│реЗ рддреИрдирд╛рддреАрдЪреАрдЪ рдЪрд╛рдЪрдгреА рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реА. рдЕрд╢рд╛ рдкреНрд░рдХрд░рдгрд╛рдВрд╕рд╛рдареА, рдкреБрд▓реБрдореАрдХрдбреЗ рдПрдХреАрдХрд░рдг рдЪрд╛рдЪрдгреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдЖрд╣реЗ. рдЖрдгрд┐ рд╣реЗ рджреЛрди рджреГрд╖реНрдЯрд┐рдХреЛрди рдПрдХрддреНрд░ рдЪрд╛рдВрдЧрд▓реЗ рдХрд╛рдо рдХрд░рддрд╛рдд!
Pulumi рдЗрдВрдЯрд┐рдЧреНрд░реЗрд╢рди рдЪрд╛рдЪрдгреА рдлреНрд░реЗрдорд╡рд░реНрдХ Go рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдЖрд╣реЗ, рдЬреНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдЕрдВрддрд░реНрдЧрдд рдХреЛрдбрдЪреА рдмрд╣реБрддреЗрдХ рдЪрд╛рдЪрдгреА рдХрд░рддреЛ. рдкреВрд░реНрд╡реА рдЪрд░реНрдЪрд╛ рдХреЗрд▓реЗрд▓рд╛ рдпреБрдирд┐рдЯ рдЪрд╛рдЪрдгреА рджреГрд╖реНрдЯреАрдХреЛрди рд╡реНрд╣рд╛рдИрдЯ рдмреЙрдХреНрд╕ рдЪрд╛рдЪрдгреАрд╕рд╛рд░рдЦрд╛ рд╣реЛрддрд╛, рдПрдХреАрдХрд░рдг рдЪрд╛рдЪрдгреА рд╣реА рдмреНрд▓реЕрдХ рдмреЙрдХреНрд╕ рдЖрд╣реЗ. (рдХрдареЛрд░ рдЕрдВрддрд░реНрдЧрдд рдЪрд╛рдЪрдгреАрд╕рд╛рдареА рдкрд░реНрдпрд╛рдп рджреЗрдЦреАрд▓ рдЖрд╣реЗрдд.) рд╣реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдкреВрд░реНрдг рдкреБрд▓реБрдореА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рддреНрдпрд╛рд╡рд░ рд╡рд┐рд╡рд┐рдз рдЬреАрд╡рдирдЪрдХреНрд░ рдСрдкрд░реЗрд╢рдиреНрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ, рдЬрд╕реЗ рдХреА рд╕реБрд░рд╡рд╛рддреАрдкрд╛рд╕реВрди рдирд╡реАрди рд╕реНрдЯреЕрдХ рддреИрдирд╛рдд рдХрд░рдгреЗ, рднрд┐рдиреНрдирддреЗрд╕рд╣ рддреЗ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рддреЗ рд╣рдЯрд╡рдгреЗ, рд╢рдХреНрдпрддреЛ рдЕрдиреЗрдХ рд╡реЗрд│рд╛. . рдЖрдореНрд╣реА рддреНрдпрд╛рдВрдирд╛ рдирд┐рдпрдорд┐рддрдкрдгреЗ рдЪрд╛рд▓рд╡рддреЛ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд░рд╛рддреНрд░реА) рдЖрдгрд┐ рддрдгрд╛рд╡ рдЪрд╛рдЪрдгреА рдореНрд╣рдгреВрди.
(рдЖрдореНрд╣реА
рдпрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд╛рд▓рд╡реВрди рддреБрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рддрдкрд╛рд╕реВ рд╢рдХрддрд╛:
- рддреБрдордЪрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рд╕рд┐рдВрдЯреЕрдХреНрдЯрд▓реА рдмрд░реЛрдмрд░ рдЖрд╣реЗ рдЖрдгрд┐ рддреНрд░реБрдЯреАрдВрд╢рд┐рд╡рд╛рдп рдЪрд╛рд▓рддреЛ.
- рд╕реНрдЯреЕрдХ рдЖрдгрд┐ рд╕рд┐рдХреНрд░реЗрдЯреНрд╕ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪрд╛ рдпреЛрдЧреНрдп рдЕрд░реНрде рд▓рд╛рд╡рд▓рд╛ рдЬрд╛рддреЛ.
- рддреБрдордЪрд╛ рдкреНрд░рдХрд▓реНрдк рддреБрдордЪреНрдпрд╛ рдЖрд╡рдбреАрдЪреНрдпрд╛ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддреНрдпрд╛рдордзреНрдпреЗ рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рддреИрдирд╛рдд рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.
- рддреБрдордЪрд╛ рдкреНрд░рдХрд▓реНрдк рд╕реБрд░реБрд╡рд╛рддреАрдЪреНрдпрд╛ рд╕реНрдерд┐рддреАрддреВрди N рдЗрддрд░ рд░рд╛рдЬреНрдпрд╛рдВрдордзреНрдпреЗ рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдЕрдкрдЧреНрд░реЗрдб рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.
- рддреБрдордЪрд╛ рдкреНрд░рдХрд▓реНрдк рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдирд╖реНрдЯ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддреНрдпрд╛рдХрдбреВрди рдХрд╛рдврд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.
рдЬрд╕реЗ рдЖрдкрдг рд▓рд╡рдХрд░рдЪ рдкрд╛рд╣рдгрд╛рд░ рдЖрд╣реЛрдд, рд╣реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рд░рдирдЯрд╛рдЗрдо рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.
рд╕рд╛рдзреА рдПрдХрддреНрд░реАрдХрд░рдг рдЪрд╛рдЪрдгреА
рд╣реЗ рдХреГрддреАрдд рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдкрд╛рд╣реВ pulumi/examples
, рдЖрдордЪрд╛ рдХрд╛рд░реНрдпрд╕рдВрдШ рдЖрдгрд┐ рдкреБрд▓реБрдореА рд╕рдореБрджрд╛рдп рдЖрдордЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдкреБрд▓ рд╡рд┐рдирдВрддреНрдпрд╛, рдХрдорд┐рдЯ рдЖрдгрд┐ рд░рд╛рддреНрд░реАрдЪреНрдпрд╛ рдмрд┐рд▓реНрдбрдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рддреЛ.
рдЦрд╛рд▓реА рдЖрдордЪреА рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдЪрд╛рдЪрдгреА рдЖрд╣реЗ
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
рдЖрдореНрд╣рд╛рд▓рд╛ Pulumi рджреНрд╡рд╛рд░реЗ рдиреЛрдВрджрд╡рд▓реЗрд▓реА рдкреЛрд╕реНрдЯ-рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рд╕реНрдерд┐рддреА рдкрд╛рд╣рдгреНрдпрд╛рдЪреА рдЕрдиреБрдорддреА рджреЗрддреЗ рдЬреЗрдгреЗрдХрд░реВрди рдЖрдореНрд╣реА рдЕрддрд┐рд░рд┐рдХреНрдд рддрдкрд╛рд╕рдгреА рдХрд░реВ рд╢рдХрддреЛ. рдпрд╛рдордзреНрдпреЗ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди, рдирд┐рд░реНрдпрд╛рдд рдХреЗрд▓реЗрд▓реА рдЖрдЙрдЯрдкреБрдЯ рдореВрд▓реНрдпреЗ, рд╕рд░реНрд╡ рд╕рдВрд╕рд╛рдзрдиреЗ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреА рдорд╛рд▓рдорддреНрддрд╛ рдореВрд▓реНрдпреЗ рдЖрдгрд┐ рд╕рдВрд╕рд╛рдзрдирд╛рдВрдордзреАрд▓ рд╕рд░реНрд╡ рдЕрд╡рд▓рдВрдмрдирд╛рдВрд╕рд╣ рдкрд░рд┐рдгрд╛рдореА рд╕реНрдЯреЕрдХрдЪреНрдпрд╛ рд╕реНрдерд┐рддреАрдЪрд╛ рд╕рдВрдкреВрд░реНрдг рд╕реНрдиреЕрдкрд╢реЙрдЯ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ.
рдпрд╛рдЪреЗ рдореВрд│ рдЙрджрд╛рд╣рд░рдг рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдкрд▓рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рддрдпрд╛рд░ рдХрд░рддреЛ рдХрд╛ рддреЗ рддрдкрд╛рд╕реВ 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
. рдЖрдгрд┐ рд╣реЗ рдлрдХреНрдд рд╣рд┐рдордирдЧрд╛рдЪреЗ рдЯреЛрдХ рдЖрд╣реЗтАФрддреБрдореНрд╣реА рдХреЛрдбрдордзреНрдпреЗ рд▓рд┐рд╣реВ рд╢рдХрдгрд╛рд░реЗ рдкреНрд░рддреНрдпреЗрдХ рдЧреЛ рдЪрд╛рдЪрдгреА рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ.
рд╕рддрдд рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг
рд▓реЕрдкрдЯреЙрдкрд╡рд░ рдЪрд╛рдЪрдгреНрдпрд╛ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ рдЬреЗрд╡реНрд╣рд╛ рдХреЛрдб рдкреБрдирд░рд╛рд╡рд▓реЛрдХрдирд╛рд╕рд╛рдареА рд╕рдмрдорд┐рдЯ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рддреНрдпрд╛рдВрдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдордзреНрдпреЗ рдмрд░реЗрдЪ рдмрджрд▓ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдкрд░рдВрддреБ рдЖрдореНрд╣реА рдЖрдгрд┐ рдЖрдордЪреЗ рдмрд░реЗрдЪ рдЧреНрд░рд╛рд╣рдХ рд╡рд┐рдХрд╛рд╕рд╛рдЪреНрдпрд╛ рдЬреАрд╡рди рдЪрдХреНрд░рд╛рдЪреНрдпрд╛ рд╡рд┐рд╡рд┐рдз рдЯрдкреНрдкреНрдпрд╛рдВрд╡рд░ рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдЪреА рдЪрд╛рдЪрдгреА рдШреЗрддреЛ:
- рд╡рд┐рд▓реАрди рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдЪрд╛рдЪрдгреАрд╕рд╛рдареА рдкреНрд░рддреНрдпреЗрдХ рдЦреБрд▓реНрдпрд╛ рдкреБрд▓ рд╡рд┐рдирдВрддреАрдордзреНрдпреЗ.
- рдкреНрд░рддреНрдпреЗрдХ рдХрдорд┐рдЯрдЪреНрдпрд╛ рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдд, рд╡рд┐рд▓реАрдиреАрдХрд░рдг рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рд╣реЗ рджреЛрдирджрд╛ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА.
- рдХрд╛рд▓рд╛рдВрддрд░рд╛рдиреЗ, рдЬрд╕реЗ рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд╛рдЪрдгреАрд╕рд╛рдареА рд░рд╛рддреНрд░реА рдХрд┐рдВрд╡рд╛ рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ.
- рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдХрд┐рдВрд╡рд╛ рддрдгрд╛рд╡ рдЪрд╛рдЪрдгреАрдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди, рдЬреЗ рд╕рд╛рдорд╛рдиреНрдпрдд: рджреАрд░реНрдШ рдХрд╛рд▓рд╛рд╡рдзреАрд╕рд╛рдареА рдЪрд╛рд▓рддреЗ рдЖрдгрд┐ рд╕рдорд╛рдВрддрд░ рдЪрд╛рдЪрдгреА рдЪрд╛рд▓рд╡рддреЗ рдЖрдгрд┐/рдХрд┐рдВрд╡рд╛ рд╕рдорд╛рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЕрдиреЗрдХ рд╡реЗрд│рд╛ рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░рддреЗ.
рдпрд╛рдкреИрдХреА рдкреНрд░рддреНрдпреЗрдХрд╛рд╕рд╛рдареА, Pulumi рддреБрдордЪреНрдпрд╛ рдЖрд╡рдбрддреНрдпрд╛ рд╕рддрдд рдПрдХреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реАрд╕рд╣ рдПрдХрддреНрд░реАрдХрд░рдгрд╛рд╕ рд╕рдорд░реНрдерди рджреЗрддреЗ. рд╕рддрдд рдПрдХрддреНрд░реАрдХрд░рдгрд╛рд╕рд╣, рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреНрдпрд╛ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░рд╕рд╛рдареА рддреБрдордЪреНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░рдкреНрд░рдорд╛рдгреЗрдЪ рдЪрд╛рдЪрдгреА рдХрд╡реНрд╣рд░реЗрдЬ рджреЗрддреЗ.
рдкреБрд▓реБрдореАрд▓рд╛ рд╕рд╛рдорд╛рдиреНрдп CI рд╕рд┐рд╕реНрдЯреАрдорд╕рд╛рдареА рд╕рдорд░реНрдерди рдЖрд╣реЗ. рддреНрдпрд╛рдкреИрдХреА рдХрд╛рд╣реА рдпреЗрдереЗ рдЖрд╣реЗрдд:
AWS рдХреЛрдб рд╕реЗрд╡рд╛ рдЕрдЭрд░ рдбреЗрд╡реНрд╣реЛрдкреНрд╕ рд╕рд░реНрдХрд▓рд╕реАрдЖрдп рдЧрд┐рдЯрд╣рдм рдХреНрд░рд┐рдпрд╛ рдЧрд┐рдЯрд▓рд╛рдм рд╕реАрдЖрдп Google рдХреНрд▓рд╛рдЙрдб рдмрд┐рд▓реНрдб рдЯреНрд░реЕрд╡реНрд╣рд┐рд╕
рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рдорд╛рд╣рд┐рддреАрд╕рд╛рдареА, рдХреГрдкрдпрд╛ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдкрд╣рд╛
рдХреНрд╖рдгрднрдВрдЧреБрд░ рд╡рд╛рддрд╛рд╡рд░рдг
рдПрдХ рдЕрддрд┐рд╢рдп рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рдВрдзреА рдЬреА рдЙрдШрдбрддреЗ рддреА рдореНрд╣рдгрдЬреЗ рдХреЗрд╡рд│ рд╕реНрд╡реАрдХреГрддреА рдЪрд╛рдЪрдгреАрдЪреНрдпрд╛ рдЙрджреНрджреЗрд╢рд╛рдВрд╕рд╛рдареА рдХреНрд╖рдгрд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рддреИрдирд╛рдд рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛. рд╕рдВрдХрд▓реНрдкрдирд╛
рддреБрдореНрд╣реА рдЧрд┐рдЯрд╣рдм рд╡рд╛рдкрд░рдд рдЕрд╕рд╛рд▓ рддрд░ рдкреБрд▓реБрдореА рдСрдлрд░ рдХрд░рддреЗ
рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рдореБрдЦреНрдп рд╕реНрд╡реАрдХреГрддреА рдЪрд╛рдЪрдгреНрдпрд╛рдВрд╕рд╛рдареА Pulumi рд╡рд╛рдкрд░рддрд╛, рддреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдирд╡реАрди рдСрдЯреЛрдореЗрд╢рди рдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреАрд▓ рдЬреНрдпрд╛рдореБрд│реЗ рдЯреАрдордЪреА рдЙрддреНрдкрд╛рджрдХрддрд╛ рд╕реБрдзрд╛рд░реЗрд▓ рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛ рдмрджрд▓рд╛рдВрдЪреНрдпрд╛ рдЧреБрдгрд╡рддреНрддреЗрд╡рд░ рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдорд┐рд│реЗрд▓.
рдкрд░рд┐рдгрд╛рдо
рдпрд╛ рд▓реЗрдЦрд╛рдд, рдЖрдореНрд╣реА рдкрд╛рд╣рд┐рд▓реЗ рдЖрд╣реЗ рдХреА рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╡рд╛рдкрд░реВрди, рдЕрдиреЗрдХ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯ рддрдВрддреНрд░реЗ рдЖрдордЪреНрдпрд╛рд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдЭрд╛рд▓реА рдЖрд╣реЗрдд рдЬреА рдЖрдордЪреЗ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗрдд. рддреНрдпрд╛рдордзреНрдпреЗ рдпреБрдирд┐рдЯ рдЪрд╛рдЪрдгреА, рдПрдХрддреНрд░реАрдХрд░рдг рдЪрд╛рдЪрдгреА рдЖрдгрд┐ рд╡рд┐рд╕реНрддреГрдд рд░рдирдЯрд╛рдЗрдо рдЪрд╛рдЪрдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреЗ рдПрдХрддреНрд░ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд рдпрд╛рдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ. рдЪрд╛рдЪрдгреНрдпрд╛ рдорд╛рдЧрдгреАрдиреБрд╕рд╛рд░ рдХрд┐рдВрд╡рд╛ рддреБрдордЪреНрдпрд╛ CI рд╕рд┐рд╕реНрдЯреАрдордордзреНрдпреЗ рдЪрд╛рд▓рд╡рдгреЗ рд╕реЛрдкреЗ рдЖрд╣реЗ.
рдкреБрд▓реБрдореА - рдореБрдХреНрдд рд╕реНрд░реЛрдд рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░, рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╡рд┐рдирд╛рдореВрд▓реНрдп рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛ рдЖрд╡рдбрддреНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдЖрдгрд┐ рдХреНрд▓рд╛рдЙрдбрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддреЗ -
тЖТ
рд╕реНрддреНрд░реЛрдд: www.habr.com