2017-08-09 63 views
0

我正在重写一个自定义的TFS构建任务,因此它基于Node.js而不是PowerShell。不过,我遇到了以下问题:
在现有任务中,用户可以决定是否将任务结果写入环境变量。如果他想添加一些脚本来处理任务的结果,这很有用。在PowerShell中我实现了通过设置“用户级的环境变量”是这样的:如何在Node.js TFS构建任务中的任务之间共享信息?

[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的自定义Task(无论是在PowerShell还是Node中),你都可以使用getTaskVariable,但是我不希望每个想要使用该变量的人都需要写一个完整的任务,如果一个简单的(PowerShell )脚本会做。

那么是否有一种“简单”的方式来获得这个TaskVariable for在后面的脚本,或者它只是为“完全fletched”的任务?当我简单地将一些信息传递给可以遵循我的任务的脚本时,我还有什么其他选择?

回答

1

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

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

+0

谢谢,它的工作完美(我错过了setVariable,只是看着setTaskVariable ...)。 使用setVariable我可以通过$(testVar)在TaskConfiguration中或通过$ env:testVar :-)直接在PowerShell脚本中访问它 – huserben

相关问题