Empaquetar y publicar una integración en Marketplace

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

¿Tiene una herramienta, servicio o producto que se integre con Azure DevOps o Team Foundation Server (TFS)? Si es así, ayude a los usuarios a encontrarlo publicándolo en Visual Studio Marketplace. Marketplace es una tienda única para usuarios y equipos que buscan herramientas que amplían y mejoran la experiencia.

Examine Marketplace para ver ejemplos de otras integraciones y extensiones.

Nota:

Si busca información de empaquetado y publicación para extensiones, consulte Package & Publish Extensions.

Requisitos de publicación

Se debe cumplir la siguiente lista de requisitos antes de publicar en Marketplace.

  • Instale la herramienta de empaquetado de extensiones (TFX). Ejecute npm install -g tfx-cli desde un símbolo del sistema.
  • Asegúrese de que se conceden los permisos adecuados para usar cualquier imagen, por ejemplo, iconos, logotipos, capturas de pantalla, etc.
  • Incluya un archivo completo overview.md para describir su descripción en Marketplace.
  • Incluya un icono para la extensión, que tiene al menos un tamaño de 128 x 128 píxeles.
  • Al hacer referencia a productos de Microsoft, use nombres completos en lugar de abreviaturas, por ejemplo, Azure DevOps frente a AzDO o , cualquier otra abreviatura.
  • Absténgase de usar nombres de marca en el nombre de la extensión.

Lo que necesita

  1. Logotipo de 128 x 128 píxeles (formato PNG o JPEG) que representa su integración, usted mismo o su empresa o organización
  2. Mínimo de una captura de pantalla que muestra la integración
  3. Llamada a la acción/dirección URL de introducción (donde los usuarios deben ir para empezar a trabajar con la integración)

Pasos

La publicación en Marketplace es un proceso iterativo que comienza con la creación de un archivo de manifiesto que define las características de integración y detección de claves (como capturas de pantalla, logotipos e información general). Esta información se usa para presentar la integración a los usuarios en Marketplace, por ejemplo:

example

Jenkins para Azure DevOps

Nota: El término , extensionse usa en las documentación a las que se hace referencia a continuación. Las extensiones son otro tipo de elemento de Marketplace y comparten muchas similitudes desde el punto de vista de la detección como integraciones.

¿Necesita ayuda para obtener la integración en Marketplace? Contáctenos. Y, sí, esta dirección de correo electrónico es supervisada por personas reales.

Crear un editor

Todas las extensiones e integraciones, incluidas las extensiones de Microsoft, tienen un publicador. Cualquier persona puede crear un publicador y publicar extensiones en él. También puede conceder a otras personas acceso a su publicador si un equipo está desarrollando la extensión.

Un usuario posee el publicador, normalmente el usuario que lo creó. También puede compartir el publicador con otros usuarios.

  1. Inicie sesión en el Portal de publicación de Visual Studio Marketplace.

  2. Si aún no es miembro de un publicador existente, + Crear un publicador. Escriba un nombre en el campo nombre del publicador. El campo id. debe establecerse automáticamente en función del nombre especificado.

    Captura de pantalla que muestra el botón resaltado Crear publicador.

    Nota:

    Anote el identificador, ya que debe establecerlo en el archivo de manifiesto de la extensión.

    Si no se le pide que cree un publicador, desplácese hacia abajo hasta la parte inferior de la página y seleccione Publicar extensiones debajo de Sitios relacionados.

    • Especifique un identificador para el publicador, por ejemplo: mycompany-myteam. Este identificador se usa como valor para el atributo en el publisher archivo de manifiesto de extensión.
    • Especifique un nombre para mostrar para el publicador, por ejemplo: My Team
  3. Revise el Contrato de publicador de Marketplace y, a continuación, seleccione Crear.

    Creación de publicador para la extensión

Una vez creado el publicador, se le dirigirá a administrar elementos, pero no hay ningún elemento.

Crear una carpeta para contener el manifiesto de elemento y otros recursos

Antes de empaquetar la integración como una extensión, deberá crear una home carpeta para contener algunos recursos necesarios, dentro de esta carpeta:

  1. Cree una carpeta denominada images para contener:
    • Logotipo de la integración (128 x 128 píxeles)
    • Capturas de pantalla (1366x768 píxeles)
  2. Creación de un archivo denominado overview.md
  3. Creación de un archivo denominado vss-integration.json
    • Este archivo es el archivo de manifiesto de la descripción de Marketplace, contiene muchas propiedades para describir la extensión en la descripción de Marketplace. Puede examinar la referencia del manifiesto de extensión aquí.

Manifiesto de extensión

  1. Rellene el vss-integration.json archivo con el siguiente json:

    {
        "manifestVersion": 1,
        "id": "myservice",
        "version": "1.0.0",
        "name": "My Service",
        "publisher": "mycompany",
        "description": "Awesome tools to help you and your team do great things everyday.",
        "targets": [
            {
                "id": "Microsoft.VisualStudio.Services.Integration"
            }
        ],    
        "icons": {
            "default": "images/service-logo.png"
        },
        "categories": [
            "Plan and track"
        ],
        "tags": [
            "working",
            "people person",
            "search"
        ],
        "screenshots": [
            {
                "path": "images/screen1.png"
            },
            {
                "path": "images/screen2.png"
            }
        ],
        "content": {
            "details": {
                "path": "overview.md"
            },
            "license": {
                "path": "fabrikam-license-terms.md"
            }
        },
        "links": {
            "getstarted": {
                "uri": "https://www.mycompany.com/help/getstarted"
            },
            "learn": {
                "uri": "https://www.mycompany.com/features"
            },
            "support": {
                "uri": "https://www.mycompany.com/support"
            }
        },
        "branding": {
            "color": "rgb(34, 34, 34)",
            "theme": "dark"
        }
    }
    
  2. Actualice el json mediante la siguiente referencia:

Estas propiedades son necesarias:

Propiedad Descripción Notas
manifestVersion Número correspondiente a la versión del formato de manifiesto. debe ser 1.
ID Identificador de la extensión. Th ID es una cadena que debe ser única entre las extensiones del mismo publicador. Debe comenzar con un carácter alfabético o numérico y contener "A" a "Z", "a" a "z", "0" a "9" y "-" (guion). Ejemplo: sample-extension.
version Cadena que especifica la versión de una extensión. Debe tener el formato major.minor.patch, por ejemplo 0.1.2 o 1.0.0. También puede agregar un cuarto número para el formato siguiente: 0.1.2.3
name Nombre corto legible de la extensión. Limitado a 200 caracteres. Ejemplo: "Fabrikam Agile Board Extension".
publisher Identificador del publicador. Este identificador debe coincidir con el identificador en el que se publica la extensión. Consulte Creación y administración de un publicador.
Categorías Matriz de cadenas que representan las categorías a las que pertenece la extensión. Se debe proporcionar al menos una categoría y no hay ningún límite para el número de categorías que puede incluir. Valores válidos: Azure Repos, Azure Boards, Azure Pipelines, Azure Test Plansy Azure Artifacts.

Notas:
    - Use la versión >=0.6.3 de tfx-cli si está publicando la extensión mediante programación.
    - Si usa la extensión Azure DevOps Extension Tasks para publicar, asegúrese de que su versión es >= 1.2.8. Es posible que tenga que aprobar la actualización de la extensión debido a cambios recientes en el ámbito.
    - Las categorías mencionadas anteriormente están presentes de forma nativa en Visual Studio Marketplace y Azure DevOps Server 2019 y versiones posteriores. Para las extensiones destinadas a versiones anteriores de TFS:
      - Si los clientes de TFS adquieren la extensión a través de Visual Studio Marketplace (no la galería local) en contexto conectado, use las categorías que se han indicado anteriormente.
      - Si va a compartir la extensión directamente (es decir, no a través de Visual Studio Marketplace) con un cliente con TFS <=2018, use las siguientes categorías en su lugar: Código, Plan y seguimiento, Compilación y versión, Prueba, Colaboración e Integración. Si necesita compartir ambos mediante Visual Studio Marketplace y directamente con un cliente de TFS <= 2018, tendría que tener 2 paquetes de extensión.
destinos Los productos y servicios compatibles con su integración o extensión. Para obtener más información, consulte Destinos de instalación. Matriz de objetos, donde cada objeto tiene un id campo que indica uno de los siguientes:
    - Microsoft.VisualStudio.Services(extensiones que funcionan con Azure DevOps o TFS),
    Microsoft.TeamFoundation.Server- (extensión que funciona con TFS),-
    Microsoft.VisualStudio.Services.Integration (integraciones que funcionan con Azure DevOps o TFS),
    - Microsoft.TeamFoundation.Server.Integration (integraciones que funcionan con TFS)

Estas propiedades opcionales ayudan a los usuarios a detectar y obtener información sobre la extensión:

Propiedad Descripción Notas
descripción Algunas oraciones que describen las extensiones. Limitado a 200 caracteres. La descripción debe ser el "lanzamiento de ascensor" de la extensión: un par de líneas para describir la extensión en Marketplace y hacer que las personas quieran instalarla. Vea el ejemplo siguiente
Iconos Diccionario de iconos que representan la extensión. Claves válidas: default (128 x 128 píxeles) de tipo BMP, GIF, EXIF, JPG, PNG y TIFF). En el futuro se pueden admitir otras claves como large (512 x 512 píxeles). El valor de cada clave es la ruta de acceso al archivo de icono de la extensión.
etiquetas Matriz de etiquetas de cadena para ayudar a los usuarios a encontrar la extensión. Ejemplos: agile, project management, task timer, etc.
Imágenes Matriz de imágenes que no se pudieron incluir en el contenido. Las capturas de pantalla son más valiosas cuando se incluyen en el contenido y deben usarse allí para ayudar a crear una página de detalles de mercado de calidad para la extensión. Use capturas de pantalla para imágenes menos importantes que no aparezcan en el contenido. Cada imagen debe ser de 1366 x 768 píxeles. El path de cada elemento es la ruta de acceso al archivo en la extensión.
content Diccionario de archivos de contenido que describen la extensión a los usuarios. Cada extensión debe incluir contenido sólido. Así es como mostrará a los usuarios lo que puede hacer la extensión. Haga que sea rico, consumible e incluya capturas de pantalla cuando sea necesario. Incluya un overview.md archivo como elemento de contenido base. Se supone que cada archivo está en formato Markdown con sabor a GitHub. El path de cada elemento es la ruta de acceso al archivo Markdown de la extensión. Claves válidas: details. Es posible que se admita otras claves en el futuro.
vínculos Diccionario de vínculos que ayudan a los usuarios a obtener más información sobre la extensión, obtener soporte técnico y mover. Claves válidas: getstarted los primeros pasos, cómo configurar o usar. learn : contenido más profundo para ayudar a los usuarios a comprender mejor su extensión o servicio. license - Contrato de licencia de usuario final. privacypolicy - directiva de privacidad para una extensión. support - obtener ayuda y soporte técnico para una extensión. El valor de cada clave es un objeto con un uri campo, que es la dirección URL absoluta del vínculo.
repositorio Diccionario de propiedades que describen el repositorio de código fuente de la extensión Claves válidas: type tipo de repositorio. Ejemplo: git. uri - Dirección URL absoluta del repositorio.
Insignias Matriz de vínculos a distintivos de metadatos externos, como TravisCI, Appveyor, etc., desde los sitios de distintivos aprobados Claves válidas: href - Vincular el usuario navega a al seleccionar el distintivo. uri : la dirección URL absoluta de la imagen de distintivo que se va a mostrar. description - Descripción del distintivo, que se mostrará al mantener el puntero.
Marca Diccionario de propiedades relacionadas con la marca. Claves válidas: : color color principal de la extensión o publicador; puede ser un hexadecimal (#ff00ff), RGB (rgb(100,200,50)) o nombres de color HTML admitidos (azul). theme- complementa el color; usa oscuro para colores de personalización de marca oscuros o claro para colores de personalización de marca más claros.

Details page

  • 1 - descripción
  • 2 - Icono
  • 3 - Categorías
  • 4- Capturas de pantalla
  • 5 - contenido (detalles)
  • 6 - enlaces
  • 7 - personalización de marca

tarjeta

Asegúrese de que el atributo "public" se establece en "false" (o no está establecido en absoluto) para evitar que la extensión o la integración sean visibles prematuramente para todos los usuarios de Marketplace.

Empaquetar el manifiesto y los recursos

Obtención de la herramienta de paquete (tfx-cli)

Puede instalar o actualizar la CLI multiplataforma para Azure DevOps (tfx-cli) mediante npm, un componente de Node.js, desde la línea de comandos.

npm i -g tfx-cli

Empaquetar la integración en un archivo .vsix

tfx extension create --manifest-globs vss-extension.json

Nota:

La versión de una extensión o integración debe incrementarse en cada actualización.
Si no ha incrementado la extensión o integración en el manifiesto, debe pasar el modificador de --rev-version línea de comandos. Esto incrementa el número de versión de revisión de la extensión y guarda la nueva versión en el manifiesto.

Publicación de la integración en Marketplace

Una vez empaquetada la extensión, puede cargarla en Marketplace en un publicador. El publisher identificador especificado en el archivo de manifiesto de la extensión debe coincidir con el identificador del publicador en el que se carga la extensión.

  1. En el portal de administración, seleccione el publicador en el menú desplegable de la parte superior de la página.

  2. Seleccione Nueva extensión>de Azure DevOps.

    Captura de pantalla que muestra el menú desplegable Nueva extensión y la selección de Azure DevOps resaltada.

  3. Arrastre y coloque el archivo o selecciónelo para buscar el archivo VSIX, que creó en el paso de empaquetado anterior y, a continuación, elija Cargar.

    Captura de pantalla que muestra la carga de la nueva extensión para Azure DevOps.

    Después de la validación rápida, la extensión aparece en la lista de extensiones publicadas. No se preocupe, la extensión solo es visible para usted.

    Captura de pantalla que muestra la extensión en la lista de extensiones publicadas.

En este momento, la extensión no es visible para ninguna cuenta y no se puede instalar hasta que la comparta.

Nota:

Microsoft ejecuta un examen de virus en cada paquete de extensión nuevo y actualizado publicado. Hasta que el examen esté claro, no publicamos la extensión en Marketplace para su uso público. De este modo, también evitamos exponer contenido inapropiado o ofensivo en las páginas de Marketplace.

Uso compartido de la integración

Para poder instalar una integración en una organización en Azure DevOps o TFS, debe compartirla con esa organización. El uso compartido es un requisito durante el desarrollo y las pruebas de una integración, ya que es la única manera de ejecutar una integración.

Para compartir una integración, realice las siguientes tareas:

  1. Selección de una integración en la lista de elementos mostrados
  2. Seleccione el botón Compartir.
  3. Especifique el nombre de la organización para que esta integración sea visible.
    • Por ejemplo, para que una integración sea visible para la organización de dev.azure.com/fabrikam-fiber-inc , especifique fabrikam-fiber-inc.

Actualizar un elemento

Para cambiar una extensión que ya está publicada, actualícela.

Sugerencia

Se recomienda actualizar la extensión a través de quitar y volver a cargar. También se recomienda tener dos extensiones, por ejemplo, publisher.extension y publisher.extension-dev. Publisher.extension es público en Marketplace, donde los clientes pueden instalarlo en sus organizaciones de Azure DevOps. Publisher.extension-dev se mantiene privado en Marketplace y se puede compartir con una organización que posee y controla. No es necesario mantener dos copias del código fuente de la extensión. Puede mantener dos archivos de manifiesto: uno para cada extensión y durante el empaquetado de la extensión puede proporcionar el archivo de manifiesto correspondiente a la herramienta tfx-cli. Para obtener más información sobre los argumentos necesarios para la herramienta, vea Comandos de extensión de TFX.

  1. Seleccione una extensión en la lista de elementos mostrados.
  2. Haga clic con el publisher.extension-devbotón derecho y seleccione Actualizar para , por ejemplo.
  3. Valide la extensión.
  4. Realice las mismas actualizaciones en la versión de producción, publisher.extension, por ejemplo.
  5. Vaya a .vsix para la extensión y cárguelo.

La versión actualizada de la extensión se instala automáticamente en las cuentas que ya lo tienen instalado. Las nuevas cuentas en las que se instala la extensión en el futuro también reciben la versión más reciente.

Hacer que la integración sea pública (visible para todos)

Para obtener información sobre cómo hacer pública la integración, visite Hacer que la descripción sea pública.