【发布时间】:2021-04-28 02:58:17
【问题描述】:
我的管道中有两个任务 - 第一个是powershell-based task from the marketplace。它使用日志命令(例如Write-Host '##vso[task.setvariable variable=test]abc')更新构建变量,该命令在构建运行中持续存在。您可以在 Azure DevOps 中构建的“变量”部分查看它及其值。
第二个任务是powershell 任务,它使用前一个任务中设置的变量的值,并使用它的值执行操作。它使用 powershell 环境语法,例如$env:TEST.
我遇到的问题是,即使第一个任务正确更新了变量,powershell 任务似乎仍然获得 old 值(就像第一个任务运行之前一样)。
我需要做什么才能让我的 powershell 任务正确读取变量的 new 值?
另外,这是我的 powershell 任务的实际代码(我正在尝试使用 AutoVersion 任务设置的版本变量标记最新的 git 提交,正如你可能知道的那样):
- powershell: |
git tag $env:AUTOVERSION
git push origin $env:AUTOVERSION
workingDirectory: $(Build.SourcesDirectory)
displayName: 'Tag Sources'
【问题讨论】:
-
第二个任务你试过
$(test)吗? -
是的,我也试过
[Environment]::GetEnvironmentVariable("test")。显然这里发生了一些可疑的事情...... -
我添加了我为第二个任务运行的实际代码的示例。
-
我添加了一个非常通用的答案来说明环境变量与输出变量的工作方式。
标签: powershell azure-devops-pipelines