NuGetAuthenticate@1: tarea autenticación de NuGet v1
Configure las herramientas de NuGet para autenticarse con Azure Artifacts y otros repositorios nuGet. Requiere NuGet >= 4.8.5385, dotnet >= 6 o MSBuild >= 15.8.166.59604.
Sintaxis
# 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.
Entradas
forceReinstallCredentialProvider
-
Reinstalar el proveedor de credenciales incluso si ya está instalado
boolean
. Valor predeterminado: false
.
Opcional. Vuelve a instalar el proveedor de credenciales en el directorio de perfil de usuario, incluso si ya está instalado. Si el proveedor de credenciales ya está instalado en el perfil de usuario, la tarea determina si se sobrescribe con el proveedor de credenciales proporcionado por la tarea. Esto puede actualizar (o potencialmente degradar) el proveedor de credenciales.
nuGetServiceConnections
-
Credenciales de conexión del servicio para fuentes fuera de esta organización
string
.
Opcional. Lista separada por comas de conexión de servicio NuGet nombres de fuentes fuera de esta organización o colección. En el caso de las fuentes de esta organización o colección, deje esto en blanco; Las credenciales de la compilación se usan automáticamente.
Opciones de control de tareas
Todas las tareas tienen opciones de control además de sus entradas de tarea. Para obtener más información, consulte Opciones de control y propiedades de tareas comunes.
Variables de salida
Ninguno.
Observaciones
Importante
Esta tarea solo es compatible con NuGet >= 4.8.0.5385, dotnet >= 6 o MSBuild >= 15.8.166.59604.
¿Qué herramientas son compatibles con esta tarea?
Esta tarea configura herramientas que admiten complementos multiplataforma de NuGet. Actualmente, las herramientas incluyen nuget.exe, dotnet y versiones recientes de MSBuild con compatibilidad integrada para restaurar paquetes NuGet.
En concreto, esta tarea configurará:
- nuget.exe (versión 4.8.5385 o posterior)
- dotnet / .NET 6 SDK o superior (una versión anterior de esta tarea, NuGetAuthenticateV0, requiere .NET Core 2.1, que ya no se admite)
- MSBuild (versión 15.8.166.59604 o posterior)
Se recomienda actualizar a la versión estable más reciente si encuentra algún problema.
Obtengo errores de "Se canceló una tarea" durante una restauración de paquetes. ¿Qué debo hacer?
Los problemas conocidos de NuGet y del proveedor de credenciales de Azure Artifacts pueden provocar este tipo de error y la actualización a la versión más reciente de NuGet puede ayudar.
Un problema conocido en algunas versiones de nuget/dotnet puede provocar este error, especialmente durante restauraciones de gran tamaño en máquinas restringidas de recursos. Este problema se ha corregido en NuGet 5.2y el SDK de .NET Core 2.1.80X y 2.2.40X. Si usa una versión anterior, pruebe a actualizar la versión de NuGet o dotnet. La tarea del instalador de herramientas de .NET Core se puede usar para instalar una versión más reciente del SDK de .NET Core.
También hay problemas conocidos con el proveedor de credenciales de Azure Artifacts (instalado por esta tarea), incluida artifacts-credprovider/#77 y artifacts-credprovider/#108. Si experimenta estos problemas, asegúrese de que tiene el proveedor de credenciales más reciente estableciendo el forceReinstallCredentialProvider
de entrada en true
en la tarea Autenticación de NuGet. Esta configuración también garantizará que el proveedor de credenciales se actualice automáticamente a medida que se resuelvan los problemas.
Si ninguno de los anteriores resuelve el problema, habilite de registro de diagnóstico de complementos e informe del problema para NuGet y el proveedor de credenciales de Azure Artifacts.
¿Cómo es esta tarea diferente de las tareas NuGetCommand y DotNetCoreCLI?
Esta tarea configura nuget.exe, dotnet y MSBuild para autenticarse con Azure Artifacts u otros repositorios que requieren autenticación. Después de ejecutar esta tarea, puede invocar las herramientas en un paso posterior (ya sea directamente o a través de un script) para restaurar o insertar paquetes.
Las tareas NuGetCommand y DotNetCoreCLI requieren el uso de la tarea para restaurar o insertar paquetes, ya que la autenticación en Azure Artifacts solo está configurada dentro de la duración de la tarea. Esto puede impedir que restaure o inserte paquetes dentro de su propio script. También puede impedir que pase argumentos de línea de comandos específicos a la herramienta.
La tarea NuGetAuthenticate es la manera recomendada de usar fuentes autenticadas dentro de una canalización.
¿Cuándo debo ejecutar esta tarea en mi canalización?
Esta tarea debe ejecutarse antes de usar una herramienta NuGet para restaurar o insertar paquetes en un origen de paquete autenticado, como Azure Artifacts. No hay ningún otro requisito de ordenación. Por ejemplo, esta tarea puede ejecutarse de forma segura antes o después de una tarea de instalador de herramientas de NuGet o .NET Core.
¿Cómo se configura un origen de paquete NuGet que usa ApiKey ("claves de API de NuGet"), como nuget.org?
Algunos orígenes de paquetes, como nuget.org usan claves de API para la autenticación al insertar paquetes, en lugar de username/password
credenciales. Debido a las limitaciones de NuGet, esta tarea no se puede usar para configurar una conexión de servicio NuGet que use una clave de API.
En lugar de:
- Configuración de una variable secreta de que contiene apiKey
- Realice la inserción de paquetes mediante
nuget push -ApiKey $(myNuGetApiKey)
odotnet nuget push --api-key $(myNuGetApiKey)
, suponiendo que se le ha asignado el nombremyNuGetApiKey
de la variable
Mi agente está detrás de un proxy web. ¿NuGetAuthenticate configurará nuget.exe, dotnet y MSBuild para usar mi proxy?
No. Aunque esta tarea funcionará detrás de un proxy web el agente se ha configurado para usar, no configura las herramientas de NuGet para usar el proxy.
Para ello, puede:
Establezca la variable de entorno
http_proxy
y, opcionalmente,no_proxy
en la configuración del proxy. Consulte variables de entorno de la CLI de NuGet para obtener más información. Estas variables se usan normalmente en variables que otras herramientas que no son de NuGet (por ejemplo, curl) también pueden usarse.precaución:
Las variableshttp_proxy
yno_proxy
distinguen mayúsculas de minúsculas en sistemas operativos Linux y Mac y deben estar en minúsculas. Si intenta usar una variable de Azure Pipelines para establecer la variable de entorno, no funcionará, ya que se convertirá en mayúsculas. En su lugar, establezca las variables de entorno en el equipo del agente autohospedado y reinicie el agente.Agregue la configuración de proxy al archivo de nuget.configde nivel de usuario de, ya sea manualmente o mediante
nuget config -set
tal como se describe en la documentación de de referencia denuget.config.precaución:
La configuración del proxy (comohttp_proxy
) debe agregarse a la configuración de nivel de usuario. Se omitirán si se especifican en un archivo nuget.config diferente.
¿Cómo puedo depurar si tengo problemas con esta tarea?
Para obtener registros detallados de la canalización, agregue una variable de canalización system.debug
y establezca en true
.
¿Cómo funciona esta tarea?
Esta tarea instala el proveedor de credenciales de Azure Artifacts en el directorio de complementos de NuGet si aún no está instalado. A continuación, establece variables de entorno como VSS_NUGET_URI_PREFIXES
y VSS_NUGET_ACCESSTOKEN
para configurar el proveedor de credenciales. Estas variables permanecen establecidas durante la vigencia del trabajo. Al restaurar o insertar paquetes, una herramienta NuGet ejecuta el proveedor de credenciales, que usa las variables anteriores para determinar si debe devolver las credenciales a la herramienta.
Consulte la documentación del proveedor de credenciales para obtener más información.
Mi canalización debe acceder a una fuente en un proyecto diferente
Si la canalización se ejecuta en un proyecto diferente al que hospeda la fuente, debe configurar el otro proyecto para conceder acceso de lectura y escritura al servicio de compilación. Consulte Permisos de paquete en Azure Pipelines para más información.
¿Funcionará este trabajo para las ejecuciones de canalización que se desencadenan desde una bifurcación externa?
No. Las ejecuciones de canalización que se desencadenan desde una bifurcación externa no tienen acceso a los secretos adecuados para la autenticación de fuente interna. Por lo tanto, parecerá que la tarea de autenticación se realiza correctamente, pero las tareas posteriores que requieren autenticación (como la inserción de Nuget) producirán un error a lo largo de las líneas de: ##[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)).
Después de combinar la solicitud de incorporación de cambios en el origen, una canalización que se desencadena desde ese evento se autenticará correctamente.
He actualizado de NuGetAuthenticateV0 a NuGetAuthenticateV1 y ahora se produce un error en el comando dotnet con 401
Si va a actualizar de NuGetAuthenticateV0 a NuGetAuthenticateV1 y recibe un error al ejecutar un comando dotnet, busque el mensaje It was not possible to find any compatible framework version
de los registros. Para los usuarios de dotnet, NuGetAuthenticateV1 requiere .NET 6 en lugar de .NET Core 2.1, que es necesario en NuGetAuthenticateV0 y ya no se admite. Para resolver el problema, use la tarea UseDotNet@2 antes del comando dotnet para instalar .NET 6.
- task: UseDotNet@2
displayName: Use .NET 6 SDK
inputs:
packageType: sdk
version: 6.x
Ejemplos
Restauración e inserción de paquetes NuGet en la organización
Si todas las fuentes de Azure Artifacts que usa están en la misma organización que la canalización, puede usar la tarea NuGetAuthenticate sin especificar ninguna entrada. En el caso de las fuentes con ámbito de proyecto que se encuentran en un proyecto diferente al en el que se ejecuta la canalización, debe proporcionar manualmente al proyecto y a la fuente acceso al servicio de compilación del proyecto de la canalización.
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>
Para usar una conexión de servicio, especifique la conexión de servicio en la entrada nuGetServiceConnections
para la tarea Autenticación de NuGet. A continuación, puede hacer referencia a la conexión de servicio con -ApiKey AzureArtifacts
en una tarea.
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
En los ejemplos anteriores, OtherOrganizationFeedConnection
y ThirdPartyRepositoryConnection
son los nombres de conexiones de servicio NuGet que se han configurado y autorizado para su uso en la canalización y tienen direcciones URL que coincidan con las de su argumento de línea de comandos o nuget.config
.
La dirección URL del origen del paquete que apunta a una fuente de Azure Artifacts puede contener o no el proyecto. Una dirección URL de una fuente con ámbito de proyecto debe contener el proyecto y una dirección URL para una fuente con ámbito de organización no debe contener el proyecto. Obtenga más información sobre fuentes con ámbito de proyecto.
Restauración e inserción de paquetes NuGet fuera de la organización
Si usa fuentes de Azure Artifacts de otra organización o usa un repositorio de paquetes autenticado de terceros, deberá configurar conexiones de servicio NuGet y especificarlas en la entrada de nuGetServiceConnections
.
Las fuentes de la organización de Azure Artifacts también se autenticarán automáticamente.
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
y ThirdPartyRepositoryConnection
son los nombres de conexiones de servicio NuGet que se han configurado y autorizado para su uso en la canalización y tienen direcciones URL que coinciden con las del argumento de línea de comandos o nuget.config.
La dirección URL del origen del paquete que apunta a una fuente de Azure Artifacts puede contener o no el proyecto. Una dirección URL de una fuente con ámbito de proyecto debe contener el proyecto y una dirección URL para una fuente con ámbito de organización no debe contener el proyecto. Obtenga más información sobre fuentes con ámbito de proyecto.
Requisitos
Requisito | Descripción |
---|---|
Tipos de canalización | YAML, compilación clásica, versión clásica |
Se ejecuta en | Agente, DeploymentGroup |
demandas | Ninguno |
funcionalidades de | Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo. |
restricciones de comandos | Cualquier |
variables settable | Cualquier |
Versión del agente | 2.144.0 o superior |
Categoría de tarea | Paquete |
Requisito | Descripción |
---|---|
Tipos de canalización | YAML, compilación clásica, versión clásica |
Se ejecuta en | Agente, DeploymentGroup |
demandas | Ninguno |
funcionalidades de | Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo. |
restricciones de comandos | Cualquier |
variables settable | Cualquier |
Versión del agente | 2.120.0 o superior |
Categoría de tarea | Paquete |