Octopus Deploy - 部署目标计算机名称的可变替换

时间:2018-03-26 21:14:26

标签: octopus-deploy

问题:

我有一个手动干预步骤,其中包含执行部署的人员的文本步骤。

我想传入目标服务器的名称,以便该人员不需要查找被定位的服务器名称。

例如,如下所示,我需要将它们解压缩到目标服务器上的某个位置。

**SECTION 1: (Main installation)**
1. Navigate to: #{InstallationZipLocation}.
2. Download zip file named: #{ZipFileName}
3. Unzip to the desktop on: #{DeploymentTargetMachineName}  --need help here
4. Run executable named: #{ExecutableName}
5. Accept default settings

我尝试了什么:

Octopus Deploy - System Variables Documentation提供:

enter image description here

#{Octopus.Deployment.Machines}会产生:Machines-6

#{Octopus.Deployment.SpecificMachines}会导致:(空字符串)

我期待看到的内容:

3. Unzip to the desktop on: FTPServer05

其他评论: 我意识到我可以在每个目标环境/范围的变量列表中设置目标服务器的名称,只产生4个变量(不是很大,易于维护),但我很好奇是否有办法简化它。我们正在运行Octopus Deploy 3.12.9。

1 个答案:

答案 0 :(得分:1)

所以我一直在寻找一种更简单的方法,但偶然发现了一些我认为非常有趣的东西,所以我继续实施它。

Output variables。 。 。 "在一个步骤运行后,八达通捕获输出变量,并将它们保留在后续步骤中使用。"

我采取了哪些措施来解决我的问题:

我设置了一个自定义步骤模板,其唯一目的是设置"输出变量" 以在后续步骤中使用。您可以将此作为项目的第一步,或者至少在引用您正在设置的变量的步骤之前。

自定义步骤设置:

Powershell的:

Write-Host "TargetDeploymentMachineName        $TargetDeploymentMachineName"
Set-OctopusVariable -name "TargetDeploymentMachineName" -value $TargetDeploymentMachineName

参数: enter image description here

然后在我的手动干预步骤中,我使用输出值如下:

3. Unzip to the desktop on: #{Octopus.Action[MyProject-Set-Output-Variables].Output.TargetDeploymentMachineName}

(其中[MyProject-Set-Output-Variables]表示我的部署项目中负责分配输出变量的步骤的名称)

解释我在问题中遇到问题的原因:

原来我的问题所使用的variable binding syntax应该是:

  

Octopus.Machine.Name =用于注册的名称   八达通机器。与主机名

不同

但是,手动干预步骤明确没有"部署目标":

enter image description here

它只是运行在" Octopus Server":

enter image description here

所以我很确定这就是为什么我没有得到"目标"的价值。例如,我只是测试了另一个使用"部署目标"单选按钮,导致我期待的FTPServer05值。