是否可以为没有Internet的计算机创建nuget包的缓存?

时间:2018-12-10 11:58:24

标签: nuget nuget-package nuget-package-restore

我们有一个构建服务器,该服务器无法访问互联网。它从git服务器获取我们的源代码,然后尝试构建它们。

当前(显然)失败,因为此计算机无法访问互联网。我与IT部门进行了讨论,他们同意让我们将其连接到Internet进行一些维护,但是他们拒绝让它一直保持连接状态。

我的问题是:

是否有可能创建某种本地nuget缓存,以便在对软件包进行更改时可以填充该缓存,然后构建服务器将尝试在连接到服务器之前使用此缓存?

1 个答案:

答案 0 :(得分:2)

我可以想到几种解决方案。

下载解决方案使用的软件包

我最近answered a very similar question,有人问我想让软件包在离线计算机上使用。我对另一个问题的回答的摘要是,您创建一个nuget.config,它将全局程序包文件夹设置为当前为空的文件夹,进行还原,然后将所有.nupkg文件复制到目标位置。 NuGet支持本地文件夹供稿,因此只需将这些nupkgs放在网络共享上,并告诉构建服务器使用该网络共享作为nuget源。

一个明显的问题是,每当开发人员安装新软件包(或现有软件包的新版本)时,都需要将新软件包复制到本地供稿。

在本地镜像nuget.org的软件包

我的队友有一个工具,它将使用NuGet's v3 catalog api查找所有未删除的程序包(可以选择过滤掉未列出的程序包),并在本地下载所有1.4至180万个程序包。他们的实施大约需要一个星期才能完成所有内容的下载。出于兴趣,我写了一些东西,利用Azure Functions自动缩放工作,并设法在2小时内下载了所有程序包。 Blob存储帐户现在为2.4 TiB,因此您几乎可以肯定不希望这样做,除非您要这样做是为了分析nuget.org上的软件包,而不是将其用作还原软件包的源。您可能需要定期更新本地供稿。

使用读取型缓存服务器

由于您的构建服务器已通过网络连接,因此请与IT部门一起获得通读缓存服务器。如果您的公司已经使用HTTP代理,请与IT部门合作以允许构建服务器使用它,然后将其配置为HTTP代理。

如果您的公司没有HTTP代理,则可以在公司中安装多个nuget servers。其中一些支持直读缓存,因此您的IT部门可以在公司DMZ中对其进行设置,并且您的构建服务器可以使用它从Internet上的源中获取软件包。