ืื ื ืืืฉืืืื ืืกืงืืจื ืฉื ืืื ื ืคืื ืืคืืชืื ืขืืืจ Windows ืืขืื, Azure DevOps. ืืคืขื, ืืืืจ ืฉืกืืืชื ืืจืื ืขื ืืฉืชื ื ืกืืืื, ืืืืืชื ืืืื ืืก ืืช ืื ืื ืืกืืื ืืืืืจ ืืื.
ืืื ืืืขืืืื ืฉืืฉ ืืื ืชืืืืจ ืฉืื ื ืืื ืกืืืืช ืืืฆืืข, ืืืื ืืืืขืืจ ืืืืืช ืกืื ืืจืืืช ืืืขืืืจ ืืฉืชื ืื ืืฉืื ืืื ืฉื ืืฆืื ืืจ ืืืฉื ืื.
ืื ื ืืขืฉื ืืกืชืืืืืช ืฉืืืืืืืืช ืืขืืงืจืืืช ืืืื ื- Release Pipelines, ืื YAML ืขืืืื ืื ืืืืขื ืืฉื, ืืื ื ืฆืจืื ืืช ืืคืื ืงืฆืืื ืืืืช ืฉื ืฉืืืื ืจืืื ืืืคืฆืื ืจืืื. ืื, ืื ื ืจืื, ืืคื ืืืื ื-Pipelines ืจืืืืื, ืืฉืจ ืืืขื ืืฉืชืืื ืืื ืืคืื ืงืฆืืื ืืืืช. ื-Pipelines YAML, ืืืกืคื ื ืืกืืจ ืืืื ืืจืคื ืงืื ืืืืฆืื ืืืงืกื ืขื ืคืจืืืจืื ืฉื ืืชื ืืืืืืจ. ืื ืืืื ื ืื; ืืชื ืื ืฆืจืื ืืขืืืจ ืขื ืืชืืขืื ืขืืืจ ืื ืืืืื. ืืื ืืชืืจ ืืืช ืืืืืจ ืืื, ืืื ืืขืช ืขืชื ืื ื ืชืืื ื ืฉื ืืืืืืฉ ืขืฆืื.
ืืืกืื ืืฉืืืืฉ
ื ืชืืื ืืื ืฉืืฉ ืื ื ืืฉืชื ื ืืจืืจืช ืืืื ืืืขืจืืช. ืื ืืชืืืืื, ืืืชืื ืืืงืืจื, ืืืืืื Release, System ืืื'. ืืจืฉืืื ืืืืื (ืืคื ืฉืืกืชืืจ, ืื), ืืืื ื ืืืชืืืช
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). ืื ืืชื ืจืืฆื ืืืฉืชืืฉ ืื ืืชืื ืกืงืจืืคื powershell ืขื ืืืชื ืกืืื, ืื ืืืจ ืืืื $env:SYSTEM_ACCESSTOKEN. ืื ืืชื, ืืืืื, ืจืืฆื ืืืฉืชืืฉ ืืืฉืชื ื ืื ืขื ืืืจื ืืจืืืง ืืืฉืื ืืืืฆืขืืช ืืฉืืืช PowerShell ืืืืื ืืช ืืืขื, ืขืืื ืืืขืืืจ ืืืช ืืจื ืืจืืืื ื ืืกืงืจืืคื ืืืืฆืขืืช
ืืืชื ืืืงืื ืืื ื ืืืื ืขื ืืืฉืชื ืื ืฉืื; ืืื ืืชื ืืืจ ืืืจืื ืขื ืืชืืืืจ. ื ืืชื ืืืืืืจ ืืฉืชื ืื ืืืืคื ืืงืืื ืืื ืืฉืืื.
ืื ืืืืคื ืืืืืื ืืื ืืช ืืืฉืชื ื, ืืืืืจ ืืื ืงืฉืจ ืืืชื ืืืื ืืช. ืื ืืืืช ืจืื.
ืืืื ืืก, ืื ืืืฉืชื ืื ืกืืืืื ืืืื, ื ืืชื ืืืืกื ืืืชื ืืขื ื Azure ืืืืกืื ืฉื ืงืจื Azure Vault; ื ืืชื ืืงืฉืจ ืืช Vault ืืคืจืืืงื ืืกืคืจืืื.
ืืืืคื ืืืื, ืืื ืืจืืจ ืขื ืืฉืชื ืื; ืืฆืื ืืจืืช ืขืืืื ื ืืชื ืืืืืืจ ืืืชื ืืืืคื ืืื ื ืขืืืจ ืื ืืฉืงื; ืืฉืืจืืจ ืืื ืคืื ืงืฆืืื ืืืืช ืืื. ืืชื ืืืื ืืจืืืช ืื ืืชื ืืขืืืจ ืืฆืื ืืจ ืฉืื ืืืืื ื ืืืชืืื ืฉื ืืกืืื, ืืื ืืืืจ ืฉืื ืืืจ ื ืืฆืืื ืฉื ืืฆืืจื ืืืืจืช.
ืืฉืชื ืื ืืื ืืืื
ืืืืฃ ืืชืืื ืืฉืื ืื ื ืจืืฆืื ืืงืื ืขืจื ืืืฉืื ืืฉืื ืืื ืืืืขืืืจ ืืืชื ืืฉืื ืืื.
ืื ืกืืคืงื ืื ื ืคืื ืงืฆืืื ืืืืช ืืื. ืืื ืืืืืื ืฉืื ื ืื ืืฉืขืืื ืืืขืืจืช ืืืื ื ืืฆื ืคืชืจืื. ืชืืื ืืื, ื-Azure DevOps ืืฉ API ืฉืืืคืฉืจ ืื ื ืืขืฉืืช ืงืฆืช ืืืชืจ ืืื ืฉืชืืืจ ืืืืฉืง.
ืืื, ื ืฆืืจื ืงืจืืื ืืขืืืื ืืฉืชื ืื ืืืืืืืื, ืืืชื ื ืขืฉื ืืฉืืจืืช ืืชืื ืืฆืื ืืจ. ืืืชืืืช ืืงืืื ืืืฉืชื ื ืกืืืื, ืืืชื ืืื ืฉืืื ืขืืืื ืืืื ืืชืืขืื, ืืคื ืฉืืืืืจ ืงืืื ืืื. ืืชื ืืืื ืืืืืืจ ืืืชื ืืขืฆืื ืื, ืื ืขืื, ืืืงืคืื ืขืืืื ืื ืื ืกืืืจืื ืืช ืืื ืืช.
$releaseurl = ('{0}{1}/_apis/release/releases/{2}?api-version=5.0' -f $($env:SYSTEM_TEAMFOUNDATIONSERVERURI), $($env:SYSTEM_TEAMPROJECTID), $($env:RELEASE_RELEASEID) )
ืื ืื ื ืืืืืจืื ืืช ืืขืจื ืืจืืง ืฉื ืืืฉืชื ื ืฉืืจืฆืื ื ื ืืืขืืืจ, ืืืืืจืื Scope - Release
ืืืืืื, ืื ื ืืืืฆืจืื ืืืื ืืืืื ืขืจืืื ืืงืจืื. ืฉืืื ืื ืืชืืืืจ ืฉื ืืืจืื ืขื ืืฉืชื ื ืืฉืื ืื; ืคืื ืงืฆืืื ืืืืช ืื ืืืฆืื.
ืืฉืื ืืื, ื ืขืืืจ ืืช ืืืฉืชื ื ืืกืงืจืืคื, ืื, ืื, ืื ืื ืืคืฉืจื ืืฉืืจืืช, ืื ืืืื ืืืืืช ืืจื ืืจืืืื ื.
ืืชืกืจืื ืชืืช ืกืคืืืืจ
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
ืื
ืึฐืึทืึผืึนืช
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 ืืงืื ืืืฉืชืืฉ ื-API ืืื ืืืื ืืก ืืช ืืขืจื ืฉื ืืืฉืชื ื ืืื ืืชืื stageVar. ืืฉืื ืืื, ืืืืฆืขืืช ืชืืืืจ ืืฉืชื ื ืืขืจืืช, ื ืืื ืืืกืชืื ืขืืื.
ืืืืืื ืื ืคืฉืืื, ืืื ืืคืื ืงืฆืืื ืืืืช ืคืืชืืช ืืคื ืื ื ืืืืื ืืืืช ืืืืืช, ืื ืืกืฃ ืืงืืืืื ืฉืื
ืืืืืจ ืืื, ืืืืืช ืืฆืืจื, ืืืืจ ืขื ืฆืื ืืจืืช YAML; ืืืืจืื ื ืืื ืฉื ืื ืืขื ืืืืืฉืื ืืขื ืืื ืื.
ืืงืืจ: www.habr.com