【问题标题】:Get Octopus Deployment Folder at beginning of release process在发布过程开始时获取 Octopus 部署文件夹
【发布时间】:2016-06-20 18:02:18
【问题描述】:

我正在使用带有 powershell 脚本的 Octopus 自定义模板按年龄或计数删除旧部署。但是,它依赖于在实际部署步骤之后运行,以便它可以访问该步骤的输出变量。例如,

DeploymentFolder:
#{Octopus.Action[Deployment Step Name].Output.Package.InstallationDirectoryPath}

例如,当您没有用完磁盘空间时,这非常有用。但是,当磁盘空间不足时(因为您之前没有运行此步骤)并且由于磁盘空间不足,Octopus 无法部署新版本,因此您无法运行删除旧文件步骤。 (我知道可以将 Octopus 参数更改为磁盘空间太小,但我不想这样做。)如果您想输入硬编码路径(假设您遇到临时问题),这还有一个问题使用您的脚本,只需要删除一堆旧部署,但目前没有从服务器手动删除它们所需的权限),很容易不小心离开最终版本号的文件夹并拥有底层脚本会混淆。

有什么方法可以获取当前环境的部署文件夹,并将其与我的 NuGet 包名称(以及部署文件夹名称中的任何其他部分)结合起来,这样我就可以计算出预期的部署文件夹提前?

实际使用的部署文件夹是E:\Octopus\Applications\LifeCycle\NugetPackageName

我想我可以通过$OctopusParameters['Octopus.Action[Deployment Step Name].Package.NuGetPackageId'] 获得NugetPackageName(虽然我不确定,因为Octopus.Action.Package.NuGetPackageId is listed as an "Action-Level Variable",因此在运行步骤之前可能无法使用。我愿意如果需要,硬编码 NuGet 包名称。

关于LifeCycle 部分,我不知道这是否真的是LifeCycle 名称。它匹配可能是一个巧合。我不知道。对于我的生活,我无法弄清楚这是从哪里来的。

我也不知道E:\Octopus\Applications\ 来自哪里,所以我可以自动获取这个值,而不是硬编码它。

【问题讨论】:

  • 您为什么不直接使用 Lifecycles 提供的内置保留功能来帮助清理旧部署?
  • 我们希望每个项目有不同的规则和不同类型的清理——按计数或天数或其他标准

标签: octopus-deploy


【解决方案1】:

此变量将在部署开始时可用:

$OctopusParameters['Octopus.Action[Deployment Step Name].Package.NuGetPackageId']

您可以从名为TentacleApplications 的环境变量中获取E:\Octopus\Applications\

$myRootDir = $env:TentacleApplications

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    相关资源
    最近更新 更多