基本上我试图在章鱼的一个过程中的一个步骤中指定Nuget包版本。
我们有一个相当简单的过程,我们使用Teamcity创建一个Nuget包并将其上传到章鱼,然后我们要求章鱼为给定项目创建一个版本,这将触发安装其他2个nuget包的Octopus进程然后我们刚上传的新包装。
我们遇到的问题是其他2个包。我称之为PackageA和PackageB。我想安装PackageA的1.0.0.0版本和PackageB的2.0.0.0版本,然后我刚刚上传的NewReleasePackage的最新版本。部署Nuget包的基本步骤有一个字段,用于" NuGet包ID"这有助于我识别PackageA和PackageB。但是,这并不能指定版本。如果我有两个客户端,一个使用版本1.0.0.0的PackageA,另一个使用版本2.0.0.0,那么我将在我的章鱼软件包存储库中有两个版本的PackageA,我需要能够在步骤级别指定版本我想为给定的进程/客户端安装的软件包。但是,我似乎无法找到一种方法来做到这一点。你能帮忙吗?
由于
威尔
答案 0 :(得分:0)
我假设您正在使用octo.exe通过teamcity触发部署。什么不清楚您的部署过程是如何设置的。因此,您要部署三个软件包 - 您只需要更新一个软件包。
您可以使用以下参数指定octo.exe调用中每个包的特定版本:
package=StepName:Version
您可以使用octo.exe调用中昂贵的硬编码值来完成您正在寻找的内容。如果包A和B很少改变,那就不是问题了。但是如果不经常进行更改,则必须更改octo.exe调用的参数。
所有这些都在他们网站here的文档中。如果您有更多详细信息,请提供,因为我的答案是高度推测的。
理论上说,我认为还有另一种选择:在与原始项目相同的项目组中,将经常更改的NuGet包中的自有项目分解出去。这样,当您进行构建时,您只需部署要部署的一个NuGet包,因为它是唯一需要进行的更改。
通过将您的项目分解为两个,您将避免为octo.exe完全更改脚本参数 - 让我们面对它,这是一个丑陋的黑客攻击。它不会使您的部署自动化,并且从长远来看最终会给自己带来麻烦。如果套餐A和套餐B没有改变 - 为什么要用经常更换的套餐重新部署它们?这就是为什么我建议(没有所有必要的信息)将你的项目分成两个项目。
我可以想出更多创造性的解决方案,但部署自动化的最佳实践/原则是更简单,更自主,更好。当您深入了解有关部署的软件包版本的详细信息,并且只针对一个软件包部署最新版本,同时坚持使用其他软件包的其他旧版静态版本时,是时候重新考虑部署了从头开始整个过程。