在发布过程开始时获取八达通部署文件夹

问题描述 投票:0回答:2

我使用带有 powershell 脚本的 Octopus 自定义模板来按时间或按计数删除旧部署。但是,它依赖于在实际部署步骤之后运行,以便它可以访问该步骤的输出变量。例如, 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
 被列为“操作级变量”
,因此在步骤运行之前可能无法使用.如果必须的话,我愿意对 NuGet 包名称进行硬编码。 关于

LifeCycle

部分,我不知道这是否真的是一个

LifeCycle
的名字。两者匹配可能是巧合。我不知道。对于我的一生,我无法弄清楚这是从哪里来的。

我也无法弄清楚

E:\Octopus\Applications\

从哪里来,这样我就可以自动获取这个值,而不是硬编码它。

    

octopus-deploy
2个回答
3
投票

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

您可以从名为 
E:\Octopus\Applications\

的环境变量中获取

TentacleApplications
:

$myRootDir = $env:TentacleApplications



0
投票

Octopus 生成一个离线包放置文件,其中包含一个包含以下内容的 PowerShell 脚本: $env:TentacleApplications = "C:\Temp"

虽然我使用了部署前和部署后脚本,但我目前在持续影响或重置 TentacleApplications 方面遇到了挑战。虽然我可以使用部署后脚本临时修改它,但最终 PowerShell 文件保留 $env:TentacleApplications = "C:\Temp."

在此寻求有关此事的帮助是否合适?

© www.soinside.com 2019 - 2024. All rights reserved.