Вы можете перезаписать / обновить значение переменных, используя команду ведения журнала , чтобы снова установить переменные в Azure Devops Build::
Write-Host "##vso[task.setvariable variable=testvar;]testvalue"
Чтобы динамически увеличить значение,вам нужно использовать токен $(Rev:.r)
.Вы можете настроить переменные на основе $(Build.BuildNumber)
или $(Release.ReleaseName)
, так как они будут динамически увеличивать значение ...
Просто обратитесь к этой теме, чтобы настроить переменные: https://github.com/MicrosoftDocs/vsts-docs/issues/666#issuecomment-386769445
ОБНОВЛЕНИЕ:
Если вы просто хотите обновить значение переменных, определенных в конкретной группе переменных, то вы можете вызвать REST API в конвейере сборки для достижения этого:
PUT https://{account}.visualstudio.com/{ProjectName or ID}/_apis/distributedtask/variablegroups/{Variable Group ID}?api-version=5.0-preview.1
Content-Type: application/json
Request Body:
{"id":2,"type":"Vsts","name":"VG0926","variables":{"TEST0926":{"isSecret":false,"value":"0930"}}}
ОБНОВЛЕНИЕ2:
Вы можете написать сценарий PowerShell для вызова API RESTзатем добавьте задачу PowerShell для запуска сценария в конвейере сборки: ( Используйте токен OAuth для доступа к REST API )
Ниже пример для справки:
$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/distributedtask/variablegroups/{Variable Group ID}?api-version=5.0-preview.1"
Write-Host $url
function CreateJsonBody
{
$value = @"
{"id":2,"type":"Vsts","name":"VG0926","variables":{"TEST0926":{"isSecret":false,"value":"0930"}}}
"@
return $value
}
$json = CreateJsonBody
$pipeline = Invoke-RestMethod -Uri $url -Method Put -Body $json -ContentType "application/json" -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
Write-Host "New Variable Value:" $pipeline.variables.TEST0926.value
ОБНОВЛЕНИЕ3:
Что ж, еще раз проверил, ниже сценарии также работают для меня.Вы можете попробовать, просто замените параметры соответственно:
# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "","PAT here")))
$url = "https://dev.azure.com/xxx/Test0924/_apis/distributedtask/variablegroups/1?api-version=5.0-preview.1"
$json = '{"id":1,"type":"Vsts","name":"VG0928","variables":{"TEST0928":{"isSecret":false,"value":"0931"}}}'
$pipeline = Invoke-RestMethod -Uri $url -Method Put -Body $json -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
Write-Host "New Variable Value:" $pipeline.variables.TEST0928.value