是否可以为没有互联网的计算机创建 nuget 包缓存?
Is it possible to create a cache of nuget packages for computers without internet?
我们有一个构建服务器,它无法访问互联网。它从 git 服务器获取我们的源代码,然后尝试构建它们。
目前,它失败了(很明显),因为这台电脑没有互联网接入。我和IT商量过,他们同意让我们连网做一些维护,但是他们不让一直连着。
我的问题是:
是否可以创建某种本地 nuget 缓存,我们可以在对包进行更改时填充它,然后构建服务器将在连接到服务器之前尝试使用此缓存?
我能想到几种解决方案。
下载解决方案使用的包
我 最近,询问的人想要获取包以在离线计算机上使用。我对另一个问题的回答的总结是,您创建了一个 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 上的提要中获取包。
我们有一个构建服务器,它无法访问互联网。它从 git 服务器获取我们的源代码,然后尝试构建它们。
目前,它失败了(很明显),因为这台电脑没有互联网接入。我和IT商量过,他们同意让我们连网做一些维护,但是他们不让一直连着。
我的问题是:
是否可以创建某种本地 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 上的提要中获取包。