如何在Node.js TFS构建任务中的任务之间共享信息?

时间:2017-08-09 18:24:09

标签: node.js tfs azure-pipelines-build-task

我目前正在重写自定义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"任务?当我将一些信息简单地传递给跟随我的任务的脚本时,我还有什么其他选择?

1 个答案:

答案 0 :(得分:1)

简单的方法是使用Task Logging commands##vso[task.setvariable]value(例如Console.log(‘##vso[task.setvariable variable=testvar;]testvalue’),然后您可以将其用作在构建/发布定义中定义的常规变量。 (例如任务的参数:$(testvar)

另一方面,task.setVariable方法可以做同样的事情。 (task.setTaskVariable用于当前任务的后续步骤)