在发布过程开始时获取Octopus部署文件夹

时间:2016-06-20 18:02:18

标签: octopus-deploy

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

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

例如,当您没有磁盘空间不足时,这非常有用。但是,当磁盘空间不足时(由于之前没有运行此步骤),它不能很好地工作,并且由于磁盘空间不足,Octopus无法部署新版本,因此您无法运行删除旧文件步骤。 (我知道可以更改Octopus参数,因为它被认为是太少的磁盘空间,但我宁愿不这样做。)这还有一个问题,如果你想进入一个硬编码路径(说你遇到了一个临时问题)使用你的脚本,只需要删除一堆旧的部署,但目前没有从服务器手动删除它们所需的权限),很容易意外地从最终的版本号承载文件夹中删除并拥有底层脚本变得混乱。

我是否可以通过某种方式获取当前环境的部署文件夹,并将其与我的NuGet包名称(以及部署文件夹名称中的其他任何部分)结合使用,这样我就可以计算出预期的部署文件夹推进?

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

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

关于LifeCycle部分,我不知道这是否真的是LifeCycle名称。它匹配可能是巧合。我不确定。对于我的生活,我无法弄清楚它来自何处。

我也无法弄清楚E:\Octopus\Applications\的来源,以便我可以自动获取此值而不是硬编码。

1 个答案:

答案 0 :(得分:2)

此变量将在部署开始时提供:

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

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

$myRootDir = $env:TentacleApplications