自我托管NuGet

Jas*_*tts 14 nuget nuget-server

我一直在寻找自我托管NuGet,很难理解如何设置它以及它将如何帮助支持我们的开发过程.

有没有人建议使用哪种,如何设置?

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

TWr*_*ght 13

在浏览了各种解决方案 - 自托管和托管服务 - 我们选择使用ProGet.

ProGet摘要

ProGet为企业版提供标准的"免费"许可和名义许可费(单年和永久).我们目前使用标准的"免费"版本,没有真正的抱怨.您可以根据需要创建任意数量的供稿,添加任意数量的用户,等等.(我们创建了"测试","暂存"和"生产"供稿,作为我们质量保证流程的一部分.)唯一的实际限制在免费版本中,无法过滤您想要包含在ProGet Feed中的特定包的外部Feed.此过滤功能使用"连接器"进行管理.使用企业版 - 当您创建订阅源时 - 您可以选择添加"连接器"以从其他订阅源(外部或内部)中提取包.

ProGet与Nuget包管理和创建

创建nuget包本身的步骤我将留给David Ebbo的热门博客文章http://blog.davidebbo.com/2011/04/easy-way-to-publish-nuget-packages-with.html.但是,要知道上传包可以通过ProGet包管理Web UI,命令行nuget.exeNuget Package Explorer上传.

ProGet安装,配置和激活

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

实现质量控制和CI

使用TeamCity的CI是我们需要的,所以我们正在寻找使用TeamCity的Nuget服务器创建nuget包构建过程.我将在评论中发布创建包的方法.下一步是将TeamCity创建的nuget包自动发布到适当的ProGet提要(即"测试","暂存","生产"),或许可以使用带有API密钥的命令行Nuget.

更多的信息

我们将MyGet视为托管服务,但它似乎在添加其他贡献者/用户等简单场景中绊倒.当需要的不仅仅是两个贡献者账户时,它的价格也大幅上涨.而使用ProGet,您可以单独使用免费版本获得无限制的用户帐户.

还有一个注意事项:对于发布OSS类型的项目/包,我会看看Chocolatey作为解决方案.


Chr*_*dge 11

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

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

  • @ShaunWilson我在测试中发现NuGet.Server在大约100个中等大小的包中基本上无法使用.我的fork没有被合并回上游,因为它有太多的变化.它现在是一个名为Klondike的独立项目,可在https://github.com/themotleyfool/Klondike获取. (3认同)