【问题标题】:Azure Devops Pipeline: Define variable and use it as task input on another stepAzure Devops Pipeline:定义变量并将其用作另一步骤的任务输入
【发布时间】:2019-12-19 11:40:19
【问题描述】:

我有 Azure DevOps 发布管道作业,其中包含 4 个任务。

我想在第一个任务中设置环境变量,并将该值用作第二个任务的参数输入:显示名称。

我们可以假设所有 4 个步骤都是 PowerShell 脚本。

任务 1 Powershell:

Write-Host "##vso[task.setvariable variable=myvariable;]abcdefg"

任务 2 Powershell:

任务 2 中的 PowerShell:

Write-Host "$(myvariable)"

如何在任务 1 中设置变量并将其作为输入变量访问任务 2?

我的输出是:

Task2 - $(myvariable) 作为显示名称

但 PowerShell 脚本本身的输出是:

abcdefg

【问题讨论】:

  • "如何在任务 1 中设置一个变量并将其作为任务 2 的输入变量访问?"如果我看到这个错误,请纠正我,但您的设置已经回答了这个问题。我不确定你在这里问什么
  • @D.J.任务 2 的显示名称应该是“Task2 - abcdefg”,但实际上是“Task2 - $(myvariable)”。
  • 可能任务名称不支持动态插值

标签: azure-devops azure-pipelines azure-pipelines-release-pipeline


【解决方案1】:

Write-Host "##vso[task.setvariable variable=myvariable;]abcdefg"

这是因为此脚本创建的变量不是预定义变量。

作为执行逻辑,在你对管道进行排队之后,你可以看到管道名称,任务名称首先显示,即使脚本没有被执行。因此,如果这些名称使用变量来定义它们,则该变量可以从预定义的变量中获取值。因为管道/任务名称中变量值的编译总是先于脚本执行。

另外,task中的脚本只是创建了一个脚本变量,而这个脚本变量只存在于Phase的生命周期内,执行后销毁。 p>

如何在任务 1 中设置变量并将其作为输入访问 task2 的变量?

如你所愿,如果在另一个脚本中得到它,只需使用$(xxx)$env:xxx。但是,对于名称,$() 只能获取预定义的变量值,而不是脚本变量值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    相关资源
    最近更新 更多