我目前正在重写自定义TFS构建任务,因此它基于Node.js而不是PowerShell。但是我遇到了以下问题:
在现有的任务中,用户可以决定是否希望将任务结果写入环境变量。如果他想添加一些与任务结果无关的脚本,这很有用。在PowerShell中,我通过设置"用户级环境变量"来实现这一目标。像这样:
[Environment]::SetEnvironmentVariable($variableName, "The Value to Set", "User")
并且可以在任务完成后读出,例如在PowerShell中,如下所示:
$variable = [Environment]::GetEnvironmentVariable($variableName,"User")
但是我没有找到任何方法来实现与Node.js中的任务相同的事情。如果您通过process.env["variable"]
进行设置,则无法执行以下任何任务。
经过一番搜索,我偶然发现了VSTS TaskLib提供的setTaskVariable方法: https://github.com/Microsoft/vsts-task-lib/blob/master/node/docs/vsts-task-lib.md#tasksetTaskVariable
但是现在我不知道如何在后续任务中访问此变量。我看到你可以使用getTaskVariable,如果你使用基于tasklib的自定义任务(在PowerShell或Node中),但我不希望每个想要使用变量的人都需要编写一个完整的任务,如果一个简单的(PowerShell)脚本可以。
所以有一个" easy"在接下来的脚本中获取此TaskVariable的方法,或仅用于"完全fletched"任务?当我将一些信息简单地传递给跟随我的任务的脚本时,我还有什么其他选择?
答案 0 :(得分:1)
简单的方法是使用Task Logging commands:##vso[task.setvariable]value
(例如Console.log(‘##vso[task.setvariable variable=testvar;]testvalue’
),然后您可以将其用作在构建/发布定义中定义的常规变量。 (例如任务的参数:$(testvar)
)
另一方面,task.setVariable方法可以做同样的事情。 (task.setTaskVariable用于当前任务的后续步骤)