如何在 Node.js TFS 构建任务中的任务之间共享信息?
How to share info between Tasks in Node.js TFS Build Task?
我目前正在重写自定义 TFS 构建任务,因此它基于 Node.js 而不是 PowerShell。但是我 运行 遇到了以下问题:
在现有任务中,用户可以决定是否要将任务结果写入环境变量。如果他想自己添加一些脚本来处理任务的任何结果,这将很有用。在 PowerShell 中,我通过像这样设置 "User-Level Environment Variable" 来实现这一点:
[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
但是现在我不知道如何在后续任务中访问这个变量。我看到如果您使用基于 tasklib 的自定义任务(在 PowerShell 或 Node 中),您可以使用 getTaskVariable,但我不希望每个想要使用该变量的人都需要编写一个完整的任务,如果一个简单的(PowerShell ) 脚本就可以了。
那么,是否有一种 "easy" 方法可以在随后的脚本中获取此 TaskVariable,还是仅用于 "full fletched" 任务?当我将一些信息简单地传递给将执行我的任务的脚本时,我还有哪些其他选择?
最简单的方法是使用Task Logging commands:##vso[task.setvariable]value
(例如Console.log(‘##vso[task.setvariable variable=testvar;]testvalue’
),然后您可以将其用作build/release定义中定义的通用变量。 (例如任务的参数:$(testvar)
)
另一方面,task.setVariable方法可以做同样的事情。 (task.setTaskVariable用于当前任务的后续步骤)
我目前正在重写自定义 TFS 构建任务,因此它基于 Node.js 而不是 PowerShell。但是我 运行 遇到了以下问题:
在现有任务中,用户可以决定是否要将任务结果写入环境变量。如果他想自己添加一些脚本来处理任务的任何结果,这将很有用。在 PowerShell 中,我通过像这样设置 "User-Level Environment Variable" 来实现这一点:
[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
但是现在我不知道如何在后续任务中访问这个变量。我看到如果您使用基于 tasklib 的自定义任务(在 PowerShell 或 Node 中),您可以使用 getTaskVariable,但我不希望每个想要使用该变量的人都需要编写一个完整的任务,如果一个简单的(PowerShell ) 脚本就可以了。
那么,是否有一种 "easy" 方法可以在随后的脚本中获取此 TaskVariable,还是仅用于 "full fletched" 任务?当我将一些信息简单地传递给将执行我的任务的脚本时,我还有哪些其他选择?
最简单的方法是使用Task Logging commands:##vso[task.setvariable]value
(例如Console.log(‘##vso[task.setvariable variable=testvar;]testvalue’
),然后您可以将其用作build/release定义中定义的通用变量。 (例如任务的参数:$(testvar)
)
另一方面,task.setVariable方法可以做同样的事情。 (task.setTaskVariable用于当前任务的后续步骤)