Compartir a través de


Publicación de una extensión Azure DevOps desde la línea de comandos

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

Use la CLI multiplataforma para Azure DevOps (tfx-cli) para publicar la extensión en Visual Studio Marketplace. Para obtener más información, consulte la información general de publicación, instalación y uso compartido.

Prerrequisitos

Categoría Requisitos
Herramientas CLI multiplataforma para Azure DevOps (tfx-cli) instalado a través de npm
Autenticación Un token de Microsoft Entra (recomendado) o un token de acceso personal (PAT) con ámbito de Marketplace (publish)
Publisher Una cuenta publisher configurada en Visual Studio Marketplace

Importante

Considere la posibilidad de usar los más seguros tokens de Microsoft Entra en lugar de los tokens de acceso personal de mayor riesgo. Para obtener más información, consulte Reducir el uso de PAT. Revise las instrucciones de autenticación para elegir el mecanismo de autenticación adecuado para sus necesidades.

Adquisición de la CLI multiplataforma para Azure DevOps

  1. Si no lo tiene, descargue e instale NodeJS. Durante la configuración, asegúrese de mantener seleccionado Agregar a PATH.

  2. Abra un símbolo del sistema y escriba .

Si ya tiene instalada la CLI de TFX, puede actualizar a la versión más reciente ejecutando .

Instalación de la CLI multiplataforma para Azure DevOps

npm install -g tfx-cli

Publicar con un token de Microsoft Entra como principal de servicio

Puede publicar una extensión como principal de servicio.

  1. Agregue la entidad de servicio como miembro a una cuenta de publicador. Obtenga el identificador de la entidad de servicio a través de la API REST iniciando sesión a través del CLI de Azure y consultando el perfil de la entidad de servicio:
  • Bash
  • PowerShell
az login --service-principal --username <appId> --password <password> --tenant <tenant-id>
# 499b84ac-1321-427f-aa17-267ca6975798 specifies azure devops as a resource
az rest -u https://app.vssps.visualstudio.com/_apis/profile/profiles/me --resource 499b84ac-1321-427f-aa17-267ca6975798

A continuación, use el identificador del paso anterior para agregar la entidad de servicio como miembro al publicador.

  1. Publique una extensión a través de la CLI de TFX mediante una entidad de servicio. Ejecute el siguiente comando de la CLI de TFX para usar su token de acceso:
tfx extension publish --publisher my-publisher --vsix my-publisher.my-extension-1.0.0.vsix --auth-type pat -t <ENTRA_TOKEN>

Publica con un token de acceso personal

Cree un token de acceso personal (PAT) con el ámbito de Marketplace (publicar).

Después de haber instalado tfx-cli y tener el PAT, empaqueta y publica tu extensión.

  1. Abra una ventana de comandos en el directorio raíz de su extensión.
  2. Ejecute el siguiente comando para publicar la extensión. Cuando se le solicite, escriba el token para autenticarse.
tfx extension publish --publisher <YOUR_PUBLISHER_ID> --manifest-js <YOUR_EXTENSION_MANIFEST> --share-with <ACCOUNT_NAME>

Posibles errores

Es posible que reciba el siguiente error si la extensión ya está publicada:

Failed Request: Internal Server Error(500) - Version number must increase each time an extension is published. Extension: fabrikam.my-extension  Current version: 0.1.9  Updated version: 0.1.9

Agregue la bandera para incrementar automáticamente la versión de parche de su extensión. Esta marca también guarda la nueva versión en el manifiesto.

Nota

Todas las opciones disponibles para están disponibles para el comando .

Ejemplo

C:\vso-team-calendar>tfx extension publish --publisher publishFabrikam --manifest-js fabrikam.config.js --share-with fabrikam --rev-version
Copyright Microsoft Corporation
> Personal access token:
Checking if this extension is already published
It is, update the extension
Waiting for server to validate extension package...
Sharing extension with fabrikam.

=== Completed operation: publish extension ===
 - Packaging: C:\vso-team-calendar\fabrikam.team-calendar-0.2.6.vsix
 - Publishing: success
 - Sharing: shared with fabrikam