2015-10-16 76 views
0

基本上我试图在octopus的一个进程中的一个步骤中指定Nuget包版本。在Octopus Deploy中指定Nuget包版本

我们有一个相当简单的过程,我们使用Teamcity创建一个Nuget包并将其上传到章鱼,然后我们要求章鱼为给定的项目创建一个发行版,并且启动安装另外两个nuget的Octopus过程包,然后我们刚刚上传的新包。

我们遇到的问题是与其他2个软件包。我会称它们为PackageA和PackageB。我想安装PackageA的版本1.0.0.0和PackageB的2.0.0.0版本,然后总是刚刚上传的NewReleasePackage的最新版本。部署Nuget包的基本步骤有一个“NuGet包ID”字段,它可以帮助我识别PackageA和PackageB。但是,这并不能让我指定一个版本。如果我有两个客户端,一个使用PackageA版本1.0.0.0,另一个使用2.0.0.0版本,那么我的章鱼包资源库中将有两个版本的PackageA,我需要能够在步骤级别指定版本我想要为给定的进程/客户端安装的包。但我似乎无法找到一种方法来做到这一点。你能帮我吗?

感谢

请问

回答

0

我假设你正在使用的octo.exe触发通过TeamCity的部署。尚不清楚您的部署过程是如何设置的。因此,您正在部署三个软件包 - 其中只有一个需要更新。

您可以使用参数的octo.exe调用中指定每个包的具体版本:

package=StepName:Version 

什么你正在寻找可以做,在昂贵的硬编码值的辛内.exe调用。如果软件包A和B很少改变,这不是问题。但如果更改不经常进行,则必须更改octo.exe调用的参数。

这些都在他们的网站here的文档中。如果你有更多的细节,请提供给他们,因为我的回答很具推测性。

从理论上讲,我认为有一个备选方案:在原有项目的同一个项目组中打出自己项目中频繁更改的NuGet包。这样,当你做一个构建时,你只是部署一个NuGet包来进行部署,因为它是唯一需要做的改变。

通过将您的项目分解为两个,您将避免为octo.exe完全更改您的脚本参数 - 让我们面对它,是一个丑陋的黑客。这不会使您的部署自动化,并最终为您自己长期摆脱困境。如果软件包A和软件包B没有改变 - 为什么用频繁更改的软件包重新部署它们?这就是为什么我建议(没有所有必要的信息)将您的项目分成两个项目。

我可以想出更多有创意的解决方案,但部署自动化的最佳实践/原则是更简单,更自主,更好。当您深入了解有关部署的软件包版本的详细信息时,只需要为其中一个软件包部署最新版本,并坚持使用其他软件包的其他旧版静态版本,就可以从整体上重新考虑部署过程了。打倒。

+0

嗨osij2is, 感谢您的答复。这不完全是我以后的事。你看我们的过程中,我们有3个步骤。前两个步骤安装具有特定版本的软件包A和B.然后在第3步中,我们安装最近上传的软件包的最新版本。在这些步骤中,我们必须通过其ID来确定要安装的软件包。在我看来,这里也应该指定版本(除非是空的,在这种情况下是最新版本)。似乎很奇怪,我会在一个系统中指定ID,而在另一个系统中指定该版本。那有意义吗? 谢谢 将 – wdhough

+0

对不起,当我说的步骤和过程在这里,我说的是章鱼的步骤和过程 – wdhough

+0

你*实际*做了部署吗?在创建发行版时,首先选择要部署的环境,然后指定要部署的每个软件包的版本。 – osij2is