سلام و ټولو ته. نن د مقالې وروستۍ برخه درسره شریکوو.
د ځای پرځای کولو ازموینه
د ازموینې دا سټایل یو پیاوړی چلند دی او موږ ته اجازه راکوي چې زموږ د زیربنا کوډ داخلي کارونو ازموینې لپاره د سپینې بکس ازموینې ترسره کړو. په هرصورت، دا یو څه محدودوي هغه څه چې موږ یې ازموینه کولی شو. ازموینې د ریښتیني ګمارنې دمخه د پلومي لخوا رامینځته شوي د حافظې دننه پلي کولو پلان پراساس ترسره کیږي او له همدې امله ګمارنه پخپله نشي ازموینه کیدی. د داسې قضیو لپاره، پلومي د ادغام ازموینې چوکاټ لري. او دا دوه لارې په ګډه کار کوي!
د پلومي ادغام ازموینې چوکاټ په Go کې لیکل شوی ، دا دا دی چې څنګه موږ زموږ ډیری داخلي کوډ ازموینه کوو. پداسې حال کې چې مخکې د بحث شوي واحد ازموینې طریقه د سپینې بکس ازموینې په څیر وه، د ادغام ازموینه یو تور بکس دی. (د سخت داخلي ازموینې لپاره اختیارونه هم شتون لري.) دا چوکاټ د دې لپاره رامینځته شوی چې د پلومي بشپړ برنامه واخلي او په هغې کې د ژوند مختلف عملیات ترسره کړي ، لکه له سکریچ څخه د نوي سټیک ځای په ځای کول ، د تغیراتو سره یې تازه کول ، او حذف کول ، ممکن څو ځله . موږ دوی په منظم ډول چلوو (د مثال په توګه، په شپه کې) او د فشار ازموینې په توګه.
(موږ
د دې چوکاټ په کارولو سره د برنامه په چلولو سره تاسو کولی شئ لاندې چیک کړئ:
- ستاسو د پروژې کوډ په ترکیبي ډول سم دی او پرته له خطا تیریږي.
- د سټیک او رازونو ترتیب تنظیمات کار کوي او په سمه توګه تشریح شوي.
- ستاسو پروژه ستاسو د خوښې بادل چمتو کونکي کې په بریالیتوب سره ځای په ځای کیدی شي.
- ستاسو پروژه په بریالیتوب سره د لومړني حالت څخه نورو ایالتونو ته لوړ کیدی شي.
- ستاسو پروژه په بریالیتوب سره ویجاړ کیدی شي او ستاسو د بادل چمتو کونکي څخه لرې کیدی شي.
لکه څنګه چې موږ به په لنډه توګه وګورو، دا چوکاټ هم د چلولو وخت تایید کولو لپاره کارول کیدی شي.
ساده ادغام ازموینه
د دې په عمل کې د لیدلو لپاره، موږ به ذخیره وګورو pulumi/examples
، لکه څنګه چې زموږ ټیم او د پلومي ټولنه دا زموږ د خپلو غوښتنو ، ژمنو او د شپې جوړونې ازموینې لپاره کاروي.
لاندې زموږ یو ساده ازموینه ده
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 سیسټمونو ملاتړ لري. دلته ځینې یې دي:
د لا زیاتو معلوماتو لپاره، مهرباني وکړئ د اسنادو لپاره مراجعه وکړئ
لنډمهاله چاپیریالونه
یو خورا پیاوړی فرصت چې خلاصیږي یوازې د منلو ازموینې موخو لپاره د لنډمهاله چاپیریالونو ځای په ځای کولو وړتیا ده. مفهوم
که تاسو GitHub کاروئ، نو پلومي وړاندیز کوي
کله چې تاسو د خپلو اصلي منلو ازموینو لپاره پلومي کاروئ، نو تاسو به د اتوماتیک نوي وړتیاوې ترلاسه کړئ چې د ټیم تولید ته وده ورکوي او تاسو ته ستاسو د بدلونونو کیفیت باور درکوي.
نتیجه
په دې مقاله کې، موږ ولیدل چې د عمومي هدف پروګرام کولو ژبو په کارولو سره، د سافټویر پراختیا ډیری تخنیکونه زموږ لپاره شتون لري چې زموږ د غوښتنلیکونو په پراختیا کې ګټور دي. پدې کې د واحد ازموینه ، د ادغام ازموینه ، او دا چې دوی څنګه د پراخه چلولو ازموینې ترسره کولو لپاره یوځای کار کوي شامل دي. ازموینې په غوښتنې یا ستاسو د CI سیسټم کې پرمخ وړل اسانه دي.
پلومي - د خلاصې سرچینې سافټویر ، د کارولو لپاره وړیا او ستاسو د خوښې برنامې ژبې او بادلونو سره کار کوي -
→
سرچینه: www.habr.com