Isu tinoenderera mberi nekuongorora kwedu kwechishandiso chinoshamisa chekusimudzira Windows uye nezvimwe, Azure DevOps. Panguva ino, ndatambura zvakanyanya nekusiyana kwenzvimbo, ndakafunga kuisa ruzivo rwese muchinyorwa chimwe.
Kutanga kubva pakuziva kuti vane syntax yakasiyana yenzvimbo yega yega yekuurayisa, ichipera nekushaikwa kwekugona kufambisa zvinosiyana kubva pane imwe nhanho yepombi kuenda kune imwe.
Ini ndichachengeta kuti mienzaniso mikuru ichave paKuburitsa Mapaipi, nekuti YAML haisati yasvika ipapo, uye ini ndinoda kushanda kwematanho mazhinji uye akawanda ekugadzira. Izvi, zvinoita sekunge, zvave kuwanikwa mumaPipelines enguva dzose, ayo akaenzana nawo mukushanda. MuPipelines YAML, isu takawedzera diki graphical tooltip kune inomiririra mavara ane paramita anogona kusetwa. Zviri nyore kwazvo; haufanirwe kuenda nepakati pezvinyorwa zvemodule yega yega. Asi ini ndichatsanangura izvi munyaya inotevera, asi ikozvino heino mufananidzo wehutsva pachayo.
Kuchengeta uye kushandisa
Ngatitangei nenyaya yekuti isu tine default variables muhurongwa. Ivo vanotanga, zvichienderana nekwavakabva, nemashoko okuti Release, System, etc. Rondedzero yakazara (sezvazvinoita, kwete), inowanikwa pa
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)
Kana iwe ukaisa shanduko pane mumiririri pairi basa rinoitwa, iri $(System.AccessToken). Kana iwe uchida kuishandisa mukati mepowershell script pane imwecheteyo agent, inenge yatova $env:SYSTEM_ACCESSTOKEN. Kana iwe, Mwari varamba, uchida kushandisa shanduko iyi pane imwe nzvimbo iri kure uchishandisa PowerShell pane inotangwa muchina basa, unofanirwa kupfuura izvi kuburikidza nekupokana kune script uchishandisa.
Mitemo mimwecheteyo haishande kune ako akasiyana siyana; pano iwe ndiwe watove nebasa reiyo syntax. Variables zvinogona kusetwa munzvimbo mune yega yega basa.
Kana pasi rose kuchitoro chinoshanduka, wobva wazvibatanidza kubva muchitoro. Zvakanaka kwazvo.
Sebhonasi, kana iwo akasiyana akavanzika kwazvo, anogona kuchengetwa muAzure gore mune yekuchengetedza inonzi Azure Vault; unogona kubatanidza Vault kune purojekiti muLibhurari.
Muzhinji, zvese zviri pachena nezvinosiyana; mumapaipi anogona achiri kusetwa nemaoko kune yega yega kutanga; mukuburitswa hakuna kuita kwakadai. Iwe unogona kuona zvauri kuendesa kune pombi zvakare mune ejenti yekutanga matanda, asi ramba uchifunga kuti ivo vatovepo mune yakashandurwa fomu.
Dynamic Variables
Kunakidzwa kunotanga apo isu tinoda kugashira kumwe kukosha muchikamu chimwe tochipfuudza kune chinotevera.
Hatina kupihwa mashandiro akadai. Asi maoko edu haasi ekufinhwa uye nerubatsiro rweGoogle mhinduro yakawanikwa. Ndinotenda Mwari, Azure DevOps ine API inotitendera kuti tiite zvishoma pane izvo zvakaratidzwa mune interface.
Saka, isu tichada kufona kuti tigadzirise machinjiro epasi rose, izvo zvatichaita zvakananga kubva mukati mepombi. Kero inotorwa kubva kune zvakatipoteredza zvinosiyana, zvakafanana izvo pasina izwi nezve muzvinyorwa, sezvambotaurwa. Iwe unogona kuzvimisa iwe pachako kana, zvakanyanya, hardcode ivo kana vakavhara chitoro.
$releaseurl = ('{0}{1}/_apis/release/releases/{2}?api-version=5.0' -f $($env:SYSTEM_TEAMFOUNDATIONSERVERURI), $($env:SYSTEM_TEAMPROJECTID), $($env:RELEASE_RELEASEID) )
Isu tinoseta iyo isina chinhu kukosha kweiyo vhezheni yatinoda kuendesa, isa Scope - Release
Semuyenzaniso, isu tinoita mamwe random value jenareta. Teerera kune syntax yekuzivisa shanduko mukati mechikamu ichi; mashandiro aya akaunzwa.
Muchikamu chinotevera, tinopfuudza shanduko kune script, hongu, hongu, hazvigoneke zvakananga, inofanira kunge iri kuburikidza nekukakavara.
Script pasi pe 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
Kana
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
Muchidimbu, script yedu inotora shanduko myVar sekuisa uye inoshandisa iyo API kuisa kukosha kweiyo shanduko mustageVar. Muchinhanho chinotevera, tichishandisa system variable syntax, tinogona kuzvitarisa.
Muenzaniso uri nyore, asi kushanda kunovhura mikana yakanaka kwatiri, kuwedzera kune yangu yapfuura
Muchinyorwa chinotevera, kana zvichidikanwa, ndichataura nezve YAML mapaipi; pakave neakawanda anonakidza magadzirirwo ipapo nguva pfupi yadarika.
Source: www.habr.com