Nyob zoo sawv daws. Hnub no peb qhia rau koj txog qhov kawg ntawm tsab xov xwm.
Kev sim xa tawm
Cov qauv ntawm kev sim no yog ib txoj hauv kev muaj zog thiab tso cai rau peb ua lub thawv dawb los ntsuas kev ua haujlwm sab hauv ntawm peb cov txheej txheem kev cai. Txawm li cas los xij, nws txwv qee yam uas peb tuaj yeem sim. Cov kev ntsuam xyuas tau ua raws li kev npaj xa tawm hauv lub cim xeeb tsim los ntawm Pulumi ua ntej kev xa tawm tiag tiag thiab yog li kev xa tawm nws tus kheej tsis tuaj yeem sim. Rau cov xwm txheej zoo li no, Pulumi muaj kev sib koom ua ke kev sim ua haujlwm. Thiab ob txoj hauv kev no ua haujlwm zoo ua ke!
Pulumi integration testing moj khaum yog sau rau hauv Go, uas yog qhov peb sim feem ntau ntawm peb cov cai sab hauv. Txawm hais tias qhov kev sib tham yav dhau los hauv chav ntsuas kev ntsuas tau zoo dua li kev sim lub thawv dawb, kev sib xyaw ua ke yog lub thawv dub. (Tseem kuj muaj kev xaiv rau kev sim nruj me ntsis.) Lub moj khaum no tau tsim los ua kom tiav Pulumi qhov kev pab cuam thiab ua ntau yam kev ua haujlwm ntawm lub neej ntawm nws, xws li xa cov pawg tshiab los ntawm kos, hloov kho nws nrog kev hloov pauv, thiab tshem tawm, tej zaum ntau zaus. . Peb khiav lawv tsis tu ncua (piv txwv li, thaum hmo ntuj) thiab raws li kev ntsuas kev ntxhov siab.
(Peb
Los ntawm kev khiav lub program siv lub moj khaum no koj tuaj yeem tshawb xyuas cov hauv qab no:
- Koj qhov project code yog syntactically raug thiab khiav tsis raug.
- Cov pawg thiab cov kev teeb tsa zais cia ua haujlwm thiab raug txhais kom raug.
- Koj qhov project tuaj yeem ua tiav xa mus rau hauv huab muab kev pabcuam koj xaiv.
- Koj qhov project tuaj yeem hloov kho kom tiav los ntawm lub xeev pib mus rau N lwm lub xeev.
- Koj qhov project tuaj yeem ua tiav tiav thiab tshem tawm ntawm koj tus neeg muab kev pabcuam huab.
Raws li peb yuav pom sai sai no, lub moj khaum no tseem tuaj yeem siv los ua kev siv sijhawm ua haujlwm.
Kev sim ua ke yooj yim
Txhawm rau pom qhov no hauv kev nqis tes ua, peb yuav saib ntawm qhov chaw cia khoom pulumi/examples
, raws li peb pab neeg thiab cov zej zog Pulumi siv nws los sim peb tus kheej rub cov lus thov, cog lus, thiab ua haujlwm hmo ntuj.
Hauv qab no yog ib qho kev sim yooj yim ntawm peb
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,
},
})
}
Qhov kev sim no dhau los ntawm lub neej ntawm kev tsim, hloov kho, thiab rhuav tshem ib pawg rau ib daim ntawv tais ceev tseg aws-js-s3-folder
. Nws yuav siv li ib feeb los tshaj tawm qhov kev xeem dhau los:
$ go test .
PASS
ok ... 43.993s
Muaj ntau txoj kev xaiv los kho tus cwj pwm ntawm cov kev xeem no. Saib tag nrho cov kev xaiv. ProgramTestOptions
. Piv txwv li, koj tuaj yeem teeb tsa Jaeger qhov kawg kom taug qab (Tracing
), qhia tias koj cia siab tias qhov kev xeem yuav ua tsis tau yog tias kev xeem tsis zoo (ExpectFailure
), siv cov "kho hloov kho" rau qhov kev pab cuam rau kev hloov pauv ntawm cov xeev (EditDirs
) thiab ntau ntxiv. Cia peb saib yuav ua li cas siv lawv los ntsuas koj daim ntawv thov xa tawm.
Tshawb xyuas cov khoom vaj khoom tsev
Kev sib koom ua ke tau hais los saum toj no ua kom ntseeg tau tias peb txoj haujlwm "ua haujlwm" - nws tsis poob. Tab sis yuav ua li cas yog tias peb xav tshawb xyuas cov khoom ntawm cov txiaj ntsig pawg? Piv txwv li, qee yam ntawm cov peev txheej muaj (lossis tsis tau) tau muab thiab lawv muaj qee yam cwj pwm.
Parameter ExtraRuntimeValidation
rau ProgramTestOptions
tso cai rau peb saib tom qab kev xa tawm lub xeev sau tseg los ntawm Pulumi yog li peb tuaj yeem ua cov tshev ntxiv. Qhov no suav nrog kev ua tiav snapshot ntawm lub xeev ntawm pawg tshwm sim, suav nrog kev teeb tsa, cov txiaj ntsig xa tawm, tag nrho cov peev txheej thiab lawv cov khoom muaj nqis, thiab txhua qhov kev vam khom ntawm cov peev txheej.
Txhawm rau pom qhov piv txwv yooj yim ntawm qhov no, cia peb tshawb xyuas tias peb qhov program tsim ib qho S3 khob:
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")
},
})
Tam sim no, thaum peb khiav mus xeem, nws yuav tsis tsuas mus dhau lub roj teeb ntawm lifecycle xeem, tab sis kuj, tom qab ua tiav deploying pawg, nws yuav ua ib qho kev kuaj ntxiv ntawm lub xeev tshwm sim.
Runtime xeem
Txog tam sim no, txhua qhov kev ntsuam xyuas tau ua tiav ntawm kev xa tawm tus cwj pwm thiab Pulumi cov qauv peev txheej. Yuav ua li cas yog tias koj xav paub tseeb tias koj qhov kev npaj tsim kho vaj tse ua haujlwm tau zoo? Piv txwv li, tias lub tshuab virtual khiav, S3 thoob muaj qhov peb xav tau, thiab lwm yam.
Tej zaum koj twb tau twv yuav ua li cas ua qhov no: kev xaiv ExtraRuntimeValidation
rau ProgramTestOptions
- Qhov no yog lub sijhawm zoo rau qhov no. Lub sijhawm no, koj khiav qhov kev xeem Go kev cai nrog kev nkag mus rau tag nrho lub xeev ntawm koj qhov kev pabcuam cov peev txheej. Lub xeev no suav nrog cov ntaub ntawv xws li virtual tshuab IP chaw nyob, URLs, thiab txhua yam uas xav tau los cuam tshuam nrog cov txiaj ntsig huab kev siv thiab kev tsim kho vaj tse.
Piv txwv li, peb qhov kev xeem ntawv xa tawm cov cuab yeej webEndpoint
thoob npe websiteUrl
, uas yog tag nrho URL qhov twg peb tuaj yeem tau txais kev teeb tsa index document
. Txawm hais tias peb tuaj yeem khawb rau hauv lub xeev cov ntaub ntawv mus nrhiav bucket
thiab nyeem cov cuab yeej ntawd ncaj qha, tab sis nyob rau hauv ntau zaus peb pawg xa tawm cov khoom muaj txiaj ntsig zoo li qhov no uas peb pom yooj yim siv rau kev kuaj xyuas:
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!")
},
})
Zoo li peb cov kev kuaj xyuas lub sijhawm dhau los, daim tshev no yuav raug tua tam sim tom qab tsa pawg, tag nrho cov lus teb rau kev hu yooj yim go test
. Thiab qhov ntawd tsuas yog qhov kawg ntawm cov dej khov nab kuab-txhua qhov Go test feature uas koj tuaj yeem sau rau hauv code yog muaj.
Nruam Infrastructure Integration
Nws yog qhov zoo kom muaj peev xwm khiav cov kev xeem ntawm lub laptop thaum muaj ntau qhov kev hloov kho vaj tse tau ua los ntsuas lawv ua ntej xa lawv rau kev tshuaj xyuas cov lej. Tab sis peb thiab ntau ntawm peb cov neeg siv khoom sim cov txheej txheem ntawm ntau theem ntawm txoj kev loj hlob lub neej:
- Hauv txhua qhov qhib rub thov rau kev sim ua ntej sib koom ua ke.
- Nyob rau hauv teb rau txhua qhov kev cog lus, ob zaug-kos xyuas tias kev sib koom ua ke tau ua tiav lawm.
- Ib ntus, xws li hmo ntuj lossis txhua lub lim tiam rau kev sim ntxiv.
- Raws li ib feem ntawm kev ua tau zoo lossis kev ntsuas kev ntxhov siab, uas feem ntau ua haujlwm ntev ntev thiab ua cov kev sim sib luag thiab / lossis siv tib qhov kev pab cuam ntau zaus.
Rau txhua qhov no, Pulumi txhawb kev koom ua ke nrog koj nyiam kev sib koom ua ke txuas ntxiv. Nrog rau kev sib koom ua ke tas mus li, qhov no muab rau koj tib qhov kev ntsuam xyuas rau koj cov kev tsim kho vaj tse xws li rau koj daim ntawv thov software.
Pulumi muaj kev txhawb nqa rau CI systems. Nov yog qee qhov ntawm lawv:
Yog xav paub ntxiv, thov mus saib cov ntaub ntawv rau
Ib puag ncig Ephemeral
Lub cib fim muaj zog heev uas qhib tau yog lub peev xwm los siv cov cheeb tsam ephemeral nkaus xwb rau lub hom phiaj kev lees paub. Tswv yim
Yog tias koj siv GitHub, ces Pulumi muaj
Thaum koj siv Pulumi rau koj qhov kev lees paub tseem ceeb, koj yuav tau txais lub peev xwm tshiab automation uas yuav txhim kho pab pawg tsim khoom thiab muab kev ntseeg siab rau koj qhov kev hloov pauv zoo.
Qhov no
Hauv tsab xov xwm no, peb tau pom tias los ntawm kev siv cov hom phiaj programming lus, ntau cov txheej txheem txhim kho software ua rau peb muaj txiaj ntsig los tsim peb cov ntawv thov. Lawv suav nrog kev sim hauv chav tsev, kev sim kev sib koom ua ke, thiab lawv ua haujlwm li cas los ua qhov kev sim ua haujlwm ntev. Kev ntsuam xyuas yog ib qho yooj yim los khiav ntawm kev thov lossis hauv koj qhov CI system.
Pulumi - qhib qhov software, siv dawb thiab ua haujlwm nrog koj nyiam programming lus thiab huab -
β
Tau qhov twg los: www.hab.com