Sanibonani nonke. Namuhla sihlanganyela nawe ingxenye yokugcina yalesi sihloko. , ukuhunyushwa kwakho okulungiselelwe ngokukhethekile abafundi bezifundo .

Ukuhlola ukusetshenziswa
Lesi sitayela sokuhlola siyindlela enamandla futhi sisivumela ukuthi senze ukuhlola kwebhokisi elimhlophe ukuze sihlole ukusebenza kwangaphakathi kwekhodi yethu yengqalasizinda. Nokho, ngandlela-thile kunciphisa lokho esingakuhlola. Ukuhlolwa kwenziwa ngokusekelwe kuhlelo lokuthunyelwa kwenkumbulo oludalwe nguPulumi ngaphambi kokuthunyelwa kwangempela ngakho-ke ukuthunyelwa ngokwayo akukwazi ukuhlolwa. Ezimweni ezinjalo, i-Pulumi inohlaka lokuhlola lokuhlanganisa. Futhi lezi zindlela ezimbili zisebenza kahle ngokubambisana!
Uhlaka lokuhlola ukuhlanganiswa kwe-Pulumi lubhalwe kokuthi Go, okuyindlela esihlola ngayo iningi lamakhodi ethu angaphakathi. Nakuba indlela yokuhlola iyunithi okwaxoxwa ngayo ngaphambili yayifana nokuhlola ibhokisi elimhlophe, ukuhlola ukuhlanganisa kuyibhokisi elimnyama. (Kukhona nezinketho zokuhlola kwangaphakathi okuqinile.) Lolu hlaka lwadalelwa ukuthatha uhlelo lwePulumi oluphelele futhi lwenze imisebenzi ehlukahlukene yomjikelezo wokuphila kulo, njengokukhipha isitaki esisha kusukela ekuqaleni, ukusibuyekeza ngokuhlukahluka, nokuyisusa, izikhathi eziningi. . Siwasebenzisa njalo (isibonelo, ebusuku) nanjengokuhlola ukucindezeleka.
(Thina , ukuze amandla afanayo okuhlola ukuhlanganiswa atholakale nge-SDK yomdabu yezilimi. Ungasebenzisa uhlaka lokuhlola ukuhlanganiswa kwe-Go kungakhathaliseki ulimi olubhalwe ngalo uhlelo lwakho lwePulumi).
Ngokusebenzisa uhlelo usebenzisa lolu hlaka ungabheka okulandelayo:
- Ikhodi yephrojekthi yakho ilungile ngokuzenzakalela futhi isebenza ngaphandle kwamaphutha.
- Izilungiselelo zokucushwa kwesitaki nezimfihlo zisebenza futhi zitolikwa ngendlela efanele.
- Iphrojekthi yakho ingafakwa ngempumelelo kumhlinzeki wamafu ozikhethele wona.
- Iphrojekthi yakho ingathuthukiswa ngempumelelo isuka esimweni sokuqala iye kwezinye izifundazwe ezingu-N.
- Iphrojekthi yakho ingacekelwa phansi ngempumelelo futhi isuswe kumhlinzeki wakho wamafu.
Njengoba sizobona maduze, lolu hlaka lungasetshenziswa ukwenza ukuqinisekiswa kwesikhathi sokusebenza.
Ukuhlolwa okulula kokuhlanganisa
Ukubona lokhu kusebenza, sizobheka indawo yokugcina pulumi/examples, njengoba ithimba lethu kanye nomphakathi wakwaPulumi ulisebenzisa ukuze lihlole izicelo zethu zokudonsa, ukuzibophezela, kanye nokwakha kwasebusuku.
Ngezansi isivivinyo esenziwe lula yethu :
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,
},
})
} Lokhu kuhlola kuhamba kumjikelezo wempilo oyisisekelo wokudala, ukulungisa, nokucekela phansi isitaki sefolda aws-js-s3-folder. Kuzothatha cishe iminithi ukubika ukuhlolwa okuphasile:
$ go test .
PASS
ok ... 43.993s Kunezinketho eziningi zokwenza ngendlela oyifisayo ukuziphatha kwalezi zivivinyo. Bona uhlu olugcwele lwezinketho. ProgramTestOptions. Isibonelo, ungamisa i-Jaeger endpoint ukuze ulandelele (Tracing), khombisa ukuthi ulindele ukuthi ukuhlolwa kwehlule uma ukuhlola kungenalo (ExpectFailure), sebenzisa uchungechunge "lwezinto ezihleliwe" ohlelweni ukuze kube noshintsho olulandelanayo lwezifunda (EditDirs) nokunye okuningi. Ake sibone ukuthi ungazisebenzisa kanjani ukuhlola ukuthunyelwa kwesicelo sakho.
Ihlola izakhiwo zensiza
Ukuhlanganiswa okukhulunywe ngakho ngenhla kuqinisekisa ukuthi uhlelo lwethu "luyasebenza" -aluphazamisi. Kodwa kuthiwani uma sifuna ukuhlola izakhiwo zesitaki esiwumphumela? Isibonelo, ukuthi izinhlobo ezithile zezinsiza ziye (noma azizange) zinikeziwe nokuthi zinezibaluli ezithile.
Ipharamitha ExtraRuntimeValidation ngoba ProgramTestOptions kusivumela ukuthi sibheke isimo sangemva kokuthunyelwa esiqoshwe nguPulumi ukuze senze ukuhlola okwengeziwe. Lokhu kufaka phakathi isifinyezo esiphelele sesimo sesitaki esiwumphumela, okuhlanganisa ukucushwa, amanani okukhiphayo athunyelwe kwamanye amazwe, zonke izinsiza namanani azo wezakhiwo, nakho konke ukuncika phakathi kwezinsiza.
Ukubona isibonelo esiyisisekelo salokhu, ake sihlole ukuthi uhlelo lwethu luyakha eyodwa Ibhakede le-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")
},
})Manje, uma siqhuba i-go test, ngeke idlule kuphela kubhethri yokuhlolwa komjikelezo wokuphila, kodwa futhi, ngemva kokukhipha ngempumelelo isitaki, izokwenza ukuhlola okwengeziwe kusimo esiwumphumela.
Ukuhlolwa kwesikhathi sokusebenza
Kuze kube manje, zonke izivivinyo bezimayelana nokuziphatha kokuthunyelwa kanye nemodeli yensiza yePulumi. Kuthiwani uma ufuna ukuqinisekisa ukuthi ingqalasizinda yakho enikeziwe iyasebenza ngempela? Isibonelo, ukuthi umshini we-virtual uyasebenza, ibhakede le-S3 liqukethe esikulindele, njalonjalo.
Kungenzeka ukuthi usuqagele ukuthi ungakwenza kanjani lokhu: inketho ExtraRuntimeValidation ngoba ProgramTestOptions - leli yithuba elihle lalokhu. Kuleli qophelo, uqalisa ukuhlola kwe-Go okungokwezifiso ngokufinyelela esimweni esigcwele sezinsiza zohlelo lwakho. Lesi simo sihlanganisa ulwazi olufana namakheli e-IP omshini we-virtual, ama-URL, nayo yonke into edingekayo ukuze uhlanganyele nezinhlelo zokusebenza zamafu nengqalasizinda.
Isibonelo, uhlelo lwethu lokuhlola luthumela impahla ngaphandle webEndpoint ibhakede labizwa websiteUrl, okuyi-URL egcwele lapho singathola khona okulungiselelwe index document. Nakuba singangena efayeleni lombuso ukuze sithole bucket futhi sifunde leyo ndawo ngokuqondile, kodwa ezimweni eziningi izitaki zethu zithekelisa izinto eziwusizo ezifana nalezi esizithola zilungele ukuzisebenzisa ukuze sizihlole:
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!")
},
}) Njengokuhlola kwethu isikhathi sokusebenza kwangaphambilini, leli sheke lizokwenziwa ngokushesha ngemva kokukhuphula isitaki, konke kuphendulwa ucingo olulula. go test. Futhi lokho kuyiphuzu nje le-iceberg—sonke isici sokuhlola i-Go ongasibhala ngekhodi siyatholakala.
Ukudidiyelwa Kwengqalasizinda Eqhubekayo
Kuhle ukwazi ukwenza izivivinyo kukhompuyutha ephathekayo uma kwenziwa izinguquko eziningi kwingqalasizinda ukuze kuzihlole ngaphambi kokuzithumela ukuze zibuyekezwe ikhodi. Kodwa thina namakhasimende ethu amaningi sihlola ingqalasizinda ezigabeni ezehlukene zomjikelezo wempilo wokuthuthuka:
- Kuzo zonke izicelo zokudonsa ezivulekile zokuhlolwa ngaphambi kokuhlanganisa.
- Ukuphendula isivumelwano ngasinye, ukuhlola kabili ukuthi ukuhlanganisa kwenziwe ngendlela efanele.
- Ngezikhathi ezithile, njengasebusuku noma masonto onke ukuze kuhlolwe okwengeziwe.
- Njengengxenye yokusebenza noma ukuhlola ingcindezi, okuvamise ukuqalisa isikhathi eside futhi kusebenzisa izivivinyo ngokuhambisana kanye/noma kusebenzisa uhlelo olufanayo izikhathi eziningi.
Kulokhu ngakunye, i-Pulumi isekela ukuhlanganiswa nohlelo lwakho oluthandayo lokuhlanganisa oluqhubekayo. Ngokuhlanganisa okuqhubekayo, lokhu kukunikeza ukuhlolwa okufanayo kwengqalasizinda yakho njengesoftware yohlelo lwakho lokusebenza.
I-Pulumi inokusekelwa kwezinhlelo ezivamile ze-CI. Nazi ezinye zazo:
Ukuze uthole ukwaziswa okwengeziwe, sicela ubheke imibhalo ye .
Ephemeral Environments
Ithuba elinamandla kakhulu elivulekayo yikhono lokusebenzisa izindawo ze-ephemeral kuphela ngezinjongo zokuhlola ukwamukelwa. Umqondo I-Pulumi iklanyelwe ukuphakela nokudiliza kalula izindawo ezingazodwa nezizimele, konke ngemiyalo embalwa ye-CLI elula noma kusetshenziswa uhlaka lokuhlola lokuhlanganisa.
Uma usebenzisa i-GitHub, khona-ke iPulumi inikeza , okuzokusiza ukuthi uxhume ukuhlolwa kokwamukela ukuze udonse izicelo ngaphakathi kwepayipi lakho le-CI. Vele ufake uhlelo lokusebenza endaweni yokugcina ye-GitHub, futhi i-Pulumi izokwengeza ulwazi mayelana nokuhlola kuqala kwengqalasizinda, izibuyekezo nemiphumela yokuhlola ku-CI yakho kanye nezicelo ze-pool:

Uma usebenzisa i-Pulumi ezivivinyweni zakho ezibalulekile zokwamukela, uzothola amandla amasha okuzenzakalela azothuthukisa ukukhiqiza kweqembu futhi akunikeze ukuzethemba kukhwalithi yezinguquko zakho.
Umphumela
Kulesi sihloko, sibonile ukuthi ngokusebenzisa izilimi zokuhlela zenhloso evamile, izindlela eziningi zokuthuthukisa isofthiwe zitholakala kithi ezibe lusizo ekuthuthukiseni izinhlelo zethu zokusebenza. Kubandakanya ukuhlolwa kweyunithi, ukuhlolwa kokuhlanganiswa, nokuthi basebenza kanjani ndawonye ukuze benze ukuhlola okubanzi kwesikhathi sokusebenza. Ukuhlola kulula ukwenza ngokufunwa noma kusistimu yakho ye-CI.
Pulumi - isoftware yomthombo ovulekile, imahhala ukuyisebenzisa futhi isebenza ngezilimi zakho ozithandayo zokuhlela namafu - !
→
Source: www.habr.com
