Azure管道输出变量task.setvariable没有为变量分配任何值

San*_*aga 7 azure-pipelines

我正在尝试执行 terraform 脚本来创建 ec2 并使用输出变量概念我想获取 ec2 公共 ip 并将其分配给一个变量并将其传递给另一个任务。但我发现使用 bash 或脚本的输出变量在 azure pipeline yml 中不起作用。我正在使用ubuntu代理。

- script: COMMAND=$(cat terraform.tfstate | grep 'public_ip"' | cut -d":" -f2 | cut -d'"' -f2) && echo "##vso[task.setvariable variable=ec2ip;]$COMMAND" && echo $ec2ip
Run Code Online (Sandbox Code Playgroud)

但我认为打印没有任何价值。不确定 task.setvariable 是否有效。需要一些帮助来解决这个问题。

Lev*_*SFT 15

您无法在同一脚本任务中回显新变量的值。由语句设置的新变量task.setvariable仅在后续任务中可用。

您可以将后续脚本任务添加到 echo 变量ec2ip$()然后您可以通过将其包装在(ie. )中来检索它的值$(ec2ip)。请查看文档定义变量以获取更多信息。

- script: COMMAND=$(cat terraform.tfstate | grep 'public_ip"' | cut -d":" -f2 | cut -d'"' -f2) && echo "##vso[task.setvariable variable=ec2ip;]$COMMAND" 


- script: echo "$(ec2ip)"
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的帮助。我创建了新任务并能够获得该值。 (3认同)
  • 非常感谢!文档中哪里指定了此行为? (2认同)