Проверка пакета Nuget занимает слишком много времени на сборочной машине - PullRequest
0 голосов
/ 29 января 2020

У меня есть этап сборки в моем конвейере CI, где я восстанавливаю пакеты NuGet для своего решения. Я получаю свои пакеты NuGet из репозитория NuGet на Sonatype Nexus. Само восстановление пакета выполняется достаточно гладко, но зависает на шаге, когда для проверки некоторых пакетов требуется от 2 до 3 минут (в данном случае это пакеты, предоставляемые Microsoft). Агент сборки, в котором я выполняю это восстановление, не имеет доступа inte rnet. И именно поэтому я также использую прокси-сервер NuGet на моем Sonatype Nexus. Например, шаг, на котором он зависает:

PackageSignatureVerificationLog: PackageIdentity: Microsoft.Owin.3.1.0 Источник: ... nuget \ packages \ PackageSignatureValidity: True

Я рассмотрел вопрос о добавлении списка доверенных подписчиков в конфигурацию nuget моих сборок. Но так как моя машина не имеет доступа rnet, это не очень полезно. Как описано в документации 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" />, что в этом case проверит пакеты по умолчанию. Даже если это случай по умолчанию, и принимает их, если не удается подключиться. Но это не меняет скорость моего восстановления NuGet.

Помимо открытия доступа к сети для всех URL-адресов проверки NuGet, моё решение потребуется.

Есть ли способ, которым я могу настроить конфигурацию NuGet, чтобы не проверять сертификаты пакетов NuGet в автономный режим для моего агента сборки?

1 Ответ

0 голосов
/ 29 января 2020

После некоторых поисков я нашел следующий документ Microsoft .

, в котором объясняется возможная проблема замедления, которая может возникнуть на автономном компьютере (например, агенте сборки), и возможная решение.

Проблема может быть решена путем реализации переменной окружения от NUGET_CERT_REVOCATION_MODE до offline.

NUGET_CERT_REVOCATION_MODE = 'offline'

В таком инструменте, как Jenkins, вы можете объявить его в переменных среды, или вы можете запустить команду на компьютере сборки, чтобы установить переменную среды.

...