首页 文章

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

提问于
浏览
0

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

目前,它(显然)失败,因为这台计算机没有互联网访问权限 . 我与IT讨论过,他们同意让我们将它连接到互联网进行一些维护,但是他们拒绝让它一直连接 .

我的问题是:

是否可以创建某种本地nuget缓存,当我们对包进行更改时,我们可以填充这些缓存,然后构建服务器将在连接到服务器之前尝试使用此缓存?

1 回答

  • 0

    我可以想到几个解决方案 .

    下载解决方案使用的包

    我最近在那里,询问的人想要在离线计算机上使用包 . 我从另一个问题回答的问题是,您创建了一个nuget.config,它将global packages文件夹设置为当前为空的文件夹,执行还原,然后将所有.nupkg文件复制到目标 . NuGet支持本地文件夹提要,因此只需将这些nupkgs删除到网络共享上,并告诉构建服务器将该网络共享用作nuget源 .

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

    Mirror nuget.org的本地包

    我的队友有一个工具,它将使用NuGet's v3 catalog api查找所有未删除的包(可选择过滤掉未列出的包)并在本地下载所有140到180万个包 . 他们的实施大约需要一周的时间才能完成下载出于兴趣,我写了一些使用Azure Functions自动扩展作业的内容,并设法在2小时内下载所有软件包 . blob存储帐户现在是2.4 TiB,因此您几乎肯定不会在nuget.org上分析软件包,而不是将其用作恢复软件包的源 . 您可能希望定期更新本地Feed .

    使用可读缓存服务器

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

    如果您的公司没有HTTP代理,您可以在公司中安装几个nuget servers . 其中一些支持直读缓存,因此您的IT部门可以在公司DMZ中进行设置,您的构建服务器可以使用它来从互联网上的Feed中获取包 .

相关问题