د پلومي سره د کوډ په توګه د زیربنا ازموینه. برخه 2

سلام و ټولو ته. نن د مقالې وروستۍ برخه درسره شریکوو. "د پلومي سره د کوډ په توګه د زیربنا ازموینه"، چې ژباړه په ځانګړي ډول د کورس زده کونکو لپاره چمتو شوې وه "DevOps کړنې او وسیلې".

د پلومي سره د کوډ په توګه د زیربنا ازموینه. برخه 2

د ځای پرځای کولو ازموینه

د ازموینې دا سټایل یو پیاوړی چلند دی او موږ ته اجازه راکوي چې زموږ د زیربنا کوډ داخلي کارونو ازموینې لپاره د سپینې بکس ازموینې ترسره کړو. په هرصورت، دا یو څه محدودوي هغه څه چې موږ یې ازموینه کولی شو. ازموینې د ریښتیني ګمارنې دمخه د پلومي لخوا رامینځته شوي د حافظې دننه پلي کولو پلان پراساس ترسره کیږي او له همدې امله ګمارنه پخپله نشي ازموینه کیدی. د داسې قضیو لپاره، پلومي د ادغام ازموینې چوکاټ لري. او دا دوه لارې په ګډه کار کوي!

د پلومي ادغام ازموینې چوکاټ په Go کې لیکل شوی ، دا دا دی چې څنګه موږ زموږ ډیری داخلي کوډ ازموینه کوو. پداسې حال کې چې مخکې د بحث شوي واحد ازموینې طریقه د سپینې بکس ازموینې په څیر وه، د ادغام ازموینه یو تور بکس دی. (د سخت داخلي ازموینې لپاره اختیارونه هم شتون لري.) دا چوکاټ د دې لپاره رامینځته شوی چې د پلومي بشپړ برنامه واخلي او په هغې کې د ژوند مختلف عملیات ترسره کړي ، لکه له سکریچ څخه د نوي سټیک ځای په ځای کول ، د تغیراتو سره یې تازه کول ، او حذف کول ، ممکن څو ځله . موږ دوی په منظم ډول چلوو (د مثال په توګه، په شپه کې) او د فشار ازموینې په توګه.

(موږ موږ په دې کار کوود دې لپاره چې د ورته ادغام ازموینې وړتیاوې په اصلي SDK ژبو کې شتون ولري. تاسو کولی شئ د Go ادغام ازموینې چوکاټ وکاروئ پرته لدې چې په کومه ژبه کې ستاسو د پلومي برنامه لیکل شوې وي).

د دې چوکاټ په کارولو سره د برنامه په چلولو سره تاسو کولی شئ لاندې چیک کړئ:

  • ستاسو د پروژې کوډ په ترکیبي ډول سم دی او پرته له خطا تیریږي.
  • د سټیک او رازونو ترتیب تنظیمات کار کوي او په سمه توګه تشریح شوي.
  • ستاسو پروژه ستاسو د خوښې بادل چمتو کونکي کې په بریالیتوب سره ځای په ځای کیدی شي.
  • ستاسو پروژه په بریالیتوب سره د لومړني حالت څخه نورو ایالتونو ته لوړ کیدی شي.
  • ستاسو پروژه په بریالیتوب سره ویجاړ کیدی شي او ستاسو د بادل چمتو کونکي څخه لرې کیدی شي.

لکه څنګه چې موږ به په لنډه توګه وګورو، دا چوکاټ هم د چلولو وخت تایید کولو لپاره کارول کیدی شي.

ساده ادغام ازموینه

د دې په عمل کې د لیدلو لپاره، موږ به ذخیره وګورو pulumi/examples، لکه څنګه چې زموږ ټیم او د پلومي ټولنه دا زموږ د خپلو غوښتنو ، ژمنو او د شپې جوړونې ازموینې لپاره کاروي.

لاندې زموږ یو ساده ازموینه ده مثال چې د S3 بالټ او ځینې نور شیان چمتو کوي:

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 موږ ته اجازه راکوي چې د پلومي لخوا ثبت شوي د ځای پرځای کولو وروسته حالت وګورو نو موږ کولی شو اضافي چکونه وکړو. پدې کې د پایله شوي سټیک حالت بشپړ سنیپ شاټ شامل دی ، پشمول ترتیب ، صادر شوي محصول ارزښتونه ، ټولې سرچینې او د دوی ملکیت ارزښتونه ، او د سرچینو ترمینځ ټول انحصار.

د دې اصلي مثال لیدو لپاره ، راځئ وګورو چې زموږ برنامه یو رامینځته کوي 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 - دا د دې لپاره یو ښه فرصت دی. پدې مرحله کې ، تاسو د خپل برنامه سرچینو بشپړ حالت ته د لاسرسي سره د ګمرک Go ازموینه پرمخ وړئ. پدې حالت کې معلومات شامل دي لکه د مجازی ماشین IP پتې، URLs، او هرڅه چې د پایلې د بادل غوښتنلیکونو او زیربنا سره واقعیا تعامل ته اړتیا لري.

د مثال په توګه، زموږ د ازموینې پروګرام ملکیت صادروي 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. او دا یوازې د یخ برګ یوه برخه ده — د هر ګو ټیسټ فیچر چې تاسو یې په کوډ کې لیکلی شئ شتون لري.

د زیربنا دوامداره ادغام

دا ښه ده چې په لپ ټاپ کې ازموینې پرمخ وړئ کله چې د کوډ بیاکتنې لپاره د سپارلو دمخه د دوی ازموینې لپاره ډیری زیربنا بدلونونه رامینځته کیږي. مګر موږ او زموږ ډیری پیرودونکي د پراختیا د ژوند دورې په مختلف مرحلو کې زیربنا ازموي:

  • د یوځای کیدو دمخه د ازموینې لپاره په هر خلاص پل غوښتنه کې.
  • د هرې ژمنې په ځواب کې، دوه ځله وګورئ چې ادغام په سمه توګه ترسره شوی.
  • په دوره توګه، لکه د شپې یا په اونۍ کې د اضافي ازموینې لپاره.
  • د فعالیت یا فشار ازموینې برخې په توګه ، کوم چې معمولا د اوږدې مودې لپاره تیریږي او په موازي ډول ازموینې پرمخ وړي او / یا ورته برنامه څو ځله ځای په ځای کوي.

د دې هر یو لپاره، پلومي ستاسو د خوښې دوامداره ادغام سیسټم سره ادغام ملاتړ کوي. د دوامداره ادغام سره ، دا تاسو ته ستاسو د زیربنا لپاره ورته ازموینې پوښښ درکوي لکه ستاسو د غوښتنلیک سافټویر لپاره.

پلومي د عام CI سیسټمونو ملاتړ لري. دلته ځینې یې دي:

د لا زیاتو معلوماتو لپاره، مهرباني وکړئ د اسنادو لپاره مراجعه وکړئ دوامداره تحویلي.

لنډمهاله چاپیریالونه

یو خورا پیاوړی فرصت چې خلاصیږي یوازې د منلو ازموینې موخو لپاره د لنډمهاله چاپیریالونو ځای په ځای کولو وړتیا ده. مفهوم پروژې او سټکونه پلومي د دې لپاره ډیزاین شوی چې په اسانۍ سره په بشپړ ډول جلا او خپلواک چاپیریال ځای په ځای کړي او مات کړي، ټول په یو څو ساده CLI کمانډونو کې یا د ادغام ازموینې چوکاټ په کارولو سره.

که تاسو GitHub کاروئ، نو پلومي وړاندیز کوي GitHub اپلیکیشن، کوم چې به تاسو سره ستاسو د CI پایپ لاین کې غوښتنې راوباسي لپاره د منلو ازموینې سره وصل کولو کې مرسته وکړي. یوازې د GitHub ذخیره کې غوښتنلیک نصب کړئ، او پلومي به ستاسو د CI او حوض غوښتنو ته د زیربناوو مخکتنې، تازه معلوماتو او ازموینې پایلو په اړه معلومات اضافه کړي:

د پلومي سره د کوډ په توګه د زیربنا ازموینه. برخه 2

کله چې تاسو د خپلو اصلي منلو ازموینو لپاره پلومي کاروئ، نو تاسو به د اتوماتیک نوي وړتیاوې ترلاسه کړئ چې د ټیم تولید ته وده ورکوي او تاسو ته ستاسو د بدلونونو کیفیت باور درکوي.

نتیجه

په دې مقاله کې، موږ ولیدل چې د عمومي هدف پروګرام کولو ژبو په کارولو سره، د سافټویر پراختیا ډیری تخنیکونه زموږ لپاره شتون لري چې زموږ د غوښتنلیکونو په پراختیا کې ګټور دي. پدې کې د واحد ازموینه ، د ادغام ازموینه ، او دا چې دوی څنګه د پراخه چلولو ازموینې ترسره کولو لپاره یوځای کار کوي شامل دي. ازموینې په غوښتنې یا ستاسو د CI سیسټم کې پرمخ وړل اسانه دي.

پلومي - د خلاصې سرچینې سافټویر ، د کارولو لپاره وړیا او ستاسو د خوښې برنامې ژبې او بادلونو سره کار کوي - نن یې هڅه وکړئ!

لومړۍ برخه

سرچینه: www.habr.com

Add a comment