Согласно этот , using outputs in a different job
не поддерживается в Classi c UI Format.
В качестве обходного пути в этом сценарии вы можете совместно использовать переменные с помощью Переменные конвейера (совместно использовать переменные по заданиям в одном конвейере) или Группы переменных (совместно использовать переменные по конвейерам, которые используют та же группа переменных, она также работает для разных заданий).
Поскольку вы хотите обмениваться переменными только между заданиями в одном конвейере, вам достаточно pipeline variable
.
1.Вы можете установить key
переменная в конвейерных переменных:
![enter image description here](https://i.stack.imgur.com/rFJJz.png)
2.Добавить одну задачу Powershell Inline с содержанием ниже в вашей первой работе:
$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build/definitions/$($env:SYSTEM_DEFINITIONID)?api-version=5.0"
Write-Host "URL: $url"
$pipeline = Invoke-RestMethod -Uri $url -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 100)"
# Update an existing variable to its new value
$pipeline.variables.key.value = "value"
####****************** update the modified object **************************
$json = @($pipeline) | ConvertTo-Json -Depth 99
$updatedef = Invoke-RestMethod -Uri $url -Method Put -Body $json -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}
write-host "=========================================================="
Write-host "The value of Varialbe key is updated to" $updatedef.variables.key.value
write-host "=========================================================="
3. Запустите конвейер, в котором можно найти значение key
переменная успешно обновлена:
![enter image description here](https://i.stack.imgur.com/EC6MT.png)
Итак Вы можете запустить скрипт ps в первом задании, чтобы обновить значение переменной key
, затем все последующие задания могут легко получить доступ к обновленной переменной.
Примечание:
- Для самого скрипта вам нужно всего лишь изменить строки
$pipeline.variables.key.value = "value"
(обязательно) и Write-host "The value of Varialbe key is updated to" $updatedef.variables.key.value
(необязательно) ).
Если я хочу установить для переменной с именем MyTest
значение MyValue
, строки должны быть $pipeline.variables.MyTest.value = "MyValue"
и Write-host "The value of Varialbe MyTest is updated to" $updatedef.variables.MyTest.value
.
Чтобы убедиться, что задача ps в одном задании может получить доступ к
OAuth Token
, нам нужно
Allow Scripts to Access OAuth Token
. Щелкните по названию задания агента и установите флажок:
![enter image description here](https://i.stack.imgur.com/1p9zq.png)
Чтобы включить конвейер, у которого есть разрешение на обновление переменной конвейера (редактировать конвейер сборки), go Безопасность конвейера для установки
Edit build pipeline
, разрешающего для пользователя
xxx(ProjectName) build service
.
![enter image description here](https://i.stack.imgur.com/ENIhC.png)
Надеюсь, все вышеперечисленное поможет:)