自托管 NuGet

16

我一直在研究自助式托管NuGet,但很难理解如何设置它以及它如何帮助我们支持开发流程。

有没有人推荐使用哪个版本,如何设置?

或者我应该使用托管服务?

4个回答

14

在各种自助托管和托管服务方案中,我们选择了ProGet

ProGet概述

ProGet有标准的“免费”许可证以及企业版的名义许可费(单年和永久)。 我们目前使用标准的“免费”版本并没有什么实际的抱怨。您可以创建任意数量的feeds,添加任意数量的用户等。(我们创建了“测试”,“暂存”和“生产”feeds作为我们质量保证过程的一部分。) 免费版本唯一的限制是不能筛选外部feeds中特定包要加入到您的ProGet feeds中。 这个筛选功能由"connectors"来管理。通过企业版,在创建feed时,您可以选择添加一个“连接器”来从其他feeds(外部或内部)中拉取packages。

使用Nuget包管理和创建的ProGet

创建nuget包本身的步骤我将留给David Ebbo的热门博客文章:http://blog.davidebbo.com/2011/04/easy-way-to-publish-nuget-packages-with.html. 然而,知道上传包的方式,您可以通过ProGet packages管理网站界面,命令行nuget.exeNuget包浏览器上传。

ProGet的安装、配置和激活

安装、配置和激活ProGet是最不直观的部分。它可以使用常规SQL Server数据库或SQL Server Express数据库进行安装支持。此外,它也可以成为自托管应用程序或在IIS下运行。如果您需要执行离线激活或希望请求不同的许可证密钥,请转到my.inedo.com并创建一个账户,您可以在那里完成所有操作。

Proget质量控制和CI

我们将需要使用TeamCity进行CI,因此我们正在考虑使用TeamCity的Nuget服务器创建nuget软件包构建过程。有一个关于创建软件包的how-to我会在评论中发布。下一步将是使用API密钥,利用命令行Nuget将TeamCity创建的nuget软件包自动发布到适当的ProGet feeds(例如“测试”,“暂存”,“生产”)。

进一步信息

我们看了看MyGet作为托管服务,但似乎在添加其他贡献者/用户等简单场景时出现问题。当需要超过两个贡献者账户时,价格也会大幅上涨。而对于ProGet,即使只使用免费版本,您也可以获得无限的用户账户。

还有一个附注:对于发布OSS类型的项目/软件包,我建议查看Chocolatey作为解决方案。


这是之前承诺的“如何操作”的链接:http://jamesheppinstall.wordpress.com/2012/05/25/creating-a-nuget-package-from-a-teamcity-build/ - TWright
1
通常我们的安装/激活过程非常简单。唯一需要在工具外进行激活的情况是,如果ProGet服务器未连接到Internet,则通常激活是自动的。我还要补充的是,企业版还添加了使用LDAP访问Feed的功能,而不必手动记住或输入API密钥(除非为Feed明确指定了一个)。 - Tod Hoven
1
Tod联系我关于链接问题,现在已经修复。 - John Rasch
感谢Tod和John。到目前为止,我们非常欣赏这个工具的灵活性。知道你们对用户/客户需求如此敏锐反应也是非常令人鼓舞的。我们计划在不久的将来购买企业许可证。 - TWright
我也尝试过ProGet,但它非常不可靠,我们遇到了很多问题;随机禁止访问,忘记软件包,在VS中显示软件包需要很长时间。 - Wilbert
显示剩余2条评论

11

自主托管的另一种选择是使用NuGet.Server包,并创建一个IIS网站来在内部网络上托管它,但如果您计划发布多个软件包,它的扩展性不会很好。

我创建了一个 NuGet.Server 的分支,使用 Lucene.Net 索引来解决这些性能问题。下载可从 https://github.com/themotleyfool/Klondike/releases 获取。


在哪个阶段它不再可扩展?你上次测试的是哪个版本?你分叉的更改是否已合并回官方源代码树? - Shaun Wilson
@ShaunWilson 我最后一次测试可能是使用 NuGet.Server 2.0,但看代码发现它并没有改变多少。主要的扩展问题在于包哈希值被缓存在进程中,因此当应用程序重新启动时,文件系统中的每个包都必须完全读取以重新计算哈希值。搜索和列表操作也因类似原因而变慢。 - Chris Eldredge
3
@ShaunWilson 我在测试中发现,当中等大小的包数量达到100左右时,NuGet.Server 基本上就无法使用了。我的分支因为有太多更改而没有合并回上游。现在它成为了一个名为 Klondike 的单独项目,可以在 https://github.com/themotleyfool/Klondike 找到。 - Chris Eldredge

1
为了保持这个线程的最新状态,Visual Studio Team Services还有一个预览版的包管理器。请参见市场:包管理

0
您可以创建一个空的Asp.Net Web应用程序,并从Nuget Gallery安装Nuget.Server。这是一种免费选项,可以在IIS上自主托管自己的Nuget软件包。请查看文档

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