代码之家  ›  专栏  ›  技术社区  ›  Brien Foss

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

  •  3
  • Brien Foss  · 技术社区  · 8 年前

    问题:

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

    我想输入目标服务器的名称,这样用户就不需要查找目标服务器的名称。

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

    **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 回复  |  直到 8 年前
        1
  •  3
  •   Brien Foss    8 年前

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

    Output variables 步骤运行后,Octopus将捕获输出变量,并保留这些变量以供后续步骤使用


    我如何解决我的问题:

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

    自定义步骤设置:

    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

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

    enter image description here

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