Mampiasa variables amin'ny fantsona Azure DevOps

Manohy ny famerenantsika fitaovana mahafinaritra ho an'ny fampandrosoana ho an'ny Windows sy ny maro hafa, Azure DevOps. Tamin'ity indray mitoraka ity, rehefa nijaly mafy tamin'ny fiovan'ny tontolo iainana aho dia nanapa-kevitra ny hametraka ny traikefa rehetra ao anaty lahatsoratra iray.

Manomboka amin'ny hoe manana syntax samihafa ho an'ny tontolo famonoana tsirairay izy ireo, miafara amin'ny tsy fahampian'ny fahaizana manara-penitra amin'ny famindrana ny fari-pitsipika avy amin'ny dingana iray amin'ny fantsona mankany amin'ny iray hafa.

Hanao famandrihana aho fa ny ohatra lehibe dia ho ao amin'ny Release Pipelines, satria mbola tsy tonga any ny YAML, ary mila ny fampandehanana ny dingana maro sy ny artifacts maro aho. Toa lasa hita ao amin'ny Pipelines mahazatra izany, izay mitovy amin'izy ireo amin'ny asany. Ao amin'ny Pipelines YAML, dia nanampy kisarisary kely ho an'ny fanehoana lahatsoratra miaraka amin'ny masontsivana azo apetraka. Tena mety izany; tsy mila mandalo ny antontan-taratasy ho an'ny module tsirairay ianao. Fa holazaiko ao amin'ny lahatsoratra manaraka izany, fa amin'izao fotoana izao dia izao ny sarin'ny fanavaozana.

Mampiasa variables amin'ny fantsona Azure DevOps

Fitehirizana sy fampiasana

Andeha isika hanomboka amin'ny zava-misy fa manana fari-pahaizan'ny default ao amin'ny rafitra isika. Manomboka izy ireo, miankina amin'ny fiaviany, miaraka amin'ny teny hoe Famotsorana, Rafitra, sns. Ny lisitra feno (araka ny hita fa tsy), dia hita ao amin'ny tahirin-kevitra. Ny schizophrenia rehetra misy syntax dia aseho amin'ny ohatra iray avy amin'ny antontan-taratasy etsy ambany. Ny fari-piainana mitovy dia manana fanehoana telo, arakaraka ny toerana iantsoantsika azy.

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)

Raha mametraka fari-pitsipika eo amin'ny mpandraharaha izay anaovana ny asa ianao dia $(System.AccessToken). Raha te hampiasa azy ao anaty script powershell amin'ny mpandraharaha iray ianao dia efa $env:SYSTEM_ACCESSTOKEN. Raha sanatria ianao, te-hampiasa an'io variable io amin'ny mpampiantrano lavitra sasany amin'ny fampiasana ny PowerShell amin'ny asa milina kendrena, dia mila mampita izany amin'ny alàlan'ny adihevitra amin'ny script ianao. ny volako. Miaraka amin'ny bash dia tsotra kokoa izany, azonao atao ny mampita izany ao anatiny amin'ny fampiasana ny tohan-kevitra sy ny syntax $SYSTEM_ACCESSTOKEN.

Ireo lalàna ireo dia tsy mihatra amin'ny faribolanao manokana; eto ianao dia efa tompon'andraikitra amin'ny syntax. Azo apetraka eo an-toerana ny fiovaovana isaky ny asa.

Mampiasa variables amin'ny fantsona Azure DevOps

Na maneran-tany mankany amin'ny fivarotana miovaova, ary ampifandraiso amin'ny fivarotana izy ireo avy eo. Tena mahazo aina.

Mampiasa variables amin'ny fantsona Azure DevOps

Amin'ny maha-bonus azy, raha tena miafina ireo variables dia azo tehirizina ao amin'ny rahona Azure ao anaty fitahirizana antsoina hoe Azure Vault; azonao atao ny mampifandray an'i Vault amin'ny tetikasa ao amin'ny Tranomboky.

Mampiasa variables amin'ny fantsona Azure DevOps

Amin'ny ankapobeny, mazava ny zava-drehetra miaraka amin'ny variables; amin'ny pipelines dia mbola azo apetraka amin'ny tanana izy ireo isaky ny fandefasana; amin'ny famoahana dia tsy misy fiasa toy izany. Azonao atao ny mahita ny zavatra afindranao amin'ny fantsona indray ao amin'ny diarin'ny fanombohana mpandraharaha, saingy tadidio fa efa ao amin'ny endrika niova fo izy ireo.

Mampiasa variables amin'ny fantsona Azure DevOps

Dynamic Variables

Manomboka ny fahafinaretana rehefa te-hahazo sanda amin'ny dingana iray isika ary hampita izany amin'ny manaraka.

Mampiasa variables amin'ny fantsona Azure DevOps

Tsy nomena asa toy izany izahay. Saingy tsy natao ho leo ny tananay ary nahitana vahaolana tamin'ny fanampian'ny Google. Misaotra an'Andriamanitra, manana API ny Azure DevOps izay ahafahantsika manao zavatra mihoatra noho izay naseho tao amin'ny interface.

Noho izany, mila antso isika hanavao ny fari-piainana manerantany, izay hataontsika mivantana avy ao anaty fantsona. Ny adiresy dia nalaina avy amin'ny fari-piainan'ny tontolo iainana, ireo izay tsy misy teny momba ny antontan-taratasy, araka ny voalaza teo aloha. Azonao atao ny mametraka azy ireo na, ankoatra izany, hardcode azy ireo raha manidy ny fivarotana izy ireo.

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

Nametraka ny sanda tsy misy na inona na inona amin'ny fari-piainana tiantsika hamindra isika, mametraka Scope - Release

Mampiasa variables amin'ny fantsona Azure DevOps

Ohatra, manamboatra sanda tsy misy dikany izahay. Tandremo ny syntax amin'ny fanambarana miovaova ao anatin'ity dingana ity; nampidirina ity fampiasa ity.

Mampiasa variables amin'ny fantsona Azure DevOps

Amin'ny dingana manaraka dia ampitaina amin'ny script ny fari-piadidiana, eny, eny, tsy azo atao mivantana izany, tsy maintsy amin'ny alàlan'ny adihevitra.

Mampiasa variables amin'ny fantsona Azure DevOps

Script eo ambanin'ny 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

na

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

Raha fintinina, ny scripty dia maka ny variable myVar ho fampidirana ary mampiasa ny API hametrahana ny sandan'ity fari-piainana ity ao amin'ny stageVar. Amin'ny dingana manaraka, amin'ny fampiasana syntax variable system, dia azontsika jerena izany.

Mampiasa variables amin'ny fantsona Azure DevOps

Tsotra ny ohatra, fa ny fiasa dia manokatra fahafahana tsara ho antsika, ankoatra ny teo aloha lahatsoratra, rehefa afaka mamorona milina virtoaly isika amin'ny dingana voalohany amin'ny fitsapana, dia manaova fanodinkodinana fanampiny miaraka aminy, ary maromaro mifanitsy. Ary ny dingana farany dia ny handrava azy. Amin'izao fotoana izao dia manao autotest ny vokatra izahay isaky ny amin'ny milina virtoaly vaovao. Raha heverina fa miaina 10 minitra eo ho eo izy ireo dia ariary iray no vidin’izany.

Amin'ny lahatsoratra manaraka, raha ilaina dia hiresaka momba ny fantsona YAML aho; be dia be ny fanavaozana mahaliana tao tato ho ato.

Source: www.habr.com

Add a comment