在Octopus Deploy中根据环境使用不同的软件包源。

6
我知道目前有人请求像这样的功能feature request,但我希望使用当前版本(1.6)有某种解决方法。
我们从TFS中的dev分支构建我们的开发和测试环境,并从TFS的release分支构建我们的QA和生产环境。由于它们生成不同的nuget包,因此我无法使用相同的软件包源。部署软件包步骤似乎没有环境范围选项。是否有其他方法来表达“为Dev/Test部署软件包X版本Y,为QA/Production部署软件包A版本B”?
1个回答

6
您可以使用相同的源,但需要注意以下几点:
两个分支构建的NuGet包版本必须不同(不能冲突)。我会在从“dev”分支构建的包中添加“dev”后缀(例如1.2.3.4-dev),而将我的“stable”分支保持原样。
创建发布时,必须明确指定要使用的版本,因为默认情况下Octopus会选择可用的最高版本NuGet包,这可能不是您想要的发布版本(通常稳定版滞后于开发版)。选择您想要的软件包版本(并相应地设置部署版本)。如果您通过TeamCity创建发布,请确保使用--packageVersion参数并设置发布编号。
由于上述方法仅适用于发布中只有一个软件包的情况,因此您的部署过程必须生成一个单一的NuGet包,否则可能会出现版本不匹配的情况。
当然,这种安排的优点是,如果需要,您可以将开发版推送到QA(或生产环境)。
所有这些都假定两个分支当然是构建为同一个软件包。你可以在dev和stable分支之间构建不同的软件包(但我不认为这样做是明智的,因为会重复所有章鱼配置)。
更新:显然你可以使用Octo.exe在不同的软件包中指定不同的版本号 - 请参见https://github.com/OctopusDeploy/Octopus-Tools

这基本上是我试图采取的路径。如果我理解正确,dev 是预发布的 tag。我曾经尝试过几次使用 AssemblyInformationalVersion 属性设置预发布版本,但都没有成功。到目前为止,OctoPack 似乎忽略了它。你是通过该属性添加标签,还是在创建包后仅将其添加到文件名中? - LockeCJ
看起来OctoPack目前不支持AssemblyInformationalVersion。:( - LockeCJ
我添加了对AssemblyInformationalVersion的支持。这是拉取请求:https://github.com/OctopusDeploy/OctoPack/pull/34 - LockeCJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接