我创建了一个 PowerShell 作业,并使用以下代码使用 Powershell 在 azure 管道中设置环境变量。
[Environment]::SetEnvironmentVariable("key", "value")
$env:key我可以在同一个作业本身中使用 打印值。
但是当我尝试$env:key在下一个作业中使用显示值时,没有打印任何内容。如何通过 azure 管道使用上述环境变量。有没有其他方法来设置和读取自定义环境变量。
我创建了一个 PowerShell 作业,并使用以下代码使用 Powershell 在 azure 管道中设置环境变量。
[Environment]::SetEnvironmentVariable("key", "value")
$env:key我可以在同一个作业本身中使用 打印值。
但是当我尝试$env:key在下一个作业中使用显示值时,没有打印任何内容。如何通过 azure 管道使用上述环境变量。有没有其他方法来设置和读取自定义环境变量。
您几乎必须使用库变量组(或集合,不记得名称),或者您必须使用特定方式在作业之间共享变量:
据此,using outputs in a different job经典 UI 格式不支持。
作为这种情况下的解决方法,您可以通过管道变量(在同一管道中的作业之间共享变量)或变量组(在使用相同变量组的管道之间共享变量,它也适用于作业)共享变量。
由于您只想在同一管道中的作业之间共享变量,pipeline variable因此对您来说就足够了。
1.您可以在管道变量中设置一个key变量:
2.在您的第一份工作中添加一个包含以下内容的 Powershell内联任务:
$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变量的值更新成功:
因此,您可以在第一个作业中运行 ps 脚本来更新key变量的值,然后所有下一个作业都可以轻松访问更新后的变量。
笔记:
$pipeline.variables.key.value = "value"(必要)和Write-host "The value of Varialbe key is updated to" $updatedef.variables.key.value(可选)。如果我想将名为MyTestvalue的变量设置为MyValue,行应该是$pipeline.variables.MyTest.value = "MyValue"and Write-host "The value of Varialbe MyTest is updated to" $updatedef.variables.MyTest.value。
OAuth Token,我们应该Allow Scripts to Access OAuth Token。单击代理作业名称并选中该框:Edit build pipeline 允许xxx(ProjectName) build service。希望以上所有帮助:)