【发布时间】: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