我们是否需要设置'isOutput=true'以使用变量作为同一作业中任务的任务输入?



我正在阅读这篇文章:https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=脚本中设置的经典%2批次号

Powershell脚本示例如下所示:https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=经典的%2Powershell#从脚本-1 设置作业操作变量

我假设"设置酱汁和秘密。酱汁变量"是一项任务,"读取变量"是另一项任务。并且这些参数作为任务参数传递。

如果是(也就是说,在一个powershell任务中设置的值可以在另一个powershell任务中使用(,那么,为什么要执行下面的部分(请参阅https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=使用变量作为任务输入的经典%2Powershell#(建议:

要将变量用作任务输入,该变量必须是输出变量,并且必须为生产任务提供一个引用名称。

本节(https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Batch#set-a-multi-job-output-variable(说:

如果要使变量可用于未来的作业,则必须标记使用isOutput=true将其作为输出变量。

首先,您对的假设

"设置酱汁和秘密。酱汁变量"是一项任务,"阅读变量"是的另一项任务

是正确的。如果你在同一个任务中读取它,你会收到类似"{output variable name}"可以识别的错误。

如果在同一个作业中使用变量,则在大多数情况下直接使用$()与使用$(<ReferenceName>.<VariableName>)相同,包括在一个代理作业中获取变量,而在另一个任务中未设置同名变量。但是,显然,$()是一种最简单的方法。


  • 1.如果在另一个任务中设置了同名变量

    有时,您可能需要用不同的脚本执行相同的脚本条件,因此其结果可能具有相同的名称但值不同。在里面总之,您需要在不同的任务中使用相同的变量名。然后你需要执行下一个任务根据在不同状态下产生的值。

    此时,使用$(<ReferenceName>.<output VariableName>)是更好的解决方案,以获得设置在哪个状态下的特定变量值。因为read操作只能获得最新的值分配

  • 2.如果您想在不同的代理作业中使用此变量

    在一些大型项目中,下一个代理作业需要使用设置在最后一个代理作业中(注意:这两个作业必须在同一管道中(。重新运行脚本以设置变量将增加时间这也会增加代码的成本验证。

    在这种情况下,$(<ReferenceName>.<output VariableName>)是唯一一种可以实现这种场景。

    但是,到目前为止,这种方法只支持YAML模式。如果你使用经典编辑器来实现这个场景,你只能重写设置变量脚本。

相关内容

  • 没有找到相关文章

最新更新