Octopus 脚本设置用于 ARM 模板部署的变量

Octopus Script to set Variable for use in ARM template Deployment

我有一个简单的要求,我可以在 Azure DevOps 和其他发布管理系统中实现,但似乎在 Octopus Deploy 中被积极阻止。

我想 运行 使用参数替换的 ARM 模板部署步骤。对于在创建之前保存到项目中的变量,这是开箱即用的支持,但我想确定变量的值作为脚本的结果,然后将该变量用作替代项之一。

在 ADO 中,我可以执行以下操作将变量值保存到发布范围中

Write-Host "##vso[task.setvariable variable=Colour]Green"

在 Octopus 中我有 SetVariable - 但奇怪的是它只有当前步骤的范围,这没什么用。

我可以用

 [Environment]::SetEnvironmentVariable("colour","green","machine")

但这不会被ARMS替换机制读取

如何设置要在后续步骤中使用的变量?

您可以在 Octopus Deploy 中使用 Output Variables 执行此操作。

一步中设置的输出变量将在后续步骤中可用。

在名为“StepA”的步骤中:

Set-OctopusVariable -name "TestResult" -value "Passed"

在接下来的步骤中:

$TestResult  = $OctopusParameters["Octopus.Action[StepA].Output.TestResult"]

我通常建议将输出变量语法包装在项目变量中,以便于管理。

对于上面的示例,我将创建一个名为 Project.TestResult 的项目变量,并为其赋值 #{Octopus.Action[StepA].Output.TestResult}

这样,您可以使用更简单的变量名来引用输出变量。这不是必需的,但可以帮助简化事情。