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}
这样,您可以使用更简单的变量名来引用输出变量。这不是必需的,但可以帮助简化事情。
我有一个简单的要求,我可以在 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}
这样,您可以使用更简单的变量名来引用输出变量。这不是必需的,但可以帮助简化事情。