当前位置:  开发笔记 > 运维 > 正文

NuGet Server适用于多种环境?

如何解决《NuGetServer适用于多种环境?》经验,为你挑选了1个好方法。

我正在考虑为私人订阅源设置NuGet服务器,这看起来很简单(有一个循序渐进的指南).我预见到的问题是它看起来不像是支持多种环境.

在功能上是否内置了通过多种环境(测试/测试/生产)"推广"包的想法?

我是否必须托管多个服务器(每个环境一个)?

有没有其他解决方案,我还没有?


我主要担心的是我们更新了一个软件包并将其用于我们的测试环境,但我们不希望我们的测试版或生产环境如果出现问题就会失败...我们要等到更新被"批准"之前可用于Beta,然后是第二次批准,以使其可用于生产.



1> Petrik..:

在我目前的工作场所,我们有类似的问题.在不稳定分支中正在开发的NuGet软件包应该可以在我们产品的Alpha版本上进行开发,但不能用于我们产品的Beta/RTM版本.因此,为了实现这一目标,我们设置了3个不同的NuGet存储库:

开发存储库:所有开发人员都具有只读访问权限的文件共享.文件共享有一个用于NuGet包的空间,另一个用于匹配的NuGet符号包.只有构建服务器(和构建工程师)具有对此存储库的写访问权.

QA存储库:另一个类似于开发存储库的文件共享.

生产存储库:Klondike NuGet服务器的私有实例,用作所有NuGet包(及其源)的NuGet和符号服务器,允许在生产版本中使用.

作为分支策略,我们使用GitFlow.使用此策略允许我们使用以下方法:

feature分支上完成的构建将其NuGet包推送到开发存储库.

完成的构建hotfixrelease分支将其NuGet包推送到QA存储库

在这些分支只获得合并提交的情况下,不对分支developmaster分支进行编译构建.

可以将包引入生产存储库的唯一方法是通过QA存储库进行升级.为了实现这一目标,每个产品存储库都有一个指向master分支的构建.当新的合并提交被推送到此分支时,构建将执行以下步骤:

    获取新版本的代码

    通过获取应用于新修订版的版本号标记来确定该修订的版本号

    通过搜索nuspec文件并从这些文件中获取软件包名称,确定哪些NuGet软件包已从新版本中释放.

    软件包名称和版本号的组合提供了完整的软件包文件名.

    在QA存储库中查找包并将它们推送到生产存储库.还可以找到符号包并将其推送到生产符号服务器.最后从QA存储库中删除包

这个工作流程显然可以扩展到包括开发存储库,但到目前为止我们还没有看到它的需要.

请注意,如果您希望以这种方式提升包,那么为QA存储库提供的构建生成包含最终版本号(例如1.2.3)而不是预发布版本号(例如1.2.3-alpha0001)的包很重要.否则促销构建无法确定要抓取的正确包.

这种方法的另一个好处是,当代码被推送到生产分支时,开发人员不必对其项目文件进行更改,因为项目文件已经引用了正确的NuGet包版本.

那么回答你的问题:

NuGet中的包促销没有内置功能.但是,设置一个允许您处理包促销的系统并不困难.还有一些商业NuGet服务器提供促销功能.

您可以托管多台服务器,但并非总是如此.Nuget也可以将文件共享用作存储库,因此对于测试/ beta环境,您可以使用文件共享,然后使用适当的NuGet服务器用于生产环境.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有