ለዊንዶውስ እና ለሌሎችም ስለ Azure DevOps የሚሆን አስደናቂ መሳሪያ ግምገማችንን እንቀጥላለን። በዚህ ጊዜ፣ ከአካባቢ ተለዋዋጮች ጋር ብዙ ተሠቃየሁ፣ ሁሉንም ተሞክሮ ወደ አንድ ጽሑፍ ለማስቀመጥ ወሰንኩ።
ለእያንዳንዱ የማስፈጸሚያ አካባቢ የተለያዩ አገባብ ያላቸው ከመሆናቸው እውነታ በመነሳት ተለዋዋጮችን ከአንድ የቧንቧ መስመር ወደ ሌላ ለማስተላለፍ መደበኛ ችሎታ ባለመኖሩ ያበቃል።
ዋናዎቹ ምሳሌዎች በመልቀቂያ ቧንቧዎች ላይ እንደሚሆኑ አስቀምጫለሁ, ምክንያቱም YAML እስካሁን እዚያ አልደረሰም, እና የበርካታ ደረጃዎች እና ብዙ ቅርሶች ተግባራዊነት እፈልጋለሁ. ይህ, በመደበኛ የቧንቧ መስመሮች ውስጥ የሚገኝ ይመስላል, ይህም በተግባር በተግባር ከእነርሱ ጋር እኩል ነው. በPipelines YAML ውስጥ፣ ሊዋቀሩ ከሚችሉ መለኪያዎች ጋር ለጽሑፍ ውክልና ትንሽ የግራፊክ መሣሪያ ጫፍ ጨምረናል። በጣም ምቹ ነው; ለእያንዳንዱ ሞጁል ሰነዶችን ማለፍ አያስፈልግዎትም. ግን ይህንን በሚቀጥለው ርዕስ ውስጥ እገልጻለሁ, አሁን ግን የፈጠራው ራሱ ምስል እዚህ አለ.
ማከማቻ እና አጠቃቀም
በስርዓቱ ውስጥ ነባሪ ተለዋዋጮች ስላሉን እንጀምር። እንደ አመጣጣቸው መለቀቅ፣ ሥርዓት ወዘተ በሚሉ ቃላት ይጀምራሉ። ሙሉ ዝርዝር (እንደ ተለወጠ, አይደለም), በ ላይ ይገኛል
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_ACCESSTOKEN ይሆናል። በዒላማ ማሽኖች ተግባር ላይ PowerShellን በመጠቀም ይህን ተለዋዋጭ በአንዳንድ የርቀት አስተናጋጆች ላይ እግዚአብሔር አይከለክልዎትም ፣ ይህንን በክርክር ወደ ስክሪፕቱ ማለፍ ያስፈልግዎታል ።
ተመሳሳይ ህጎች በራስዎ ተለዋዋጮች ላይ አይተገበሩም ፣ እዚህ እርስዎ ለአገባቡ ተጠያቂ ነዎት። ተለዋዋጮች በእያንዳንዱ ተግባር ውስጥ በአካባቢው ሊዘጋጁ ይችላሉ.
ወይም በአለምአቀፍ ደረጃ ወደ ተለዋዋጭ ማከማቻ, እና ከዚያ ከመደብሩ ያገናኙዋቸው. በጣም ምቹ።
እንደ ጉርሻ፣ ተለዋዋጮቹ በጣም ሚስጥራዊ ከሆኑ፣ በአዙሬ ደመና ውስጥ አዙሬ ቮልት በሚባል ማከማቻ ውስጥ ሊቀመጡ ይችላሉ፣ ቮልትን በቤተ መፃህፍት ውስጥ ካለው ፕሮጀክት ጋር ማገናኘት ይችላሉ።
በአጠቃላይ, ሁሉም ነገር በተለዋዋጭ ግልጽ ነው, በቧንቧዎች ውስጥ አሁንም ለእያንዳንዱ ጅምር በእጅ ሊዘጋጁ ይችላሉ, በተለቀቀው ውስጥ ምንም አይነት ተግባር የለም. ወደ ቧንቧው የሚያስተላልፉትን በኤጀንሲ ማስጀመሪያ ምዝግብ ማስታወሻዎች ውስጥ እንደገና ማየት ይችላሉ፣ ነገር ግን እነሱ በተለወጠ ቅፅ ውስጥ እንዳሉ ያስታውሱ።
ተለዋዋጭ ተለዋዋጮች
ደስታው የሚጀምረው በአንድ ደረጃ ላይ የተወሰነ እሴት ለመቀበል እና ወደሚቀጥለው ለማለፍ ስንፈልግ ነው።
እንደዚህ አይነት ተግባር አልተሰጠንም. እጃችን ግን ለመሰላቸት አይደለም እና በጎግል እርዳታ አንድ መፍትሄ ተገኘ። እግዚአብሔር ይመስገን Azure DevOps በበይነገጹ ላይ ከሚታየው ነገር ትንሽ የበለጠ እንድናደርግ የሚያስችል ኤፒአይ አለው።
ስለዚህ, ዓለም አቀፍ ተለዋዋጮችን ለማዘመን ጥሪ እንፈልጋለን, ይህም በቀጥታ ከቧንቧ መስመር ውስጥ እናደርጋለን. አድራሻው ከአካባቢ ተለዋዋጮች የተወሰደ ነው, ቀደም ሲል እንደተጠቀሰው በሰነዱ ውስጥ አንድም ቃል የሌለበት ተመሳሳይ ናቸው. እርስዎ እራስዎ ሊያዘጋጁዋቸው ይችላሉ ወይም በተጨማሪ, ሱቁን ከዘጉ ሃርድ ኮድ ያድርጉዋቸው.
$releaseurl = ('{0}{1}/_apis/release/releases/{2}?api-version=5.0' -f $($env:SYSTEM_TEAMFOUNDATIONSERVERURI), $($env:SYSTEM_TEAMPROJECTID), $($env:RELEASE_RELEASEID) )
እኛ ማስተላለፍ የምንፈልገውን የተለዋዋጭ ባዶ ዋጋ እናስቀምጣለን, ወሰን አዘጋጅተናል - መልቀቅ
ለምሳሌ፣ አንዳንድ የዘፈቀደ እሴት ጀነሬተር እንሰራለን። በዚህ ደረጃ ውስጥ ያለውን ተለዋዋጭ የማወጅ አገባብ ትኩረት ይስጡ፤ ይህ ተግባር ተጀመረ።
በሚቀጥለው ደረጃ, ተለዋዋጭውን ወደ ስክሪፕቱ እናስተላልፋለን, አዎ, አዎ, በቀጥታ አይቻልም, በክርክር ውስጥ መሆን አለበት.
ስክሪፕት በብልሽት ስር
PowerShell
#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
ወይም
Bash
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ን እንደ ግብአት ወስዶ ኤፒአይን ተጠቅሞ የዚህን ተለዋዋጭ እሴት ወደ ደረጃ ቫር ለማስቀመጥ። በሚቀጥለው ደረጃ, የስርዓት ተለዋዋጭ አገባብ በመጠቀም, ልንመለከተው እንችላለን.
ምሳሌው በጣም ቀላል ነው፣ ነገር ግን ተግባራቱ ከቀድሞዬ በተጨማሪ ጥሩ እድሎችን ይከፍተናል
በሚቀጥለው ርዕስ ላይ፣ አስፈላጊ ከሆነ፣ ስለ YAML ቧንቧ መስመሮች እናገራለሁ፤ በቅርብ ጊዜ እዚያ ብዙ አስደሳች ፈጠራዎች ነበሩ።
ምንጭ: hab.com