Su'ega Atina'e e pei ole Code ma Pulumi. Vaega 2

Talofa uma. O le asō matou te faʻasoa atu ia te oe le vaega mulimuli o le tusiga. "Su'ega Atina'e Fa'atonu e pei ole Code ma Pulumi", o le faaliliuga na saunia faapitoa mo tamaiti aoga "DevOps faiga ma meafaigaluega".

Su'ega Atina'e e pei ole Code ma Pulumi. Vaega 2

Su'ega fa'atino

O lenei faiga o su'ega ose auala mamana ma mafai ai ona matou faia su'ega pusa pa'epa'e e fa'ata'ita'i ai galuega fa'alotoifale o la matou tulafono fa'apitoa. Ae ui i lea, e faʻatapulaʻaina mea e mafai ona tatou suʻeina. O faʻataʻitaʻiga e faia e faʻavae i luga o le fuafuaga faʻapipiʻiina i totonu o le mafaufau na faia e Pulumi aʻo leʻi faʻapipiʻiina moni ma o le mea lea e le mafai ona faʻataʻitaʻiina le faʻapipiʻiina lava ia. Mo ia tulaga, o Pulumi o loʻo i ai se faʻavae suʻega tuʻufaʻatasia. Ma o nei auala e lua e galulue faʻatasi!

O lo'o tusia le fa'asologa o su'ega tu'ufa'atasi a le Pulumi i le Go, o le auala lea e fa'ata'ita'i ai le tele o la tatou tulafono fa'alotoifale. E ui o le faʻataʻitaʻiga faʻataʻitaʻiga muamua na faʻatalanoaina e pei o suʻega pusa paʻepaʻe, o suʻega tuʻufaʻatasia o se pusa uliuli. (O loʻo iai foʻi filifiliga mo suʻega faʻapitoa i totonu.) O lenei faʻavae na faia e ave ai se Polokalama Pulumi atoatoa ma faʻatino gaioiga eseese o le olaga i luga, e pei o le faʻapipiʻiina o se faaputuga fou mai le maoaʻe, faʻafouina i suiga, ma tapeina, atonu e tele taimi. . Matou te taʻavale i taimi uma (mo se faʻataʻitaʻiga, i le po) ma faʻataʻitaʻiga faʻamalosi.

(Matou o loo matou galulue i ai, ina ia maua avanoa fa'ata'ita'iga fa'apena tutusa i le SDK masani o gagana. E mafai ona e fa'aogaina le Go integration testing framework tusa lava po'o le a le gagana o lo'o tusia ai lau polokalame Pulumi).

E ala i le faʻaogaina o le polokalame e faʻaaoga ai lenei faʻavae e mafai ona e siakiina mea nei:

  • O lau fa'ailoga o le poloketi e sa'o fa'atasi ma fa'agasolo e aunoa ma ni mea sese.
  • O le fa'aputuga ma mealilo fa'atulagaina fa'atulagaina e galue ma fa'amatala sa'o.
  • O lau poloketi e mafai ona faʻapipiʻiina ma le manuia i le cloud provider o lau filifiliga.
  • O lau poloketi e mafai ona faʻaleleia lelei mai le tulaga muamua ile N isi setete.
  • O lau poloketi e mafai ona faʻaumatia lelei ma aveese mai lau 'auʻaunaga ao.

E pei ona o le a tatou vaʻai i se taimi lata mai, e mafai foi ona faʻaogaina lenei faʻavae e faʻatino ai le faʻamaoniaina o taimi.

Su'ega fa'atasi faigofie

Ina ia vaʻai i lenei gaioiga, o le a tatou vaʻavaʻai i le fale teu oloa pulumi/examples, a'o fa'aaogaina e le matou 'au ma le afio'aga o Pulumi e fa'ata'ita'i ai a matou lava toso talosaga, ta'utinoga, ma faufale i po.

O lo'o i lalo se su'ega fa'afaigofie o la matou fa'ata'ita'iga e maua ai le pakete S3 ma isi mea:

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

O lenei su'ega e alu i le fa'asologa o le olaga o le fatuina, suia, ma le fa'aleagaina o se faaputuga mo se faila aws-js-s3-folder. E tusa ma le minute e lipoti ai se su'ega ua pasi:

$ go test .
PASS
ok      ... 43.993s

E tele filifiliga e fa'avasega ai le amio o nei su'ega. Va'ai le lisi atoa o filifiliga. i totonu o le fausaga ProgramTestOptions. Mo se faʻataʻitaʻiga, e mafai ona e faʻatulagaina Jaeger endpoint e suʻe (Tracing), fa'ailoa mai e te fa'amoemoe e le manuia le su'ega pe a le lelei le su'ega (ExpectFailure), fa'aoga se fa'asologa o "fa'atonu" i le polokalame mo se suiga fa'asolosolo o setete (EditDirs) ma le tele o isi mea. Se'i o tatou va'ai pe fa'apefea ona fa'aogaina e fa'ata'ita'i ai lau fa'ata'ita'iga.

Su'eina o meatotino

O le tuʻufaʻatasia o loʻo talanoaina i luga e faʻamautinoa ai e "galue" a tatou polokalame-e le paʻu. Ae faʻafefea pe a tatou mananao e siaki meatotino o le faʻaputuga e maua? Mo se faʻataʻitaʻiga, o nisi ituaiga o punaoa ua (pe leai) na tuʻuina atu ma e iai a latou uiga.

Parakalafa ExtraRuntimeValidation mo ProgramTestOptions e mafai ai ona matou vaʻavaʻai i le tulaga faʻapipiʻiina na faʻamauina e Pulumi ina ia mafai ona matou faia ni siaki faʻaopoopo. E aofia ai se ata atoa o le tulaga o le fa'aputuga o lo'o maua, e aofia ai le fa'atulagaina, fa'atauga o mea e auina atu i fafo, punaoa uma ma latou tau meatotino, ma fa'alagolago uma i le va o punaoa.

Ina ia vaʻai i se faʻataʻitaʻiga autu o lenei mea, seʻi o tatou siaki pe na fatuina e le matou polokalama se tasi S3 pakete:

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

I le taimi nei, pe a tatou tamoe i le suʻega, e le gata o le a alu i se maa o suʻega o le olaga, ae faʻapea foi, pe a maeʻa ona faʻapipiʻiina le faʻaputuga, o le a faia se siaki faʻaopoopo i le tulaga e maua ai.

Su'ega taimi ta'avale

E o'o mai i le taimi nei, o su'ega uma e fa'atatau i le fa'atinoina o amioga ma le fa'ata'ita'iga a le Pulumi. Ae fa'afefea pe afai e te mana'o e fa'amaonia o au atina'e ua tu'uina atu e aoga moni? Mo se faʻataʻitaʻiga, o loʻo tamoe le masini komepiuta, o le pakete S3 o loʻo i ai mea tatou te faʻamoemoeina, ma isi.

Atonu ua uma ona e mateina pe faapefea ona fai lenei mea: filifiliga ExtraRuntimeValidation mo ProgramTestOptions - o se avanoa sili lenei mo lenei. I le taimi nei, e te fa'atinoina se su'ega aganu'u a Go ma le avanoa i le tulaga atoa o punaoa a lau polokalama. O lenei setete e aofia ai faʻamatalaga e pei o tuatusi IP masini komepiuta, URL, ma mea uma e manaʻomia e fegalegaleai moni ai ma mea e maua mai ai le ao ma atinaʻe.

Mo se faʻataʻitaʻiga, o la matou suʻega polokalame e auina atu i fafo le meatotino webEndpoint pakete ua valaau websiteUrl, o le URL atoa lea e mafai ona tatou maua ai le configured index document. E ui lava e mafai ona matou eli i totonu o le setete faila e suʻe bucket ma faitau saʻo lena meatotino, ae i le tele o tulaga o tatou faaputuga e auina atu i fafo mea aoga e pei o lenei e faigofie ona faʻaoga mo le siakiina:

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

E pei o a matou siaki taimi muamua, o lenei siaki o le a faia i le taimi lava e uma ai le siiina o le faaputuga, o mea uma e tali atu i se telefoni faigofie go test. Ma e na'o le pito lena o le aisa—o vaega uma o le suega Go e mafai ona e tusia i le code o lo'o avanoa.

Fa'aauauina Atina'e Fa'atasi

E lelei le mafai ona fa'atino su'ega i luga o le komepiuta pe a tele suiga tetele o lo'o faia e fa'ata'ita'i ai a'o le'i tu'uina atu mo le iloiloga o tulafono. Ae o matou ma le tele o matou tagata faʻatau e faʻataʻitaʻiina atinaʻe i laʻasaga eseese o le taamilosaga o le olaga atinaʻe:

  • I so'o se talosaga toso tatala mo su'ega a'o le'i tu'ufa'atasia.
  • I le tali atu i ta'utinoga ta'itasi, ia toe siaki pe sa'o sa'o le tu'ufa'atasiga.
  • Mai lea taimi i lea taimi, e pei o le po poʻo le vaiaso mo suʻega faaopoopo.
  • O se vaega o le fa'atinoga po'o le su'ega fa'amamafa, lea e masani ona alu i se vaitaimi umi ma fa'ata'ita'i fa'ata'ita'i fa'atasi ma/po'o fa'agasolo le polokalame tutusa i le tele o taimi.

Mo nei mea taʻitasi, e lagolagoina e Pulumi le tuʻufaʻatasia ma lau polokalama faʻaauau faifai pea. Faatasi ai ma le faʻaauauina faʻatasi, e tuʻuina atu ia te oe le suʻega tutusa mo au atinaʻe e pei o lau polokalama faʻaoga.

Pulumi ei ai le lagolago mo faiga masani CI. O nisi nei o latou:

Mo nisi fa'amatalaga au'ili'ili, fa'amolemole va'ai ile pepa mo Faʻaauau Faaooina.

Siosiomaga Epemeral

O se avanoa sili ona mamana e tatalaina o le mafai lea ona faʻapipiʻi siosiomaga ephemeral mo naʻo le taliaina o faʻamoemoega o suʻega. Manatu galuega faatino ma faaputuga Pulumi ua mamanuina ina ia faigofie ona faʻapipiʻi ma talepe i lalo siosiomaga tutoʻatasi ma tutoʻatasi, uma i nai tulafono faigofie CLI poʻo le faʻaaogaina o se faʻavae suʻega tuʻufaʻatasia.

Afai e te faʻaogaina GitHub, ona ofo atu lea e Pulumi GitHub App, lea o le a fesoasoani ia te oe e faʻafesoʻotaʻi suʻega taliaina e toso talosaga i totonu o lau paipa CI. Naʻo le faʻapipiʻiina o le talosaga i le GitHub repository, ma Pulumi o le a faʻaopoopoina faʻamatalaga e uiga i faʻamatalaga faʻapitoa, faʻafouga ma faʻataʻitaʻiga iʻuga i au talosaga CI ma vaitaʻele:

Su'ega Atina'e e pei ole Code ma Pulumi. Vaega 2

A e fa'aogaina le Pulumi mo au su'ega autu o le taliaina, o le a e mauaina ni tomai fa'aautomatika fou e fa'aleleia atili ai le gaosiga o le 'au ma tu'uina atu ia te oe le mautinoa i le lelei o au suiga.

Le iʻuga

I totonu o lenei tusiga, ua matou vaʻaia e ala i le faʻaaogaina o gagana faʻapolokalame faʻamoemoe lautele, o le tele o polokalame faʻapipiʻi polokalame e avanoa mo i matou na aoga i le atinaʻeina oa matou talosaga. E aofia ai su'ega iunite, su'ega tu'ufa'atasia, ma pe fa'afefea ona latou galulue fa'atasi e fa'atino su'ega ta'aloga tele. O su'ega e faigofie ona fa'atino pe a mana'omia pe i lau CI system.

Pulumi - polokalama tatala punaoa, saoloto e faʻaoga ma galue ma au polokalame polokalame e sili ona e fiafia i ai ma ao - taumafai i lenei aso!

Vaega muamua

puna: www.habr.com

Faaopoopo i ai se faamatalaga