【问题标题】:How to pass powershell script variable values to downstream task in Release pipeline如何将powershell脚本变量值传递给发布管道中的下游任务
【发布时间】:2018-11-05 12:44:27
【问题描述】:

从“Azure PowerShell 任务”开始,只需几个步骤即可创建一张 CD。

在 Azure PowerShell 任务中,执行 PowerShell 脚本文件并在变量中设置值。 在脚本的最后,我为变量设置了一个值——

echo "##vso[task.setvariable variable=myvariable;isSecret=false;isOutput=true;]myvalue"

myvariable是变量

myvalue 是值。

基于“myvariable”的值;下游任务将被执行或跳过。在下游任务(任务 - Azure 创建或更新资源)中提到“自定义条件”–

and(succeeded(), eq(variables[‘myvariable’], ‘myvalue’))

但是,它总是跳过这一步;尽管正确的值正在传递。这是我的发布任务 sn-p -

我该如何克服?

【问题讨论】:

  • 您能否在 Azure PowerShell 任务之后验证 myvariable 获取 myvalue 的一步? (添加另一个任务并打印 myvariable 值)
  • 创建了一个 powershell 任务并打印了 $(myvariable) 的值。显示错误 - 术语“myvariable”无法识别。试图打印 Write-Host $myvariable,没有打印任何值。
  • 您可以尝试将echo 替换为Write-Host 吗?
  • 之前尝试过,但没有获得价值
  • 我认为使用 powershell 你应该使用$env:myvariable。也试试你的条件:$(myvariable), myvalue。同样,一文不值,您可能正在尝试使用这种方法做一些您不应该做的事情

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


【解决方案1】:

试试

Write-Host "##vso[task.setvariable variable=myvariable;isSecret=false;isOutput=true;]myvalue"

然后

and(succeeded(), eq(variables['myvariable'], 'myvalue'))

在第二部分中,您粘贴的代码的引号类型不正确,您使用了大引号“ ”而不是正常的直引号 ' '

如果从 Word 或 Outlook 复制/粘贴,您通常会得到错误的引号。我敢肯定他们有一个合适的排版术语。

【讨论】:

    【解决方案2】:

    感谢大家的宝贵意见。解决 - PowerShell 脚本 -

    $myvalue="hello"
    Write-Host "##vso[task.setvariable variable=myvariable]$myvalue"
    

    在变量($myvalue)中赋值(“hello”),然后在“Write-Host”中设置。直接价值对我不起作用。 现在我们可以在@Alex KeySmith 提到的自定义条件中的下游任务中使用/验证“myvariable”值。

    and(succeeded(), eq(variables['myvariable'], 'hello'))
    

    任务-

    在构建和发布管道中工作。

    【讨论】:

      猜你喜欢
      • 2022-11-23
      • 2021-09-29
      • 2016-08-28
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 2021-08-14
      • 2020-11-30
      相关资源
      最近更新 更多