Molweni nonke. Namhlanje sabelana nawe ngenxalenye yokugqibela yenqaku. , uguqulelo olulungiselelwe ngokukodwa abafundi bekhosi .

Uvavanyo lokusasazwa
Olu hlobo lokuvavanya luyindlela enamandla kwaye ivumela ukuba senze uvavanyo lwebhokisi emhlophe ukuvavanya ukusebenza kwangaphakathi kwekhowudi yethu yeziseko. Nangona kunjalo, ibeka umda into esinokuyivavanya. Iimvavanyo zenziwa ngokusekelwe kwisicwangciso sokusebenza kwimemori esenziwe nguPulumi ngaphambi kokuthunyelwa kwangempela kwaye ngoko ke ukuthunyelwa ngokwayo akukwazi ukuvavanywa. Kwiimeko ezinjalo, iPulumi inesakhelo sovavanyo lokudibanisa. Kwaye ezi ndlela zimbini zisebenza kakuhle kunye!
Isakhelo sokuvavanya ukuhlanganiswa kwePulumi sibhalwe kwi-Go, yindlela esivavanya ngayo ikhowudi yethu yangaphakathi. Ngelixa indlela yokuvavanya iyunithi ebekuxoxwa ngayo ngaphambili ibifana novavanyo lwebhokisi emhlophe, uvavanyo lokudibanisa yibhokisi emnyama. (Kukwakho iinketho zovavanyo lwangaphakathi olungqongqo.) Esi sikhokelo senziwe ukuba sithathe inkqubo yePulumi epheleleyo kwaye senze imisebenzi eyahlukeneyo yokuphila kuyo, njengokuhambisa isitakhi esitsha ukusuka ekuqaleni, ukuyihlaziya ngokuguquguquka, kunye nokucinywa, ngokuphindaphindiweyo amaxesha amaninzi. . Siziqhuba rhoqo (umzekelo, ebusuku) kunye novavanyo loxinzelelo.
(Thina , ukuze amandla afanayo ovavanyo lokudibanisa afumaneke kwi-SDK yeelwimi zomthonyama. Ungasebenzisa isakhelo sokuvavanya ukuhlanganiswa kweGo kungakhathaliseki ukuba luluphi ulwimi olubhalwe ngalo inkqubo yakho yePulumi).
Ngokusebenzisa inkqubo usebenzisa esi sikhokelo ungajonga oku kulandelayo:
- Ikhowudi yeprojekthi yakho ichanekile ngokwesingqi kwaye isebenza ngaphandle kweempazamo.
- Isitaki kunye nesetingi zoqwalaselo lweemfihlo zisebenza kwaye zitolikwa ngokuchanekileyo.
- Iprojekthi yakho inokusasazwa ngempumelelo kumboneleli welifu owukhethileyo.
- Iprojekthi yakho inokuphuculwa ngempumelelo ukusuka kwimeko yokuqala ukuya kwi-N kwamanye amazwe.
- Iprojekthi yakho inokutshatyalaliswa ngempumelelo kwaye isuswe kumboneleli wakho welifu.
Njengoko siza kubona kungekudala, esi sikhokelo sinokusetyenziselwa ukwenza ukuqinisekiswa kwexesha lokusebenza.
Uvavanyo olulula lokudibanisa
Ukubona oku kusebenza, siza kujonga kwindawo yokugcina pulumi/examples, njengoko iqela lethu kunye noluntu lwasePulumi lusebenzisa ukuvavanya izicelo zethu zokutsalwa, ukuzibophelela, kunye nokwakha ebusuku.
Apha ngezantsi luvavanyo olwenziwe lula lwethu :
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,
},
})
} Olu vavanyo ludlula kumjikelo wobomi osisiseko wokudala, ukuguqula, kunye nokutshabalalisa isitaki sefolda aws-js-s3-folder. Kuya kuthatha malunga nomzuzu ukunika ingxelo yovavanyo oluphumeleleyo:
$ go test .
PASS
ok ... 43.993s Kukho iindlela ezininzi zokukhetha ukuziphatha kolu vavanyo. Bona uluhlu olupheleleyo lokhetho. ProgramTestOptions. Umzekelo, ungaqwalasela iJaeger endpoint ukulandelela (Tracing), bonisa ukuba ulindele ukuba uvavanyo lungaphumeleli ukuba uvavanyo luthi awunayo (ExpectFailure), sebenzisa uthotho “lohlelo” kwinkqubo yotshintsho olulandelelanayo lwamazwe (EditDirs) kunye nokunye okuninzi. Makhe sibone indlela yokuzisebenzisa ukuvavanya ukuthunyelwa kwesicelo sakho.
Ukujonga iimpawu zobutyebi
Ukuhlanganiswa okuxoxwe ngasentla kuqinisekisa ukuba inkqubo yethu "iyasebenza" -ayintlithekile. Kodwa kuthekani ukuba sifuna ukujonga iipropathi zesitaki esisisiphumo? Umzekelo, ukuba iindidi ezithile zoovimba ziye (okanye azibonelelwanga) kwaye zineempawu ezithile.
IParamu ExtraRuntimeValidation kuba ProgramTestOptions kusivumela ukuba sijonge imeko yangemva kokuthunyelwa erekhodwe nguPulumi ukuze sikwazi ukwenza iitshekhi ezongezelelweyo. Oku kuquka umfanekiso opheleleyo wemeko yemfumba enesiphumo, kubandakanywa ulungelelwaniso, amaxabiso emveliso athunyelwa kumazwe angaphandle, bonke oovimba kunye namaxabiso epropathi yabo, nako konke ukuxhomekeka phakathi kwezibonelelo.
Ukubona umzekelo osisiseko woku, makhe sijonge ukuba inkqubo yethu iyayenza na S3 Ibhakethi:
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")
},
})Ngoku, xa siqhuba uvavanyo lwe-go, aluyi kudlula kuphela ibhetri yovavanyo lwe-lifecycle, kodwa kwakhona, emva kokuthunyelwa ngempumelelo isitaki, iya kwenza isheke elongezelelweyo kwimeko yesiphumo.
Iimvavanyo zexesha lokusebenza
Zonke iimvavanyo ukuza kuthi ga ngoku bezimalunga nokuziphatha kokuthunyelwa kunye nemodeli yomthombo wePulumi. Kuthekani ukuba ufuna ukuqinisekisa ukuba isibonelelo sakho esibonelelweyo siyasebenza ngokwenene? Umzekelo, ukuba umatshini wenyani uyasebenza, ibhakethi ye-S3 iqulethe into esiyilindeleyo, njalo njalo.
Usenokuba sele uqikelele ukuba kwenziwa njani oku: ukhetho ExtraRuntimeValidation kuba ProgramTestOptions - eli lithuba elihle loku. Ngeli xesha, uqhuba uvavanyo lwesiko lokuya kunye nokufikelela kwimeko epheleleyo yezibonelelo zenkqubo yakho. Eli lizwe libandakanya ulwazi olufana needilesi ze-IP zomatshini wenyani, ii-URL, kunye nayo yonke into efunekayo ukuze isebenze ngokwenene kunye neziphumo zezicelo zefu kunye neziseko.
Umzekelo, inkqubo yethu yovavanyo ithumela ngaphandle impahla webEndpoint ibhakethi yabizwa websiteUrl, eyi-URL epheleleyo apho sinokufumana uqwalaselo index document. Nangona sinokugrumba kwifayile yelizwe ukuze sifumane bucket kwaye ufunde loo propati ngokuthe ngqo, kodwa kwiimeko ezininzi izitaki zethu zithumela ngaphandle iipropati eziluncedo ezifana nale esizifumana zilungele ukuzisebenzisa ukujonga:
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!")
},
}) Njengokukhangela kwethu ixesha elidlulileyo lokujonga, le tshekhi iya kwenziwa ngokukhawuleza emva kokuphakamisa istaki, zonke ziphendula umnxeba olula. go test. Kwaye yincam nje ye-iceberg-lonke i-Go test feature onokuyibhala ngekhowudi iyafumaneka.
Udibaniso lweziSeko ezinguNdoqo oluqhubekayo
Kulungile ukukwazi ukwenza iimvavanyo kwilaptop xa uninzi lwenguquko yeziseko zophuhliso lwenziwa ukuze luvavanywe ngaphambi kokuba lungeniswe ukuze luphonononge ikhowudi. Kodwa thina kunye nabathengi bethu abaninzi sivavanya iziseko zophuhliso kumanqanaba ahlukeneyo obomi bophuhliso:
- Kuzo zonke izicelo zokutsala ezivulekileyo zokuvavanya phambi kokudibanisa.
- Ukuphendula kwisibophelelo ngasinye, ukujonga kabini ukuba udibaniso lwenziwe ngokuchanekileyo.
- Ngamaxesha athile, njengasebusuku okanye ngeveki kuvavanyo olongezelelweyo.
- Njengenxalenye yokusebenza okanye uvavanyo loxinzelelo, oluhamba ngokuqhelekileyo ixesha elide kwaye luqhuba iimvavanyo ngokuhambelana kunye / okanye ukuhambisa inkqubo efanayo ngamaxesha amaninzi.
Kunye kwezi, iPulumi ixhasa ukudityaniswa kunye nenkqubo oyithandayo eqhubekayo yokudibanisa. Ngokudityaniswa okuqhubekayo, oku kukunika uvavanyo olufanayo lwezixhobo zakho njengesoftware yesicelo sakho.
I-Pulumi inenkxaso yeenkqubo zeCI eziqhelekileyo. Nazi ezinye zazo:
Ngolwazi oluthe vetshe, nceda ujonge kumaxwebhu e .
Ephemeral Environments
Ithuba elinamandla kakhulu elivulayo kukukwazi ukuhambisa iimeko ze-ephemeral kuphela ngeenjongo zokuvavanya ukwamkelwa. Ingcamango I-Pulumi yenzelwe ukuhambisa ngokulula kunye nokudiliza iindawo ezizimeleyo kunye nezizimeleyo, zonke kwimiyalelo embalwa ye-CLI elula okanye ukusebenzisa isakhelo sokuvavanya ukudibanisa.
Ukuba usebenzisa iGitHub, ke iPulumi inikezela , eya kukunceda udibanise uvavanyo lokwamkelwa ukutsala izicelo ngaphakathi kombhobho wakho weCI. Faka nje isicelo kwindawo yokugcina i-GitHub, kwaye i-Pulumi iya kongeza ulwazi malunga nokubonwa kweziseko zophuhliso, uhlaziyo kunye neziphumo zovavanyo kwi-CI yakho kunye nezicelo ze-pool:

Xa usebenzisa iPulumi kuvavanyo lwakho olungundoqo lolwamkelo, uya kufumana amandla amatsha okuzisebenzela oya kuphucula imveliso yeqela kwaye akunike ukuzithemba kumgangatho wotshintsho lwakho.
Isiphumo
Kweli nqaku, sibonile ukuba ngokusebenzisa iilwimi zeprogram yenjongo ngokubanzi, iindlela ezininzi zokuphuhlisa isofthiwe zifumaneka kuthi eziye zaba luncedo ekuphuhliseni izicelo zethu. Zibandakanya uvavanyo lweyunithi, uvavanyo lokudibanisa, kunye nendlela abasebenza kunye ngayo ukwenza uvavanyo olubanzi lwexesha lokusebenza. Iimvavanyo zilula ukusebenza ngokwemfuno okanye kwinkqubo yakho yeCI.
Pulumi -isoftware yomthombo ovulekileyo, simahla ukuyisebenzisa kwaye isebenza ngeelwimi zakho ozithandayo kunye namafu - !
→
umthombo: www.habr.com
