NuGetAuthenticate@1 — задача проверки подлинности NuGet версии 1
Настройте средства NuGet для проверки подлинности с помощью Артефактов Azure и других репозиториев NuGet. Требуется NuGet >= 4.8.5385, dotnet >= 6 или MSBuild >= 15.8.166.59604.
Синтаксис
# NuGet authenticate v1
# Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 6, or MSBuild >= 15.8.166.59604.
- task: NuGetAuthenticate@1
inputs:
#forceReinstallCredentialProvider: false # boolean. Reinstall the credential provider even if already installed. Default: false.
#nuGetServiceConnections: # string. Service connection credentials for feeds outside this organization.
# NuGet authenticate v1
# Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 6, or MSBuild >= 15.8.166.59604.
- task: NuGetAuthenticate@1
inputs:
#nuGetServiceConnections: # string. Service connection credentials for feeds outside this organization.
#forceReinstallCredentialProvider: false # boolean. Reinstall the credential provider even if already installed. Default: false.
Входы
forceReinstallCredentialProvider
-
переустановите поставщик учетных данных, даже если он уже установлен
boolean
. Значение по умолчанию: false
.
Необязательный. Переустановит поставщик учетных данных в каталог профилей пользователя, даже если он уже установлен. Если поставщик учетных данных уже установлен в профиле пользователя, задача определяет, перезаписывается ли он поставщиком учетных данных, предоставленным задачей. Это может обновить (или потенциально понижение) поставщика учетных данных.
учетные данные подключения службы nuGetServiceConnections
- для веб-каналов за пределами этой организации
string
.
Необязательный. Разделенный запятыми список подключений службы NuGet имена веб-каналов за пределами этой организации или коллекции. Для веб-каналов в этой организации или коллекции оставьте это пустым; Учетные данные сборки используются автоматически.
Параметры управления задачами
Все задачи имеют параметры управления в дополнение к входным данным задачи. Дополнительные сведения см. в разделе Параметры управления и общие свойства задач.
Выходные переменные
Никакой.
Замечания
Важный
Эта задача совместима только с NuGet >= 4.8.0.5385, dotnet >= 6 или MSBuild >= 15.8.166.59604.
Какие средства совместимы с этой задачей?
Эта задача настраивает средства, поддерживающие кроссплатформенных подключаемых модулей NuGet. В настоящее время средства включают nuget.exe, dotnet и последние версии MSBuild с встроенной поддержкой восстановления пакетов NuGet.
В частности, эта задача будет настраивать:
- nuget.exe (версия 4.8.5385 или более поздней версии)
- dotnet / .NET 6 SDK или более поздней версии (предыдущая версия этой задачи NuGetAuthenticateV0 требует .NET Core 2.1, которая больше не поддерживается).
- MSBuild (версия 15.8.166.59604 или более поздней версии)
При возникновении проблем рекомендуется обновить до последней стабильной версии.
При восстановлении пакета возникают ошибки "Задача была отменена". Что мне делать?
Известные проблемы в NuGet и в поставщике учетных данных Azure Artifacts могут вызвать эту ошибку, а обновление до последней версии nuget может помочь.
известная проблема, в некоторых версиях nuget/dotnet, может привести к этой ошибке, особенно во время больших восстановлений на компьютерах с ограниченными ресурсами. Эта проблема устранена в NuGet 5.2, а пакет SDK для .NET Core 2.1.80X и 2.2.40X. Если вы используете старую версию, попробуйте обновить версию NuGet или dotnet. Задачу установщика инструментов .NET Core можно использовать для установки более новой версии пакета SDK для .NET Core.
Существуют также известные проблемы с поставщиком учетных данных Azure Artifacts (установленным этой задачей), включая артефакты-credprovider/#77 и артефакты-credprovider/#108. При возникновении этих проблем убедитесь, что у вас есть последний поставщик учетных данных, задав входные forceReinstallCredentialProvider
true
в задаче проверки подлинности NuGet. Этот параметр также гарантирует автоматическое обновление поставщика учетных данных по мере устранения проблем.
Если ни одно из указанных выше проблем не устранено, включите журнал диагностики подключаемых модулей и сообщите о проблеме, чтобы NuGet и поставщик учетных данных Azure Artifacts.
Как эта задача отличается от задач NuGetCommand и DotNetCoreCLI?
Эта задача настраивает nuget.exe, dotnet и MSBuild для проверки подлинности с помощью артефактов Azure или других репозиториев, требующих проверки подлинности. После выполнения этой задачи можно вызвать средства на более позднем шаге (напрямую или через скрипт), чтобы восстановить или отправить пакеты.
Задачи NuGetCommand и DotNetCoreCLI требуют использования задачи для восстановления или отправки пакетов, так как проверка подлинности в Azure Artifacts настраивается только в течение времени существования задачи. Это может препятствовать восстановлению или отправке пакетов в собственном скрипте. Это также может препятствовать передаче определенных аргументов командной строки в средство.
Задача NuGetAuthenticate — это рекомендуемый способ использования проверенных веб-каналов в конвейере.
Когда в конвейере следует запустить эту задачу?
Эта задача должна выполняться перед использованием средства NuGet для восстановления или отправки пакетов в проверенный источник пакетов, например Azure Artifacts. Нет других требований к упорядочению. Например, эта задача может безопасно выполняться до или после задачи установщика средств NuGet или .NET Core.
Как настроить источник пакета NuGet, использующий ApiKey (ключи API NuGet), например nuget.org?
Некоторые источники пакетов, такие как nuget.org, используют ключи API для проверки подлинности при отправке пакетов, а не username/password
учетные данные. Из-за ограничений в NuGet эту задачу нельзя использовать для настройки подключения службы NuGet, использующего ключ API.
Вместо:
- Настройка переменной секрета , содержащей ApiKey
- Выполнение принудительной отправки пакета с помощью
nuget push -ApiKey $(myNuGetApiKey)
илиdotnet nuget push --api-key $(myNuGetApiKey)
, если вы назвали переменнуюmyNuGetApiKey
Мой агент находится за веб-прокси. Настраивается ли NuGetAuthenticate nuget.exe, dotnet и MSBuild для использования прокси-сервера?
Нет. Хотя эта задача будет работать за веб-прокси агент настроен для использования, он не настраивает средства NuGet для использования прокси-сервера.
Для этого можно выполнить следующие действия:
Задайте переменную среды
http_proxy
и при необходимостиno_proxy
параметры прокси-сервера. Дополнительные сведения см. в переменных среды NuGet CLI. Эти переменные часто используются переменными, которые также могут использовать другие средства, отличные от NuGet (например, curl).осторожность:
Переменныеhttp_proxy
иno_proxy
зависят от регистра в операционных системах Linux и Mac и должны быть строчными. Попытка использовать переменную Azure Pipelines для задания переменной среды не будет работать, так как она будет преобразована в верхний регистр. Вместо этого задайте переменные среды на компьютере локального агента и перезапустите агент.Добавьте параметры прокси-сервера в файл nuget.config уровня пользователя вручную или с помощью
nuget config -set
, как описано в справочной документации nuget.config.осторожность:
Параметры прокси-сервера (например,http_proxy
) необходимо добавить в конфигурацию уровня пользователя. Они будут игнорироваться, если они указаны в другом nuget.config файле.
Как выполнить отладку, если у меня возникли проблемы с этой задачей?
Чтобы получить подробные журналы из конвейера, добавьте переменную конвейера system.debug
и задайте значение true
.
Как работает эта задача?
Эта задача устанавливает поставщик учетных данных Azure Artifacts в каталог подключаемых модулей NuGet, если он еще не установлен. Затем он задает переменные среды, такие как VSS_NUGET_URI_PREFIXES
и VSS_NUGET_ACCESSTOKEN
для настройки поставщика учетных данных. Эти переменные остаются заданными для времени существования задания. При восстановлении или отправке пакетов средство NuGet выполняет поставщик учетных данных, который использует указанные выше переменные, чтобы определить, следует ли возвращать учетные данные обратно в средство.
Дополнительные сведения см. в документации по поставщику учетных данных.
Мой конвейер должен получить доступ к веб-каналу в другом проекте
Если конвейер выполняется в другом проекте, отличном от проекта, на котором размещен веб-канал, необходимо настроить другой проект, чтобы предоставить доступ на чтение и запись службе сборки. Дополнительные сведения см. в разрешениях пакета в Azure Pipelines.
Будет ли это работать для запусков конвейера, которые активируются из внешней вилки?
Нет. Запуски конвейера, которые активируются из внешней вилки, не имеют доступа к соответствующим секретам для проверки подлинности внутреннего веб-канала. Таким образом, задача проверки подлинности будет успешно выполнена, но последующие задачи, требующие проверки подлинности (например, push-отправка Nuget), завершаются ошибкой в строках: ##[error]The nuget command failed with exit code(1) and error(Response status code does not indicate success: 500 (Internal Server Error - VS800075: The project with id 'vstfs:///Classification/TeamProject/341ec244-e856-40ad-845c-af31c33c2152' does not exist, or you do not have permission to access it. (DevOps Activity ID: C12C19DC-642C-469A-8F58-C89F2D81FEA7)).
После объединения запроса на вытягивание в источник, а затем конвейер, активироваемый из этого события, будет правильно проходить проверку подлинности.
Я обновлен с NuGetAuthenticateV0 на NuGetAuthenticateV1, и теперь моя команда dotnet завершается ошибкой с 401
Если вы обновляете nuGetAuthenticateV0 до NuGetAuthenticateV1 и получите ошибку при выполнении команды dotnet, найдите сообщение It was not possible to find any compatible framework version
из журналов. Для пользователей dotnet NuGetAuthenticateV1 требуется .NET 6 вместо .NET Core 2.1, который требуется в NuGetAuthenticateV0 и больше не поддерживается. Чтобы устранить проблему, используйте задачу UseDotNet@2 перед командой dotnet для установки .NET 6.
- task: UseDotNet@2
displayName: Use .NET 6 SDK
inputs:
packageType: sdk
version: 6.x
Примеры
Восстановление и отправка пакетов NuGet в организации
Если все используемые веб-каналы Артефактов Azure находятся в той же организации, что и конвейер, можно использовать задачу NuGetAuthenticate без указания входных данных. Для веб-каналов с областью действия проекта, которые находятся в другом проекте, отличных от того, где выполняется конвейер, необходимо вручную предоставить проекту и каналу доступ к службе сборки проекта конвейера.
nuget.config
<configuration>
<packageSources>
<!--
Any Azure Artifacts feeds within your organization will automatically be authenticated. Both dev.azure.com and visualstudio.com domains are supported.
Project scoped feed URL includes the project, organization scoped feed URL does not.
-->
<add key="MyProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/nuget/v3/index.json" />
<add key="MyProjectFeed2" value="https://{organization}.pkgs.visualstudio.com/{project}/_packaging/{feed}/nuget/v3/index.json" />
<add key="MyOtherProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed@view}/nuget/v3/index.json" />
<add key="MyOrganizationFeed1" value="https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/nuget/v3/index.json" />
</packageSources>
</configuration>
Чтобы использовать подключение службы, укажите подключение службы в nuGetServiceConnections
входных данных для задачи проверки подлинности NuGet. Затем можно ссылаться на подключение службы с -ApiKey AzureArtifacts
в задаче.
nuget.exe
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: NuGetToolInstaller@1 # Optional if nuget.exe >= 4.8.5385 is already on the path
inputs:
versionSpec: '*'
checkLatest: true
- script: nuget restore
# ...
- script: nuget push -ApiKey AzureArtifacts -Source "MyProjectFeed1" MyProject.*.nupkg
dotnet
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: UseDotNet@2 # Optional if the .NET Core SDK is already installed
- script: dotnet restore
# ...
- script: dotnet nuget push --api-key AzureArtifacts --source https://pkgs.dev.azure.com/{organization}/_packaging/{feed1}/nuget/v3/index.json MyProject.*.nupkg
В приведенных выше примерах OtherOrganizationFeedConnection
и ThirdPartyRepositoryConnection
— это имена подключений службы NuGet , настроенных и авторизованных для использования в конвейере, а также URL-адреса, соответствующие nuget.config
или аргументу командной строки.
URL-адрес источника пакета, указывающий на веб-канал артефактов Azure, может или не содержать проект. URL-адрес веб-канала с областью проекта должен содержать проект, а URL-адрес веб-канала с областью организации не должен содержать проект. Дополнительные сведения о веб-каналах с областью действия проекта.
Восстановление и отправка пакетов NuGet за пределами организации
Если вы используете веб-каналы Azure Artifacts из другой организации или используете сторонний репозиторий пакетов, необходимо настроить подключения службы NuGet и указать их в входных данных nuGetServiceConnections
.
Веб-каналы в организации Azure Artifacts также будут автоматически проходить проверку подлинности.
nuget.config
<configuration>
<packageSources>
<!-- Any Azure Artifacts feeds within your organization will automatically be authenticated -->
<add key="MyProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/nuget/v3/index.json" />
<add key="MyOrganizationFeed" value="https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/nuget/v3/index.json" />
<!-- Any package source listed here whose URL matches the URL of a service connection in nuGetServiceConnections will also be authenticated.
The key name here does not need to match the name of the service connection. -->
<add key="OtherOrganizationFeed" value="https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/nuget/v3/index.json" />
<add key="ThirdPartyRepository" value="https://{thirdPartyRepository}/index.json" />
</packageSources>
</configuration>
nuget.exe
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: NuGetToolInstaller@1 # Optional if nuget.exe >= 4.8.5385 is already on the path
inputs:
versionSpec: '*'
checkLatest: true
- script: nuget restore
# ...
- script: nuget push -ApiKey AzureArtifacts -Source "MyProjectFeed1" MyProject.*.nupkg
dotnet
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: UseDotNet@2 # Optional if the .NET Core SDK is already installed
- script: dotnet restore
# ...
- script: dotnet nuget push --api-key AzureArtifacts --source "MyProjectFeed1" MyProject.*.nupkg
OtherOrganizationFeedConnection
и ThirdPartyRepositoryConnection
— это имена подключений службы NuGet , настроенные и авторизованные для использования в конвейере, а также URL-адреса, соответствующие nuget.config или аргументу командной строки.
URL-адрес источника пакета, указывающий на веб-канал артефактов Azure, может или не содержать проект. URL-адрес веб-канала с областью проекта должен содержать проект, а URL-адрес веб-канала с областью организации не должен содержать проект. Дополнительные сведения о веб-каналах с областью действия проекта.
Требования
Требование | Описание |
---|---|
Типы конвейеров | YAML, классическая сборка, классический выпуск |
Выполняется в | Агент, DeploymentGroup |
требования | Никакой |
возможностей | Эта задача не удовлетворяет требованиям к последующим задачам в задании. |
ограничения команд | Любой |
переменные settable | Любой |
Версия агента | 2.144.0 или более поздней версии |
Категория задач | Пакет |
Требование | Описание |
---|---|
Типы конвейеров | YAML, классическая сборка, классический выпуск |
Выполняется в | Агент, DeploymentGroup |
требования | Никакой |
возможностей | Эта задача не удовлетворяет требованиям к последующим задачам в задании. |
ограничения команд | Любой |
переменные settable | Любой |
Версия агента | 2.120.0 или более поздней версии |
Категория задач | Пакет |