Publicación de paquetes NuGet desde la línea de comandos (dotnet)

Servicios de Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

En esta guía se explica cómo configurar el proyecto para publicar paquetes NuGet mediante la interfaz de la línea de comandos dotnet.

Prerrequisitos

Producto Requisitos
Azure DevOps - Una organización de Azure DevOps.
- Un proyecto de Azure DevOps .
- Una fuente de Azure Artifacts.
- Descargue e instale la versión .NET SDK9.0.200 o posterior.

Configuración del proveedor de credenciales de Azure Artifacts

Para autenticarse con la fuente, primero debe instalar el proveedor de credenciales de Azure Artifacts. Con el instalador de herramientas incluido con dotnet, puede instalar el proveedor de credenciales desde la CLI mediante el siguiente comando:

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool

Si el nuget.config a nivel de repositorio está configurado para usar solo orígenes de Azure Artifacts, ejecute el comando de instalación desde fuera de ese directorio o establezca explícitamente nuget.org como origen:

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --source https://api.nuget.org/v3/index.json

Opcionalmente, ancle la herramienta a una versión principal (por ejemplo, en imágenes de contenedor donde importa la reproducibilidad):

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --version 2.* --source https://api.nuget.org/v3/index.json

Primer uso

La primera vez que realice una operación que requiera autenticación, use uno de los métodos siguientes:

  1. Ejecute el comando con --interactive para que dotnet pueda pedir que inicie sesión. Este es el enfoque recomendado para la mayoría de los escenarios de desarrollo local.

Antes de ejecutar un comando interactivo, asegúrese de que el proyecto esté configurado y de que la fuente se agregue a nuget.config. Para obtener más información sobre la configuración, consulte configuración del proyecto.

Una vez que su proyecto esté configurado y conectado a su feed, vaya al directorio de su proyecto y ejecute:

dotnet restore --interactive

Este comando inicia sesión y adquiere un token de sesión. Una vez que el inicio de sesión se realiza correctamente, puede ejecutar comandos autenticados sin --interactive mientras el token de sesión almacenado en caché siga siendo válido. Para obtener más información, consulte Session token cache locations.

  1. En escenarios no interactivos, como contenedores de Docker y automatización personalizada, proporcione credenciales a través de variables de entorno.

En Azure Pipelines, use la tarea NuGetAuthenticate@1 para autenticarse en la fuente antes de ejecutar comandos como dotnet restore o dotnet nuget push. Consulte Restaurar paquetes NuGet con Azure Pipelines para obtener más información.

Crear una fuente

Si ya tiene una fuente, continúe con el paso siguiente. De lo contrario, siga las instrucciones siguientes para crear una nueva:

  1. Inicie sesión en Azure DevOps y vaya al proyecto.

  2. Seleccione Artefactos y, a continuación, Crear un feed.

  3. Introduzca un Nombre descriptivo para su canal y defina su Visibilidad (quién puede usar su canal). Especifique el ámbito de la fuente y, si desea incluir paquetes de orígenes públicos, active la casilla Incluir paquetes de orígenes públicos comunes .

  4. Seleccione Crear cuando haya terminado.

Conexión a una fuente

Antes de poder publicar paquetes en tu feed, debes autenticarte con Azure Artifacts. Siga las instrucciones siguientes para configurar su proyecto y autenticarse con su feed de datos:

  1. Inicie sesión en la organización de Azure DevOps y vaya al proyecto.

  2. Seleccione Artefactos y, a continuación, seleccione la fuente en el menú desplegable.

  3. Escoger Conéctese a la alimentación, y, a continuación, seleccione dotnet del NuGet a la izquierda.

  4. Cree un archivo nuget.config en la misma carpeta que el archivo csproj o sln. Copie el siguiente fragmento XML y péguelo en el nuevo archivo y reemplace los marcadores de posición por la información pertinente:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="<FEED_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
  </packageSources>
</configuration>
  1. Inicie sesión en el servidor de Azure DevOps y vaya al proyecto.

  2. Seleccione Artefactos y, a continuación, seleccione la fuente.

  3. Seleccione Conectar a la fuente y, a continuación, seleccione dotnet en el panel de navegación izquierdo.

  4. Siga las instrucciones de la sección Configuración del proyecto para conectarse a su fuente.

    Captura de pantalla que muestra cómo conectarse a una fuente con dotnet en Azure DevOps Server 2020 y 2022.

Publica paquetes en un feed de la misma organización

Utilice el siguiente comando para publicar un paquete en tu feed de datos. Reemplace los marcadores de posición por los valores devueltos adecuados:

dotnet nuget push --source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json --api-key <ANY_STRING> <PACKAGE_PATH> 

ejemplo:

dotnet nuget push --source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json --api-key AZ bin/MyPackage.5.0.2.nupkg

Nota

El parámetro api-key es necesario al publicar en un feed de Azure Artifacts, pero puede usar cualquier cadena como su valor.

Publicar paquetes en un feed en una organización diferente

Para publicar los paquetes NuGet en una fuente en otra organización de Azure DevOps, primero debe crear un token de acceso personal (PAT) en la organización de destino, agregar el nuevo origen del paquete al archivo de configuración y, a continuación, ejecutar el comando publish:

  1. Vaya a la organización que hospeda la fuente de destino y cree un token de acceso personal (PAT) con el ámbito Empaquetado>Lectura y escritura.

  2. Reemplace el marcador de posición <PERSONAL_ACCESS_TOKEN> por el token de acceso personal y, a continuación, ejecute el siguiente comando para agregar el origen del paquete al archivo de nuget.config. Asegúrese de que este archivo se almacena de forma segura y no está protegido en el control de código fuente.

    dotnet nuget add source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json --name <SOURCE_NAME> --username <USER_NAME> --password <PERSONAL_ACCESS_TOKEN> --configfile <PATH_TO_NUGET_CONFIG_FILE>
    
  3. Ejecute el siguiente comando para publicar el paquete:

    dotnet nuget push --source <SOURCE_NAME> --api-key <ANY_STRING> <PACKAGE_PATH>
    

ejemplo:

dotnet nuget add source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json --name MySource --username MyUserName --password MyPersonalAccessToken --configfile ./nuget.config

dotnet nuget push --source MySource --api-key AZ nupkgs/mypackage.1.1.0.nupkg

Nota

Si su organización usa un firewall o un servidor proxy, asegúrese de que se permiten las direcciones URL de dominio y las direcciones IP de Azure Artifacts .