په Azure DevOps پایپ لاینونو کې د متغیرونو کارول

موږ د وینډوز او نور ډیر څه لپاره د پراختیا لپاره په زړه پورې وسیلې زموږ بیاکتنې ته دوام ورکوو ، Azure DevOps. دا ځل، د چاپیریال متغیراتو سره ډیر زیان سره، ما پریکړه وکړه چې ټولې تجربې په یوه مقاله کې واچوم.

د دې حقیقت څخه پیل کول چې دوی د هر اجرا کولو چاپیریال لپاره مختلف ترکیب لري ، د پایپ لاین له یوې مرحلې څخه بل ته د متغیرونو لیږدولو لپاره د معیاري وړتیا نشتوالي سره پای ته رسیږي.

زه به یو ریزرویشن وکړم چې اصلي مثالونه به د ریلیز پایپ لاینونو کې وي، ځکه چې YAML لا تر اوسه ندي ترلاسه شوي، او زه د ډیری مرحلو او ډیری آثارو فعالیت ته اړتیا لرم. دا، داسې ښکاري، په منظمو پایپ لاینونو کې شتون لري، کوم چې په عملي توګه دوی په فعالیت کې مساوي کوي. په پایپ لاین YAML کې، موږ د متن نمایندګۍ ته د پیرامیټونو سره یو کوچنی ګرافیکي وسیله اضافه کړه چې ټاکل کیدی شي. دا خورا اسانه دی؛ تاسو اړتیا نلرئ د هر ماډل لپاره اسنادو ته لاړشئ. مګر زه به دا په راتلونکې مقاله کې تشریح کړم، مګر د اوس لپاره دلته پخپله د نوښت انځور دی.

په Azure DevOps پایپ لاینونو کې د متغیرونو کارول

زیرمه او کارول

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

steps:
 - bash: echo This script could use $SYSTEM_ACCESSTOKEN
    env:
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)
  - powershell: Write-Host "This is a script that could use $env:SYSTEM_ACCESSTOKEN"
    env:
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)

که تاسو په اجنټ کې یو متغیر تنظیم کړئ په کوم کې چې دنده اجرا کیږي، دا $ (System.AccessToken) دی. که تاسو غواړئ دا په ورته اجنټ کې د پاورشیل سکریپټ دننه وکاروئ ، نو دا به دمخه $env:SYSTEM_ACCESTOKEN وي. که تاسو ، خدای مه کړه ، غواړئ دا متغیر په ځینې لیرې کوربه کې د پاور شیل په کارولو سره د هدف ماشینونو دندې کې وکاروئ ، نو تاسو اړتیا لرئ دا د سکریپټ په کارولو سره د دلیل له لارې انتقال کړئ. زما پیسې. د bash سره دا ساده ده، تاسو کولی شئ دا د استدلال او ترکیب $SYSTEM_ACCESTOKEN په کارولو سره دننه دننه کړئ.

ورته قوانین ستاسو په خپل متغیرونو کې نه پلي کیږي؛ دلته تاسو دمخه د نحو لپاره مسؤل یاست. متغیرات په هره دنده کې په محلي توګه تنظیم کیدی شي.

په Azure DevOps پایپ لاینونو کې د متغیرونو کارول

یا په نړیواله کچه متغیر پلورنځي ته ، او بیا یې له پلورنځي څخه لینک کړئ. په ډیره آرامۍ سره.

په Azure DevOps پایپ لاینونو کې د متغیرونو کارول

د بونس په توګه، که متغیرات خورا پټ وي، دوی د Azure Vault په نوم ذخیره کې په Azure بادل کې زیرمه کیدی شي؛ تاسو کولی شئ والټ په کتابتون کې پروژې سره وصل کړئ.

په Azure DevOps پایپ لاینونو کې د متغیرونو کارول

په عموم کې ، هرڅه د متغیرونو سره روښانه دي؛ په پایپ لاینونو کې دوی لاهم د هر لانچ لپاره په لاسي ډول تنظیم کیدی شي؛ په خوشې کیدو کې داسې هیڅ فعالیت شتون نلري. تاسو کولی شئ هغه څه وګورئ چې تاسو پایپ لاین ته بیا د ایجنټ ابتکار لاګونو کې لیږدئ ، مګر په یاد ولرئ چې دوی دمخه په بدل شوي شکل کې شتون لري.

په Azure DevOps پایپ لاینونو کې د متغیرونو کارول

متحرک تغیرات

ساتیري هغه وخت پیل کیږي کله چې موږ غواړو په یوه مرحله کې یو څه ارزښت ترلاسه کړو او بل ته یې انتقال کړو.

په Azure DevOps پایپ لاینونو کې د متغیرونو کارول

موږ ته دا ډول فعالیت نه دی ورکړل شوی. خو زموږ لاسونه د ستړيا لپاره نه دي او د ګوګل په مرسته د حل لاره وموندل شوه. د خدای څخه مننه ، Azure DevOps یو API لري چې موږ ته اجازه راکوي د هغه څه څخه چې په انٹرفیس کې ښودل شوي یو څه ډیر څه وکړو.

نو، موږ به د نړیوال متغیرونو تازه کولو لپاره زنګ ته اړتیا ولرو، کوم چې موږ به مستقیم د پایپ لاین څخه ترسره کړو. پته د چاپیریال متغیرونو څخه اخیستل کیږي، ورته ورته چې په اسنادو کې یې په اړه هیڅ کلمه نشته، لکه څنګه چې مخکې یادونه وشوه. تاسو کولی شئ دوی پخپله تنظیم کړئ یا نور څه دي، دوی هارډ کوډ کړئ که دوی هټۍ وتړي.

$releaseurl = ('{0}{1}/_apis/release/releases/{2}?api-version=5.0' -f $($env:SYSTEM_TEAMFOUNDATIONSERVERURI), $($env:SYSTEM_TEAMPROJECTID), $($env:RELEASE_RELEASEID)  )

موږ د متغیر خالي ارزښت ټاکلی چې موږ یې لیږدول غواړو، د سکوپ - ریلیز تنظیم کړئ

په Azure DevOps پایپ لاینونو کې د متغیرونو کارول

د مثال په توګه، موږ یو څه تصادفي ارزښت جنراتور جوړوو. د دې مرحلې دننه د متغیر اعلان کولو ترکیب ته پام وکړئ؛ دا فعالیت معرفي شو.

په Azure DevOps پایپ لاینونو کې د متغیرونو کارول

په بل ګام کې، موږ متغیر سکریپټ ته انتقالوو، هو، هو، دا په مستقیم ډول ممکنه نه ده، دا باید د دلیل له لارې وي.

په Azure DevOps پایپ لاینونو کې د متغیرونو کارول

سکریپټ د سپیلر لاندې

پاور سیسټم

#Script requires stageVar variable in release variables set to Release scope

param ( [string] $expVar )
#region variables
$ReleaseVariableName = 'StageVar'
$releaseurl = ('{0}{1}/_apis/release/releases/{2}?api-version=5.0' -f $($env:SYSTEM_TEAMFOUNDATIONSERVERURI), $($env:SYSTEM_TEAMPROJECTID), $($env:RELEASE_RELEASEID)  )
#endregion


#region Get Release Definition
Write-Host "URL: $releaseurl"
$Release = Invoke-RestMethod -Uri $releaseurl -Headers @{
    Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
#endregion

#region Output current Release Pipeline
Write-Output ('Release Pipeline variables output: {0}' -f $($Release.variables | ConvertTo-Json -Depth 10))
#endregion


#region Update StageVar with new value
$release.variables.($ReleaseVariableName).value = "$expVar"
#endregion

#region update release pipeline
Write-Output ('Updating Release Definition')
$json = @($release) | ConvertTo-Json -Depth 99
Invoke-RestMethod -Uri $releaseurl -Method Put -Body $json -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }
#endregion

#region Get updated Release Definition
Write-Output ('Get updated Release Definition')
Write-Host "URL: $releaseurl"
$Release = Invoke-RestMethod -Uri $releaseurl -Headers @{
    Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
#endregion

#region Output Updated Release Pipeline
Write-Output ('Updated Release Pipeline variables output: {0}' -f $($Release.variables | ConvertTo-Json -Depth 10))
#endregion

یا

باش

INPUT_VAR=$1
RELEASE_VAR=$2

echo Test ID: ${INPUT_VAR}

RELEASE_URL="${SYSTEM_TEAMFOUNDATIONSERVERURI}${SYSTEM_TEAMPROJECTID}/_apis/release/releases/${RELEASE_RELEASEID}?api-version=5.0"

echo release url: $RELEASE_URL

RELEASE_JSON=$(curl -H "Authorization: Bearer $SYSTEM_ACCESSTOKEN" $RELEASE_URL)

OUTPUT=`jq ''.variables.${RELEASE_VAR}.value' = '"${INPUT_VAR}"'' <<< $RELEASE_JSON`

curl -H "Authorization: Bearer $SYSTEM_ACCESSTOKEN" -H "Content-Type: application/json" -X PUT -d "$OUTPUT" $RELEASE_URL

په لنډه توګه، زموږ سکریپټ متغیر myVar د ننوتلو په توګه اخلي او API کاروي ترڅو د دې متغیر ارزښت سټیج ویر ته واچوي. په بل ګام کې، د سیسټم متغیر ترکیب په کارولو سره، موږ کولی شو دا وګورو.

په Azure DevOps پایپ لاینونو کې د متغیرونو کارول

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

په راتلونکې مقاله کې ، که اړتیا وي ، زه به د YAML پایپ لاینونو په اړه وغږیږم؛ پدې وروستیو کې هلته خورا په زړه پوري نوښتونه شتون لري.

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

Add a comment