【问题标题】:Octopus Deploy - variable replacement for deployment target machine nameOctopus Deploy - 部署目标机器名称的变量替换
【发布时间】:2018-03-26 21:14:26
【问题描述】:

问题:

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

我想传入目标服务器的名称,这样该人就不需要查找目标服务器名称。

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

**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 提供:

#{Octopus.Deployment.Machines} 导致:Machines-6

#{Octopus.Deployment.SpecificMachines} 结果:(空字符串)


我期望看到的:

3. Unzip to the desktop on: FTPServer05

补充说明: 我意识到我可以在我的变量列表中为每个目标环境/范围设置目标服务器的名称,结果只有 4 个变量(没什么大不了的,而且易于维护),但我很好奇是否有办法简化它。我们正在运行 Octopus Deploy 3.12.9。

【问题讨论】:

    标签: octopus-deploy


    【解决方案1】:

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

    Output variables。 . . “在一个步骤运行后,Octopus 会捕获输出变量,并保留它们以供后续步骤使用。”


    我做了什么来解决我的问题:

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

    自定义步骤设置:

    Powershell:

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

    参数:

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

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

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


    解释为什么我的问题有问题:

    原来用于我的问题的variable binding syntax 是:

    Octopus.Machine.Name = 用于注册的名称 章鱼机器。与主机名不同

    但是,手动干预步骤具体没有“部署目标”:

    它只是在“八达通服务器”上运行:

    所以我很确定这就是为什么我没有获得“目标”的价值。例如,我简单地测试了另一个使用“部署目标”单选按钮的新基本步骤,这导致了我所期望的 FTPServer05 值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2014-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多