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.
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
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.
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.
Na maneran-tany mankany amin'ny fivarotana miovaova, ary ampifandraiso amin'ny fivarotana izy ireo avy eo. Tena mahazo aina.
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.
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.
Dynamic Variables
Manomboka ny fahafinaretana rehefa te-hahazo sanda amin'ny dingana iray isika ary hampita izany amin'ny manaraka.
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
Ohatra, manamboatra sanda tsy misy dikany izahay. Tandremo ny syntax amin'ny fanambarana miovaova ao anatin'ity dingana ity; nampidirina ity fampiasa ity.
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.
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.
Tsotra ny ohatra, fa ny fiasa dia manokatra fahafahana tsara ho antsika, ankoatra ny teo aloha
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