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
- Logotipo de 128 x 128 píxeles (formato PNG o JPEG) que representa su integración, usted mismo o su empresa o organización
- Mínimo de una captura de pantalla que muestra la integración
- 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:
Nota: El término , extension
se 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.
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.
Inicie sesión en el Portal de publicación de Visual Studio Marketplace.
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.
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 elpublisher
archivo de manifiesto de extensión. - Especifique un nombre para mostrar para el publicador, por ejemplo:
My Team
- Especifique un identificador para el publicador, por ejemplo:
Revise el Contrato de publicador de Marketplace y, a continuación, seleccione Crear.
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:
- Cree una carpeta denominada
images
para contener:- Logotipo de la integración (128 x 128 píxeles)
- Capturas de pantalla (1366x768 píxeles)
- Creación de un archivo denominado
overview.md
- Describir la integración aquí
- Para más información sobre Markdown, consulte GitHub Flavored Markdown.
- 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
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" } }
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 Plans y Azure Artifacts .Notas:
- 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 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
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.
En el portal de administración, seleccione el publicador en el menú desplegable de la parte superior de la página.
Seleccione Nueva extensión>de Azure DevOps.
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.
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.
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:
- Selección de una integración en la lista de elementos mostrados
- Seleccione el botón Compartir.
- 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
.
- Por ejemplo, para que una integración sea visible para la organización de dev.azure.com/fabrikam-fiber-inc , especifique
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.
- Seleccione una extensión en la lista de elementos mostrados.
- Haga clic con el
publisher.extension-dev
botón derecho y seleccione Actualizar para , por ejemplo. - Valide la extensión.
- Realice las mismas actualizaciones en la versión de producción,
publisher.extension
, por ejemplo. - 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.