Nuget 包验证在构建机器上花费的时间太长

Nuget package verification is taking too long on a build machine

我的 CI 管道中有一个构建步骤,我在其中为我的解决方案恢复 NuGet 包。我正在从 Sonatype Nexus 上的 NuGet 托管存储库中检索我的 NuGet 包。包恢复本身是 运行 足够顺利,但它挂在一个步骤中,它需要将近 2 到 3 分钟来验证一些包(在这种情况下由 Microsoft 提供的包)。我完成此还原的构建代理无法访问互联网。这就是为什么我也在我的 Sonatype Nexus 上使用 NuGet 代理。 例如,它被挂起的步骤是:

PackageSignatureVerificationLog: PackageIdentity: Microsoft.Owin.3.1.0 Source: ...nuget\packages\ PackageSignatureValidity: True

我考虑过将可信签名者列表添加到我构建的 nuget 配置中。但由于我的机器无法访问互联网,因此这不会很有帮助。如 Microsoft 文档中所述: https://docs.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-trusted-signers

https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file中所述 我还尝试将 signitureValidationMode 设置为 <add key="signatureValidationMode" value="accept" />,在这种情况下,默认情况下会验证包。即使这是默认情况,如果连接不成功,也会接受它们。但这不会改变我的 NuGet 恢复速度。

除了为我的解决方案需要的所有 NuGet 验证 URL 打开网络访问之外。

有没有一种方法可以将 NuGet 配置设置为不在离线模式下为我的构建代理验证 NuGet 包的证书?

经过一番挖掘,我发现了以下 Microsoft document

这解释了离线机器(例如构建代理)上可能发生的速度减慢问题以及可能的解决方案。

可以通过将环境变量 NUGET_CERT_REVOCATION_MODE 实施为 offline 来解决该问题。

NUGET_CERT_REVOCATION_MODE = 'offline'

在Jenkins这样的工具中,可以在环境变量中声明,也可以运行构建机上的命令设置环境变量。