【发布时间】:2016-04-07 14:31:29
【问题描述】:
我最近安装了 Nuget Gallery (https://github.com/NuGet/NuGetGallery) 作为存储库。理想情况下,我想创建多个提要,以便我可以区分将在其他项目(dll、合同等)中重用的 nuget 包和我们用于将项目部署到生产环境的包。
我知道我可以通过创建 Nuget Gallery 的多个实例来实现这一点,但这在我看来有点矫枉过正,这意味着两个网站两个数据库。我也熟悉 MyGet 提供此功能的事实,但我无法获得购买批准。我也知道 teamcity 包含自己的提要服务器,但它不允许这种多提要场景,其性能也不足以大规模使用。
简而言之,理想的部署方案如下:
- teamcity 根据构建场景生成部署包或 dll/合约包。
- teamcity 将部署包发布到 nuget 库部署源 (例如:nugetgallery.server.com/deploy/api/v2)。
- teamcity 将 dll/合同包发布到 nuget 库开发提要 (例如:nugetgallery.server.com/dev/api/v2)。
- 章鱼总是在 nugetgallery.server.com/部署/api/v2
- devs / teamcity 搜索包 nugetgallery.server.com/dev/api/v2
通过这种方式,我可以保持干净,甚至可以创建第三种类型的提要,它只包含发布包,这样我就可以确定如果它不在那个提要上,任何东西都不会部署到生产环境中。
我可能错过了一些基本方法,因此欢迎使用我选择的替代方法。
【问题讨论】:
-
afaik,两个 nuget 提要需要两个网站,用于 NugetGallery 和 NugetServer。它需要两个数据库吗?我从未使用过 NugetGallery,但对于 NuGetServer,我知道您可以将两个网站指向同一个存储库路径。
-
我相当有信心至少可以将文件指向同一个位置,但对于两个不同站点的同一个数据库不太确定,因为我想不出一种方法来区分基于包的包在他们上传的网址上。我认为这就像拥有同一个网站的两个实例,不是吗?有一个 Gallery.SiteRoot 键我可以尝试使用它,看看是否符合目的
-
嗯,好点子。通过您的设置,您需要两个数据库,因为如果您共享一个数据库,您会遇到包 ID 冲突,对吗?对我来说,这意味着您可能需要两个单独的数据库。
-
@rjso 尝试通过网站联系 MyGet 以帮助您尝试获得购买批准?有一个免费的 Enterprise 试用版,您可以试一试。
-
嗨 Xavier,感谢您的建议。不幸的是,与我们行业中的许多事情一样,这个决定来自上面,我只是应该从中找到最佳解决方案。另一个“缺点”(因为我真的不这么认为)是 MyGet 只允许您将包存储在他们的在线存储库中,这显然是一件坏事,我们希望将所有内容都保存在本地服务器中
标签: nuget nuget-server nugetgallery