Gipadayon namon ang among pagrepaso sa usa ka talagsaon nga himan alang sa pag-uswag alang sa Windows ug daghan pa, Azure DevOps. Niining higayona, nga nag-antos pag-ayo sa mga variable sa palibot, nakahukom ako nga ibutang ang tanan nga kasinatian sa usa ka artikulo.
Sugod gikan sa kamatuoran nga sila adunay lain-laing mga syntax alang sa matag execution palibot, nga natapos uban sa kakulang sa usa ka standard nga abilidad sa pagbalhin sa mga baryable gikan sa usa ka yugto sa pipeline ngadto sa lain.
Maghimo ako og usa ka reserbasyon nga ang mga nag-unang mga pananglitan anaa sa Release Pipelines, tungod kay ang YAML wala pa makaabot didto, ug kinahanglan nako ang pagpaandar sa daghang mga yugto ug daghang mga artifact. Kini, ingon og, nahimo nang magamit sa mga regular nga Pipelines, nga halos katumbas sa ilang gamit. Sa Pipelines YAML, gidugang namo ang gamay nga graphical tooltip sa representasyon sa teksto nga adunay mga parameter nga mahimong itakda. Kini sayon ββββkaayo; dili nimo kinahanglan nga moagi sa dokumentasyon alang sa matag module. Apan akong ihulagway kini sa sunod nga artikulo, apan sa pagkakaron ania ang hulagway sa kabag-ohan mismo.
Pagtipig ug paggamit
Magsugod kita sa kamatuoran nga kita adunay mga default nga variable sa sistema. Nagsugod sila, depende sa ilang gigikanan, sa mga pulong nga Release, System, etc. Ang bug-os nga listahan (ingon nga kini nahimo, dili), anaa sa
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)
Kung nagbutang ka usa ka variable sa ahente diin ang buluhaton gipatuman, kini $(System.AccessToken). Kung gusto nimo nga gamiton kini sa sulod sa usa ka script sa powershell sa parehas nga ahente, kini mahimong $env:SYSTEM_ACCESSTOKEN. Kung ikaw, idili sa Dios, gusto nga gamiton kini nga variable sa pipila ka hilit nga host gamit ang PowerShell sa target nga mga makina nga buluhaton, kinahanglan nimo nga ipasa kini pinaagi sa usa ka argumento sa script gamit ang
Ang parehas nga mga balaod wala magamit sa imong kaugalingon nga mga variable; dinhi ikaw ang responsable sa syntax. Ang mga variable mahimong ibutang sa lokal sa matag buluhaton.
O sa tibuok kalibutan ngadto sa variable store, ug dayon i-link kini gikan sa tindahan. Komportable kaayo.
Isip usa ka bonus, kung sekreto kaayo ang mga variable, mahimo silang tipigan sa Azure cloud sa storage nga gitawag og Azure Vault; mahimo nimong i-link ang Vault sa proyekto sa Library.
Sa kinatibuk-an, ang tanan klaro sa mga variable; sa mga pipeline mahimo pa silang itakda nga mano-mano alang sa matag paglansad; sa pagpagawas walaβy ingon nga pagpaandar. Makita nimo kung unsa ang imong gibalhin sa pipeline pag-usab sa mga log sa pag-initialize sa ahente, apan hinumdomi nga naa na sila didto sa nakabig nga porma.
Dynamic nga mga Variable
Magsugod ang kalingawan kon gusto namong makadawat ug bili sa usa ka yugto ug ipasa kini sa sunod.
Wala kami gihatagan sa ingon nga pagpaandar. Apan ang among mga kamot dili alang sa kalaay ug sa tabang sa Google nakit-an ang usa ka solusyon. Salamat sa Dios, ang Azure DevOps adunay usa ka API nga nagtugot kanamo sa pagbuhat sa labi pa sa kung unsa ang gihulagway sa interface.
Mao nga, kinahanglan namon ang usa ka tawag sa pag-update sa mga global variable, nga among buhaton direkta gikan sa sulod sa pipeline. Ang adres gikuha gikan sa mga variable sa palibot, ang parehas nga walaβy pulong bahin sa dokumentasyon, sama sa nahisgutan sa sayo pa. Mahimo nimo nga ibutang kini sa imong kaugalingon o, unsa pa, i-hardcode kini kung ilang isira ang tindahan.
$releaseurl = ('{0}{1}/_apis/release/releases/{2}?api-version=5.0' -f $($env:SYSTEM_TEAMFOUNDATIONSERVERURI), $($env:SYSTEM_TEAMPROJECTID), $($env:RELEASE_RELEASEID) )
Gibutang namo ang walay sulod nga bili sa variable nga gusto namong ibalhin, itakda ang Scope - Release
Pananglitan, naghimo kami og pipila ka random value generator. Hatagi'g pagtagad ang syntax sa pagdeklara sa usa ka variable sulod niini nga yugto; kini nga gamit gipaila.
Sa sunod nga lakang, gipasa namon ang variable sa script, oo, oo, dili mahimo nga direkta, kinahanglan kini pinaagi sa usa ka argumento.
Script ubos sa spoiler
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
O
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
Sa laktod nga pagkasulti, gikuha sa among script ang variable myVar isip input ug gigamit ang API aron ibutang ang kantidad niini nga variable sa stageVar. Sa sunod nga lakang, gamit ang system variable syntax, mahimo natong tan-awon kini.
Ang panig-ingnan yano ra, apan ang pag-andar nagbukas sa maayong mga oportunidad alang kanamo, dugang sa akong nauna
Sa sunod nga artikulo, kung kinahanglan, maghisgot ako bahin sa mga pipeline sa YAML; adunay daghang makapaikag nga mga inobasyon didto kaniadtong bag-o lang.
Source: www.habr.com