Publicar paquetes

Cuando haya creado un paquete y tenga el archivo .nupkg a mano, ponerlo a disposición de otros desarrolladores, de forma pública o privada, es un proceso simple:

  • Los paquetes públicos se ponen a disposición de todos los desarrolladores de forma global a través de nuget.org, tal y como se describe en este artículo (requiere NuGet 4.1.0 y versiones posteriores).
  • Los paquetes privados están disponibles solo para un equipo u organización mediante su hospedaje, ya sea en un recurso compartido de archivos, un servidor privado de NuGet, Azure Artifacts o un repositorio de terceros como myget, ProGet, Nexus Repository o Artifactory. Para más información, vea la información general sobre el hospedaje de paquetes.

En este artículo se explica la publicación en nuget.org. Para obtener información sobre la publicación en Azure Artifacts, consulte el artículo relativo a la administración de paquetes.

Publicar en nuget.org

En nuget.org, debe iniciar sesión con una cuenta de Microsoft, con la que se le pedirá que registre la cuenta en nuget.org.

Ubicación de inicio de sesión de NuGet

Luego, puede cargar el paquete a través del portal web nuget.org, insertarlo en nuget.org desde la línea de comandos (se requiere nuget.exe 4.1.0 o versiones posteriores) o publicarlo como parte de un proceso de CI/CD a través de Azure DevOps Services, tal y como se describe en las secciones siguientes.

Portal web: use la pestaña Upload Package (Cargar paquete) en nuget.org

  1. Seleccione Upload (Cargar) en el menú superior de nuget.org y vaya a la ubicación del paquete.

    Cargar un paquete en nuget.org

  2. nuget.org le indica si el nombre del paquete está disponible. Si no es así, cambie el identificador del paquete en el proyecto, vuelva a generarlo e intente cargarlo de nuevo.

  3. Si el nombre del paquete está disponible, se abrirá una sección Verify (Comprobar) en nuget.org en la que puede revisar los metadatos del manifiesto del paquete. Si incluyó un archivo Léame en el paquete, consulte la versión preliminar para asegurarse de que todo el contenido se representa correctamente. Para cambiar cualquiera de los metadatos, modifique el proyecto (archivo de proyecto o archivo .nuspec), recompile, vuelva a crear el paquete y cárguelo de nuevo.

  4. Cuando toda la información está lista, seleccione el botón Submit (Enviar).

Línea de comandos

Para enviar paquetes a nuget.org, primero necesita una clave de API, que se crea en nuget.org. Tendrá que usar dotnet.exe (.NET Core), o bien nuget.exe v4.1.0 o una versión superior, que implementan los protocolos de NuGet necesarios. Para obtener más información, vea .NET Core, nuget.exe y Protocolos de NuGet.

Crear claves de API

  1. Inicie sesión en su cuenta de nuget.org o cree una cuenta si aún no tiene una.

    Para más información sobre cómo crear la cuenta, consulte Cuentas individuales.

  2. Seleccione el nombre de usuario (en la esquina superior derecha) y luego Claves de API.

  3. Seleccione Crear,proporcione un nombre para la clave y seleccione Seleccionar ámbitos Insertar. Escriba * en patrón global y, luego, seleccione Crear. (Vea a continuación más información sobre ámbitos).

  4. Cuando haya creado la clave, seleccione Copiar para recuperar la clave de acceso que va a necesitar en la CLI:

    Copia de la clave de API al Portapapeles

Advertencia

Mantenga siempre la clave de API en secreto. Trate la clave de API como una contraseña que permita a cualquier usuario administrar paquetes en su nombre. Debe eliminar o volver a generar la clave de API si se revela accidentalmente.

Importante

Guarde la clave en una ubicación segura porque después no se puede volver a copiar. Si vuelve a la página de clave de API, ha de volver a generar la clave para copiarla. También puede quitar la clave de API si ya no desea insertar paquetes.

El ámbito permite crear claves de API independientes con distintos fines. Cada clave tiene su plazo de expiración y su ámbito puede establecerse en paquetes específicos (o patrones globales). El ámbito de cada clave también se puede establecer en operaciones específicas: insertar nuevos paquetes y actualizaciones, insertar solo actualizaciones o quitar de la lista. A través del ámbito, puede crear claves de API para distintas personas que administran paquetes para su organización, de manera que solo tengan los permisos que necesitan. Para más información, consulte las claves de API con ámbito.

Publicar con dotnet nuget push

  1. Cambie a la carpeta que contiene el archivo .nupkg.

  2. Ejecute el comando siguiente; especifique el nombre del paquete (identificador único del paquete) y reemplace el valor de clave por su clave de API:

    dotnet nuget push AppLogger.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json
    
  3. dotnet muestra los resultados del proceso de publicación:

    info : Pushing AppLogger.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
    info :   PUT https://www.nuget.org/api/v2/package/
    info :   Created https://www.nuget.org/api/v2/package/ 12620ms
    info : Your package was pushed.
    

Vea dotnet nuget push.

Publicar con nuget push

  1. En un símbolo del sistema, ejecute el siguiente comando, reemplazando <your_API_key> por la clave obtenida en nuget.org:

    nuget setApiKey <your_API_key>
    

    Este comando almacena la clave de API en la configuración de NuGet para no tener que repetir este paso en el mismo equipo.

    Nota

    La clave de API no se utiliza para la autenticación con la fuente privada. Consulte el comando a fin de administrar las credenciales para la autenticación con el origen. Las claves de API se pueden obtener de los servidores de NuGet individuales. A fin de crear y administrar claves de API para nuget.org, consulte Creación de claves de API.

  2. Inserte el paquete en la galería de NuGet con el siguiente comando:

    nuget push YourPackage.nupkg -Source https://api.nuget.org/v3/index.json
    

Publicación de paquetes firmados

Para enviar paquetes firmados, primero debe registrar el certificado usado para firmar los paquetes.

Advertencia

nuget.org rechaza paquetes que no cumplan los requisitos del paquete firmado.

Validación e indexación de paquetes

Los paquetes insertados en nuget.org se someten a varias validaciones, como las comprobaciones de virus. (Todos los paquetes en nuget.org se examinan periódicamente).

Cuando el paquete haya aprobado todas las comprobaciones de validación, puede que tarde un poco en indexarse y en aparecer en los resultados de la búsqueda. Una vez finalizada la indexación, recibirá un correo electrónico en el que se le confirmará que el paquete se publicó correctamente. Si no se supera la comprobación de validación del paquete, la página de detalles del paquete se actualizará y mostrará el error correspondiente. Además, el usuario recibirá un correo electrónico en el que se le notificará este extremo.

La validación y la indexación del paquete suelen tardar menos de 15 minutos. Si la publicación del paquete tarda más de lo esperado, visite status.nuget.org para comprobar si nuget.org está experimentando alguna interrupción. Si todos los sistemas están operativos y el paquete no se ha publicado correctamente en una hora, inicie sesión en nuget.org y póngase en contacto con nosotros mediante el vínculo de contacto con el equipo de soporte técnico de la página del paquete.

Para ver el estado de un paquete, seleccione Manage packages (Administrar paquetes) con su nombre de cuenta en nuget.org. Recibirá un correo electrónico de confirmación al completar la validación.

Tenga en cuenta que es posible que el paquete tarde un poco en indexarse y en aparecer en los resultados de la búsqueda, donde otros usuarios pueden buscarlo. Durante este tiempo verá el siguiente mensaje en la página del paquete:

Mensaje que indica que todavía no se ha publicado un paquete

Azure DevOps Services (CI/CD)

Si inserta paquetes en nuget.org mediante Azure DevOps Services como parte del proceso de implementación/integración continua, debe usar nuget.exe 4.1 o una versión posterior en las tareas de NuGet. Encontrará información detallada en Using the latest NuGet in your build (Usar la última versión de NuGet en su compilación) (blog de Microsoft DevOps).

Administrar los propietarios de paquetes en nuget.org

Aunque el archivo .nuspec de cada paquete de NuGet define los autores del paquete, la galería de nuget.org no usa esos metadatos para definir la propiedad. En su lugar, nuget.org asigna la propiedad inicial a la persona que publica el paquete. Se trata del usuario con la sesión iniciada que cargó el paquete a través de la interfaz de usuario de nuget.org o los usuarios cuya clave de API se usó con nuget SetApiKey o nuget push.

Todos los propietarios de paquetes tienen permisos completos para el paquete, incluidas la incorporación y la eliminación de otros propietarios, así como la publicación de actualizaciones.

Para cambiar la propiedad de un paquete, haga lo siguiente:

  1. Inicie sesión en nuget.org con la cuenta del propietario actual del paquete.
  2. Seleccione su nombre de cuenta, elija Manage packages (Administrar paquetes) y expanda Published Packages (Paquetes publicados).
  3. Seleccione el paquete que quiere administrar y luego, a la derecha, elija Manage owners (Administrar propietarios).

Aquí tiene varias opciones:

  1. Quite cualquier propietario que aparezca en Current Owners (Propietarios actuales).
  2. Agregue un propietario en Add Owner (Agregar propietario); para ello, escriba el nombre de usuario del propietario y un mensaje y seleccione Add (Agregar). Esta acción envía un correo electrónico a ese nuevo copropietario con un vínculo de confirmación. Una vez confirmado, esa persona tiene permisos completos para agregar y quitar propietarios (mientras no esté confirmado, en la sección Current Owners (Propietarios actuales) esa persona aparece como ["pending approval" pendiente de aprobación]).
  3. Para transferir la propiedad (por ejemplo, si se modifica la propiedad o se publica un paquete con una cuenta incorrecta), agregue el nuevo propietario y, cuando este haya confirmado la propiedad, podrá quitarlo de la lista.

Para asignar la propiedad a una empresa o a un grupo, cree una cuenta de nuget.org con un alias de correo electrónico que se reenvíe a los miembros correctos del equipo. Por ejemplo, varios paquetes de Microsoft ASP.NET son propiedad de las cuentas microsoft y aspnet, que simplifican estos alias.

Recuperar la propiedad de un paquete

En ocasiones, puede que un paquete no tenga un propietario activo. Por ejemplo, el propietario original puede haber abandonado la compañía que genera el paquete, se han perdido las credenciales de nuget.org o ha habido errores anteriores en la galería que han dejado un paquete sin propietario.

Si es el propietario legítimo de un paquete y necesita volver a obtener la propiedad, use el formulario de contacto en nuget.org para explicar su situación al equipo de NuGet. Luego seguimos un proceso para comprobar que es el propietario del paquete. También intentamos localizar el propietario existente a través de la dirección URL del proyecto del paquete, Twitter, correo electrónico u otros medios. Pero si todo lo demás falla, podemos enviarle una nueva invitación para convertirse en propietario.