በ Azure DevOps ቧንቧዎች ውስጥ ተለዋዋጮችን መጠቀም

ለዊንዶውስ እና ለሌሎችም ስለ Azure DevOps የሚሆን አስደናቂ መሳሪያ ግምገማችንን እንቀጥላለን። በዚህ ጊዜ፣ ከአካባቢ ተለዋዋጮች ጋር ብዙ ተሠቃየሁ፣ ሁሉንም ተሞክሮ ወደ አንድ ጽሑፍ ለማስቀመጥ ወሰንኩ።

ለእያንዳንዱ የማስፈጸሚያ አካባቢ የተለያዩ አገባብ ያላቸው ከመሆናቸው እውነታ በመነሳት ተለዋዋጮችን ከአንድ የቧንቧ መስመር ወደ ሌላ ለማስተላለፍ መደበኛ ችሎታ ባለመኖሩ ያበቃል።

ዋናዎቹ ምሳሌዎች በመልቀቂያ ቧንቧዎች ላይ እንደሚሆኑ አስቀምጫለሁ, ምክንያቱም YAML እስካሁን እዚያ አልደረሰም, እና የበርካታ ደረጃዎች እና ብዙ ቅርሶች ተግባራዊነት እፈልጋለሁ. ይህ, በመደበኛ የቧንቧ መስመሮች ውስጥ የሚገኝ ይመስላል, ይህም በተግባር በተግባር ከእነርሱ ጋር እኩል ነው. በPipelines 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_ACCESSTOKEN ይሆናል። በዒላማ ማሽኖች ተግባር ላይ PowerShellን በመጠቀም ይህን ተለዋዋጭ በአንዳንድ የርቀት አስተናጋጆች ላይ እግዚአብሔር አይከለክልዎትም ፣ ይህንን በክርክር ወደ ስክሪፕቱ ማለፍ ያስፈልግዎታል ። የእኔ ገንዘብ. በ bash ቀላል ነው፣ በ$SYSTEM_ACCESSTOKEN ክርክር እና አገባብ በመጠቀም በቀላሉ ወደ ውስጥ ያስተላልፉታል።

ተመሳሳይ ህጎች በራስዎ ተለዋዋጮች ላይ አይተገበሩም ፣ እዚህ እርስዎ ለአገባቡ ተጠያቂ ነዎት። ተለዋዋጮች በእያንዳንዱ ተግባር ውስጥ በአካባቢው ሊዘጋጁ ይችላሉ.

በ Azure DevOps ቧንቧዎች ውስጥ ተለዋዋጮችን መጠቀም

ወይም በአለምአቀፍ ደረጃ ወደ ተለዋዋጭ ማከማቻ, እና ከዚያ ከመደብሩ ያገናኙዋቸው. በጣም ምቹ።

በ Azure DevOps ቧንቧዎች ውስጥ ተለዋዋጮችን መጠቀም

እንደ ጉርሻ፣ ተለዋዋጮቹ በጣም ሚስጥራዊ ከሆኑ፣ በአዙሬ ደመና ውስጥ አዙሬ ቮልት በሚባል ማከማቻ ውስጥ ሊቀመጡ ይችላሉ፣ ቮልትን በቤተ መፃህፍት ውስጥ ካለው ፕሮጀክት ጋር ማገናኘት ይችላሉ።

በ Azure DevOps ቧንቧዎች ውስጥ ተለዋዋጮችን መጠቀም

በአጠቃላይ, ሁሉም ነገር በተለዋዋጭ ግልጽ ነው, በቧንቧዎች ውስጥ አሁንም ለእያንዳንዱ ጅምር በእጅ ሊዘጋጁ ይችላሉ, በተለቀቀው ውስጥ ምንም አይነት ተግባር የለም. ወደ ቧንቧው የሚያስተላልፉትን በኤጀንሲ ማስጀመሪያ ምዝግብ ማስታወሻዎች ውስጥ እንደገና ማየት ይችላሉ፣ ነገር ግን እነሱ በተለወጠ ቅፅ ውስጥ እንዳሉ ያስታውሱ።

በ Azure DevOps ቧንቧዎች ውስጥ ተለዋዋጮችን መጠቀም

ተለዋዋጭ ተለዋዋጮች

ደስታው የሚጀምረው በአንድ ደረጃ ላይ የተወሰነ እሴት ለመቀበል እና ወደሚቀጥለው ለማለፍ ስንፈልግ ነው።

በ Azure DevOps ቧንቧዎች ውስጥ ተለዋዋጮችን መጠቀም

እንደዚህ አይነት ተግባር አልተሰጠንም. እጃችን ግን ለመሰላቸት አይደለም እና በጎግል እርዳታ አንድ መፍትሄ ተገኘ። እግዚአብሔር ይመስገን Azure DevOps በበይነገጹ ላይ ከሚታየው ነገር ትንሽ የበለጠ እንድናደርግ የሚያስችል ኤፒአይ አለው።

ስለዚህ, ዓለም አቀፍ ተለዋዋጮችን ለማዘመን ጥሪ እንፈልጋለን, ይህም በቀጥታ ከቧንቧ መስመር ውስጥ እናደርጋለን. አድራሻው ከአካባቢ ተለዋዋጮች የተወሰደ ነው, ቀደም ሲል እንደተጠቀሰው በሰነዱ ውስጥ አንድም ቃል የሌለበት ተመሳሳይ ናቸው. እርስዎ እራስዎ ሊያዘጋጁዋቸው ይችላሉ ወይም በተጨማሪ, ሱቁን ከዘጉ ሃርድ ኮድ ያድርጉዋቸው.

$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 ቧንቧዎች ውስጥ ተለዋዋጮችን መጠቀም

ስክሪፕት በብልሽት ስር

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ን እንደ ግብአት ወስዶ ኤፒአይን ተጠቅሞ የዚህን ተለዋዋጭ እሴት ወደ ደረጃ ቫር ለማስቀመጥ። በሚቀጥለው ደረጃ, የስርዓት ተለዋዋጭ አገባብ በመጠቀም, ልንመለከተው እንችላለን.

በ Azure DevOps ቧንቧዎች ውስጥ ተለዋዋጮችን መጠቀም

ምሳሌው በጣም ቀላል ነው፣ ነገር ግን ተግባራቱ ከቀድሞዬ በተጨማሪ ጥሩ እድሎችን ይከፍተናል ጽሑፍ, በሙከራ የመጀመሪያ ደረጃ ላይ ምናባዊ ማሽን መፍጠር ስንችል, በእሱ ላይ አንዳንድ ተጨማሪ ማጭበርበሮችን እና በርካታ በትይዩ ያድርጉ. እና የመጨረሻው ደረጃ ማጥፋት ነው. አሁን የምርቱን አውቶማቲክ ሙከራዎች በአዲስ ምናባዊ ማሽኖች ላይ እንሰራለን። ለ 10 ደቂቃ ያህል እንደሚኖሩ ግምት ውስጥ በማስገባት አንድ ሳንቲም ያስከፍላል.

በሚቀጥለው ርዕስ ላይ፣ አስፈላጊ ከሆነ፣ ስለ YAML ቧንቧ መስመሮች እናገራለሁ፤ በቅርብ ጊዜ እዚያ ብዙ አስደሳች ፈጠራዎች ነበሩ።

ምንጭ: hab.com

አስተያየት ያክሉ