【问题标题】:Self-Hosting NuGet自托管 NuGet
【发布时间】:2012-09-11 17:06:59
【问题描述】:

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

有人对使用哪个、如何设置有任何建议吗?

还是我应该只使用托管服务?

【问题讨论】:

    标签: nuget nuget-server


    【解决方案1】:

    在查看了各种解决方案(自托管和托管服务)后,我们选择了ProGet

    ProGet 总结

    ProGet 为企业版提供标准的“免费”许可和象征性许可费用(单年和永久)。我们目前使用标准的“免费”版本,没有真正的抱怨。您可以根据需要创建任意数量的提要、添加任意数量的用户等。(我们创建了“测试”、“暂存”和“生产”提要作为我们质量保证流程的一部分。)唯一真正的限制在免费版本中,无法过滤您希望包含在 ProGet 提要中的特定软件包的外部提要。此过滤功能通过“连接器”进行管理。在企业版中——当你创建一个提要时——你可以选择添加一个“连接器”来从其他提要(外部或内部)中提取包。

    使用 Nuget 包管理和创建的 ProGet

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

    ProGet 安装、配置和激活

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

    推进质量控制和 CI

    带有 TeamCity 的 CI 是我们将需要的东西,因此我们正在考虑使用 TeamCity 的 Nuget 服务器创建一个 nuget 包构建过程。有一个如何创建我将在评论中发布的包的方法。下一步是自动将 TeamCity 创建的 nuget 包发布到适当的 ProGet 源(即“Testing”、“Staging”、“Production”),可能使用带有 API 密钥的命令行 Nuget。

    更多信息

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

    另外一个说明:对于发布 OSS 类型的项目/包,我会看看 Chocolatey 作为解决方案。

    【讨论】:

    • 这里是“操作指南”的链接:jamesheppinstall.wordpress.com/2012/05/25/…
    • 通常我们的安装/激活过程非常简单。唯一需要在工具之外进行激活的情况是 ProGet 服务器未连接到 Internet,通常激活是自动的。我还要补充一点,企业版还增加了使用 LDAP 访问提要的功能,而不必手动记住或输入 API 密钥(当然,除非为提要明确指定了一个)。
    • Tod 向我发送了关于链接问题的消息,这些问题现在又可以正常工作了。
    • 感谢托德和约翰。到目前为止,我们真的很欣赏该工具的灵活性。知道你们对用户/客户需求如此敏感也非常令人鼓舞。我们正在考虑在不久的将来购买企业许可证。
    • 我也尝试过 ProGet,但它非常不可靠,而且我们遇到了很多问题;随机禁止访问,忘记包,在 VS 中显示包需要很长时间。
    【解决方案2】:

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

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

    【讨论】:

    • 在它不再扩展之前有多少包?您上次测试的是哪个版本?您的分叉更改是否已合并回官方源代码树?
    • @ShaunWilson 我可能最后一次使用 NuGet.Server 2.0 进行了测试,但看看代码并没有太大变化。主要的扩展问题是包哈希在进程中被缓存,因此当应用程序回收文件系统上的每个包时,必须完整读取以重新计算哈希。由于类似原因,搜索和列表操作也很慢。
    • @ShaunWilson 我在测试中发现 NuGet.Server 在大约 100 个中等大小的包中基本上无法使用。我的 fork 没有被合并回上游,因为它有太多的变化。它现在是一个名为 Klondike 的独立项目,可在 github.com/themotleyfool/Klondike 获得
    【解决方案3】:

    为了使该线程保持最新状态,Visual Studio Team Services 还提供了预览版包管理器。查看市场:Package Management

    【讨论】:

      【解决方案4】:

      您可以创建一个空的 Asp.Net Web 应用程序并从 Nuget Gallery 安装 Nuget.Server。这是在 IIS 上自行托管自己的 Nuget 包的免费选项。检查documentation

      【讨论】:

        猜你喜欢
        • 2017-07-18
        • 2012-12-08
        • 2016-02-10
        • 1970-01-01
        • 1970-01-01
        • 2017-02-27
        • 2023-03-11
        • 1970-01-01
        相关资源
        最近更新 更多