Compartir a través de


Empaquetar y publicar una integración en Marketplace

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

En este artículo se explica cómo publicar la herramienta, el servicio o el producto que se integra con Azure DevOps en Visual Studio Marketplace. La publicación en Marketplace ayuda a los usuarios a detectar soluciones que amplían y mejoran su experiencia de Azure DevOps. Marketplace actúa como centro central para usuarios y equipos para buscar integraciones y extensiones.

Examine Marketplace para ver ejemplos de otras integraciones y extensiones.

Nota:

Para obtener información de empaquetado y publicación para extensiones, vea Package & Publish Extensions.

Prerrequisitos

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

Categoría Requisitos
Herramienta de empaquetado Instale la herramienta de empaquetado de extensiones (TFX). Ejecute npm install -g tfx-cli desde una ventana de comandos.
Permisos de imagen Asegúrese de tener los permisos adecuados para usar cualquier imagen, como iconos, logotipos, capturas de pantalla, etc.
Introducción a Marketplace Incluya un archivo completo overview.md para describir su anuncio en el Marketplace.
Icono de extensión Incluya un icono para la extensión que represente su integración, empresa u organización, al menos 128 x 128 píxeles de tamaño (PNG o JPEG).
Nombres de producto de Microsoft Use nombres completos para productos de Microsoft (por ejemplo, Azure DevOps en lugar de AzDO u otras abreviaturas).
Nombres de marca No use nombres de marca en el nombre de la extensión.

Recopilación de recursos necesarios

  • Al menos una captura de pantalla de la integración.
  • Dirección URL de llamada a acción o introducción para los usuarios.

Nota:

  • El término extension se usa en la documentación a la que se hace referencia. Las extensiones son otro tipo de elemento de Marketplace y comparten muchas similitudes con las integraciones.
  • ¿Necesita ayuda para gestionar su integración en el Marketplace? Contáctenos.

Creación de una cuenta de publicador

Todas las extensiones o integraciones, incluidas las de Microsoft, deben tener un publicador. Cualquier persona puede crear un publicador y publicar extensiones en él. También puede compartir el acceso del publicador con otros usuarios, como el equipo de desarrollo.

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

  2. Si no forma parte de un publicador existente, seleccione + Crear un publicador.
    Escriba un nombre de editor; el campo ID se rellena automáticamente en función de la entrada.

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

    Nota:

    • Asegúrese de que el nombre del editor tenga un máximo de 16 caracteres para caracteres multibyte.
    • Guarde el identificador del publicador: lo necesita en el archivo de manifiesto de la extensión.

    Si no se le pide que cree un publicador, desplácese hasta Publicar extensiones en Sitios relacionados.

    • Establezca un identificador de publicador único, como mycompany-myteam. Use este valor para el atributo publisher en el manifest.
    • Establezca un nombre para mostrar, como My Team.
  3. Revise el Contrato de publicador de Marketplace y, a continuación, seleccione Crear.

    Creación de publicador para la extensión

Después de crear el publicador, puede administrar elementos, aunque no aparecen elementos hasta que publique.

Organiza tu manifiesto y tus recursos

Para organizar el manifiesto y los recursos, siga estos pasos:

  1. Cree una home carpeta para almacenar los recursos necesarios.
  2. Cree una images carpeta para:
    • El logotipo de integración (128 x 128 píxeles)
    • Capturas de pantalla (1366x768 píxeles)
  3. Cree un overview.md archivo para describir la integración. Para obtener más información, consulte GitHub Flavored Markdown.
  4. Cree un archivo vss-integration.json, que es el archivo de manifiesto de su anuncio de Marketplace. Para obtener más información, consulte la referencia del manifiesto de extensión.

Completar el manifiesto de extensión

La publicación en Marketplace comienza con la creación de un archivo de manifiesto que define la integración y sus detalles clave de detección (capturas de pantalla, logotipos, contenido de información general). Esta información se usa para presentar la integración a los usuarios en Marketplace.

  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 las siguientes referencias:

Se requieren las siguientes propiedades:

Propiedad Descripción Notas
manifestVersion Número correspondiente a la versión del formato de manifiesto. debe ser 1.
IDENTIFICACIÓN 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.
Versión 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
nombre Nombre corto y fácil de leer de la extensión. Limitado a 200 caracteres. Ejemplo: "Fabrikam Agile Board Extension".
editor 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 & anteriores.
Objetivos 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),
    - Microsoft.TeamFoundation.Server (extensión que funciona con Azure DevOps Server),
    - Microsoft.VisualStudio.Services.Integration,
    - Microsoft.TeamFoundation.Server.Integration (integraciones que funcionan con Azure DevOps Server)

Las siguientes 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 "discurso de ascensor" de la extensión: un par de líneas para describir la extensión en el Marketplace y lograr 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 Arreglo de etiquetas de texto para ayudar a los usuarios a encontrar tu extensión. Ejemplos: agile, project management, task timer, etc.
capturas de pantalla 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.
contenido 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 admitan 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 - Son 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 - Enlace al que el usuario navega 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 pasar el ratón por encima.
branding 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 oscuros de personalización de marca, o claro para colores más claros de personalización de marca.

Entender la página de detalles

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

Captura de pantalla que muestra la tarjeta de detalles de la extensión en Visual Studio Marketplace.

Advertencia

Establezca el atributo public en false o omítalo para evitar que su integración sea visible para todos los usuarios de Marketplace antes de que esté listo.

Empaquetar el manifiesto y los recursos

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

Instale o actualice la CLI multiplataforma para Azure DevOps (tfx-cli) mediante npm:

npm i -g tfx-cli

Empaquetar la integración en un archivo .vsix

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

Nota:

Incremente la versión de la extensión o la integración con cada actualización.
Si no ha actualizado la versión en el manifiesto, use el --rev-version modificador de línea de comandos. Este modificador incrementa automáticamente el número de versión de parche y guarda la nueva versión en tu manifiesto.

Publicación de la integración en Marketplace

Una vez empaquetada la extensión, puede subirla al Marketplace bajo un editor. 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 subida de una 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. Para que sea visible para otros usuarios, debe compartir la extensión.

Nota:

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

Comparte tu integración

Antes de instalar una integración en una organización de Azure DevOps, compártala con esa organización. El uso compartido es necesario para el desarrollo y las pruebas, ya que es la única manera de ejecutar una integración durante estas fases.

Para compartir una integración, siga estos pasos:

  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.

Actualización de un elemento

Para actualizar una extensión que ya ha publicado, siga estos pasos:

Sugerencia

Actualice la extensión en lugar de quitarla y volver a cargarla. Se recomienda mantener dos extensiones: publisher.extension, pública en Marketplace para clientes y publisher.extension-dev, privada, compartida solo con su organización para desarrollo y pruebas. No necesita dos copias del código fuente, solo tiene que mantener archivos de manifiesto independientes para cada extensión. Al empaquetar, proporcione el archivo de manifiesto adecuado a la herramienta tfx-cli. Para obtener más información, consulte Comandos de extensión de TFX.

  1. Seleccione la extensión en la lista de elementos mostrados.
  2. Haga clic con el botón derecho y seleccione Actualizar para la versión de desarrollo, como publisher.extension-dev.
  3. Valide la extensión.
  4. Aplique las mismas actualizaciones a la versión de producción, como publisher.extension.
  5. Navegue hacia el archivo .vsix de su extensión y cárguelo.

Azure DevOps instala automáticamente la versión actualizada para todas las cuentas que ya tienen la extensión. Las nuevas instalaciones también reciben la versión más reciente.

Hacer que la integración sea pública

Para obtener información sobre cómo hacer que la integración sea visible para todos los usuarios, consulte Hacer que la descripción sea pública.