Partilhar via


Empacotar e publicar uma integração

Serviços de DevOps do Azure | Azure DevOps Server | Azure DevOps Server 2022

Publique a sua ferramenta, serviço ou produto que se integre com o Azure DevOps no Visual Studio Marketplace. O Marketplace é o ponto central para os utilizadores descobrirem integrações e extensões.

Observação

Este artigo aborda integrações (ferramentas e serviços externos). Para extensões (add-ons que correm dentro do Azure DevOps), veja Pacotes e publicação de extensões.

Pré-requisitos

A lista de requisitos a seguir deve ser atendida antes de publicar no Marketplace.

Categoria Requerimentos
Ferramenta de embalagem Instale a ferramenta de empacotamento de extensões (TFX). Execute npm install -g tfx-cli a partir de um prompt de comando.
Permissões de imagem Certifique-se de ter permissões adequadas para usar quaisquer imagens, como ícones, logotipos, capturas de tela e assim por diante.
Visão geral do mercado Inclua um ficheiro completo overview.md para descrever o seu anúncio no Marketplace.
Ícone de extensão Inclua um ícone para sua extensão que represente sua integração, empresa ou organização, com pelo menos 128x128 pixels de tamanho (PNG ou JPEG).
Nomes de produtos da Microsoft Use nomes completos para produtos Microsoft (por exemplo, Azure DevOps em vez de AzDO ou outras abreviaturas).
Nomes de marcas Não use nomes de marcas no nome da sua extensão.

Também precisa dos seguintes ativos:

  • Pelo menos uma captura de ecrã da tua integração
  • Um URL de chamada à ação ou de início para utilizadores

Criar uma editora

Todas as extensões ou integrações, incluindo as da Microsoft, devem ter um publicador. Qualquer pessoa pode criar um editor e publicar extensões sob ele. Você também pode compartilhar o acesso do editor com outros usuários, como sua equipe de desenvolvimento.

  1. Entre no Portal de Publicação do Visual Studio Marketplace.

  2. Se você não fizer parte de um editor existente, selecione + Criar um editor.
    Insira um nome de editor; o campo ID é preenchido automaticamente com base na sua entrada.

    Captura de ecrã que mostra o botão realçado, Criar publicador.

    Observação

    • Certifique-se de que o nome do editor esteja dentro de 16 caracteres para caracteres de múltiplos bytes.
    • Salve o ID do editor — você precisa dele no arquivo de manifesto da sua extensão.

    Se não lhe for pedido para criar um editor, desloque-se para Publicar extensões sob Sites relacionados.

    • Defina um identificador de editor exclusivo, como mycompany-myteam. Use esse valor para o publisher atributo em seu manifesto.
    • Defina um nome para exibição, como My Team.
  3. Reveja o Contrato de Editor do Marketplace e, em seguida, selecione Criar.

    Criar publicador para extensão

Depois de criar o editor, você pode gerenciar itens, embora nenhum item apareça até que você publique.

Estruturar a estrutura do projeto

Crie o seguinte layout de diretório:

home/
├── images/
│   ├── integration-logo.png    (128×128 px minimum)
│   └── screenshot.png          (1366×768 px)
├── overview.md
└── vss-integration.json
Ficheiro Purpose
overview.md Descrição da sua integração com sabor Markdown no GitHub.
vss-integration.json Manifesto do Marketplace. Consulte a referência do manifesto de extensão.

Criar o manifesto

Crie vss-integration.json com o seguinte conteúdo e depois atualize os valores para a sua integração:

{
    "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"
    }
}

Atualizar campos usando as seguintes referências:

As seguintes propriedades são necessárias:

Propriedade Descrição Observações
manifestVersion Um número correspondente à versão do formato de manifesto. deverá ser 1.
Identificação O identificador da extensão. O ID é uma cadeia de caracteres que deve ser exclusiva entre extensões do mesmo publicador. Deve começar com um caractere alfabético ou numérico e conter 'A' a 'Z', 'a' a 'z', '0' a '9' e '-' (hífen). Exemplo: sample-extension.
Versão Uma cadeia de caracteres especificando a versão de uma extensão. Deve estar no formato major.minor.patch, por exemplo 0.1.2 ou 1.0.0. Você também pode adicionar um quarto número para o seguinte formato: 0.1.2.3
Nome Um nome curto e de fácil leitura para a extensão. Limitado a 200 caracteres. Exemplo: "Fabrikam Agile Board Extension".
editora O identificador do publicador. Este identificador deve corresponder ao identificador sob o qual a extensão é publicada. Consulte Criar e gerenciar um editor.
Categorias Matriz de cadeias de caracteres que representam as categorias às quais sua extensão pertence. Pelo menos uma categoria deve ser fornecida e não há limite para quantas categorias você pode incluir. Valores válidos: Azure Repos, Azure Boards, Azure Pipelines, Azure Test Plans, e Azure Artifacts.

Observações:
    - Use a versão >=0.6.3 do tfx-cli se você estiver publicando a extensão programaticamente.
    - Se você estiver usando a extensão Tarefas de Extensão do Azure DevOps para publicar, verifique se sua versão é >= 1.2.8. Talvez seja necessário aprovar a atualização da extensão devido a alterações recentes no escopo.
    - As categorias mencionadas anteriormente estão nativamente presentes no Visual Studio Marketplace e no Azure DevOps Server 2019 & acima.
Objetivos Os produtos e serviços suportados pela sua integração ou extensão. Para obter mais informações, consulte destinos de instalação. Uma matriz de objetos, onde cada objeto tem um id campo que indica um dos seguintes:
    - Microsoft.VisualStudio.Services (extensões que funcionam com o Azure DevOps),
    - Microsoft.TeamFoundation.Server (extensão que funciona com o Azure DevOps Server),
    - Microsoft.VisualStudio.Services.Integration
    - Microsoft.TeamFoundation.Server.Integration (integrações que funcionam com o Azure DevOps Server)

As seguintes propriedades opcionais ajudam os usuários a descobrir e aprender sobre sua extensão:

Propriedade Descrição Observações
descrição Algumas frases descrevendo as extensões. Limitado a 200 caracteres. A descrição deve ser o elevator pitch da sua extensão - algumas linhas para descrever a sua extensão no Marketplace e fazer com que as pessoas queiram instalá-la. Veja o exemplo abaixo
ícones Dicionário de ícones que representam a extensão. Chaves válidas: default (128x128 pixels) do tipo BMP, GIF, EXIF, JPG, PNG e TIFF). Outras chaves, como large (512x512 pixels) podem ser suportadas no futuro. O valor de cada chave é o caminho para o arquivo de ícone na extensão
etiquetas Matriz de tags de cadeia de caracteres para ajudar os usuários a encontrar sua extensão. Exemplos: agile, project management, task timer, e assim por diante.
Capturas de ecrã Matriz de imagens que não puderam ser incluídas no seu conteúdo. As capturas de tela são mais valiosas quando apresentadas em seu conteúdo e devem ser usadas para ajudar a criar uma página de detalhes de mercado de qualidade para sua extensão. Use capturas de tela para imagens menos importantes que não aparecem no seu conteúdo. Cada imagem deve ter 1366x768 pixels. O path de cada item é o caminho para o arquivo na extensão.
Conteúdo Dicionário de arquivos de conteúdo que descrevem sua extensão para os usuários. Toda extensão deve incluir conteúdo sólido. É assim que você mostrará aos usuários o que sua extensão pode fazer. Torne-o rico, consumível e inclua capturas de tela quando necessário. Inclua um overview.md arquivo como sua parte de conteúdo base. Presume-se que cada arquivo esteja no formato GitHub Flavored Markdown . O path de cada item é o caminho para o arquivo Markdown na extensão. Chaves válidas: details. Outras chaves poderão vir a ser suportadas no futuro.
ligações Dicionário de links que ajudam os usuários a saber mais sobre sua extensão, obter suporte e mover. Chaves válidas: getstarted - primeiros passos, como configurar ou usar. learn - conteúdo mais profundo para ajudar os usuários a entender melhor sua extensão ou serviço. license - Contrato de licença de utilizador final. privacypolicy - Política de privacidade para uma extensão. support - obter ajuda e suporte para uma extensão. O valor de cada chave é um objeto com um uri campo, que é a URL absoluta do link
repositório Dicionário de propriedades que descrevem o repositório de código-fonte para a extensão Chaves válidas: type - Tipo de repositório. Exemplo: git. uri - URL absoluta do repositório.
crachás Matriz de links para emblemas de metadados externos, como TravisCI, Appveyor e assim por diante, dos sites de selos aprovados Chaves válidas: href - Link ao qual o usuário navega ao selecionar o selo. uri - O URL absoluto da imagem do selo a ser exibido. description - Descrição da insígnia, a ser exibida quando pairar o cursor.
Criação de Marcas Dicionário de propriedades relacionadas com a marca. Chaves válidas: color - cor primária da extensão ou editor; pode ser um hexadecimal (#ff00ff), RGB (rgb(100,200,50)), ou nomes de cores HTML suportados (azul). theme - complementa a cor; Use escuro para cores de marca escuras ou claro para cores de marca mais claras.

Advertência

Defina public para false ou omita até estar pronto para visibilidade pública.

Empacotar a integração

  1. Instale a ferramenta de embalagem se ainda não o fez:

    npm install -g tfx-cli
    
  2. Empacota a tua integração num ficheiro .vsix:

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

    Sugestão

    Use --rev-version para incrementar automaticamente o número da versão do patch.

Publicar no Marketplace

Assim que a extensão estiver empacotada, poderás carregá-la no Marketplace de um publicador. O identificador publisher especificado no arquivo de manifesto da extensão deve corresponder ao identificador do editor sob o qual a extensão é carregada.

  1. No portal de gestão, selecione o seu editor no menu suspenso na parte superior da página.

  2. Selecione Nova extensão>Azure DevOps.

    Captura de ecrã a mostrar o menu pendente da nova extensão e a seleção do Azure DevOps realçada.

  3. Arraste e solte seu arquivo ou selecione-o para encontrar seu arquivo VSIX, que você criou na etapa de empacotamento anterior, e escolha Carregar.

    Captura de ecrã a mostrar o Carregamento da nova extensão para o Azure DevOps.

    Após a validação rápida, sua extensão aparece na lista de extensões publicadas. Não se preocupe, a extensão só é visível para você.

    Captura de tela mostrando a extensão na lista de extensões publicadas.

Neste ponto, sua extensão não está visível para nenhuma conta. Para torná-lo visível para outras pessoas, você precisa compartilhar a extensão.

Observação

A Microsoft executa uma verificação de vírus em cada pacote de extensão novo e atualizado publicado. Até que a verificação esteja clara, não publicamos a extensão no Marketplace para uso público. Desta forma, também evitamos o aparecimento de conteúdo impróprio ou ofensivo nas páginas do Marketplace.

Partilhe a integração

Antes de poder instalar uma integração numa organização Azure DevOps, deve partilhá-la com essa organização.

  1. Selecione a sua integração da lista de itens apresentados.
  2. Selecione Partilhar.
  3. Insira o nome da organização (por exemplo, fabrikam-fiber-inc para dev.azure.com/fabrikam-fiber-inc).

Atualizar a integração

Para atualizar uma extensão já publicada, execute as seguintes etapas:

Sugestão

Atualize sua extensão em vez de removê-la e recarregá-la. Recomendamos manter duas extensões: publisher.extension, pública no Marketplace para clientes e publisher.extension-dev, privada, compartilhada apenas com sua organização para desenvolvimento e testes. Você não precisa de duas cópias do código-fonte, apenas mantenha arquivos de manifesto separados para cada extensão. Ao empacotar, forneça o arquivo de manifesto apropriado para a ferramenta tfx-cli. Para obter mais informações, consulte Comandos de extensão TFX.

  1. Selecione sua extensão na lista de itens exibidos.
  2. Clique com o botão direito do mouse e selecione Atualizar para a versão de desenvolvimento, como publisher.extension-dev.
  3. Valide a sua extensão.
  4. Aplique as mesmas atualizações à versão de produção, como publisher.extension.
  5. Navegue até ao ficheiro .vsix da extensão e carregue-o.

O Azure DevOps instala automaticamente a versão atualizada para todas as contas que já têm a extensão. Novas instalações também recebem a versão mais recente.

Tornar a integração pública

Para tornar a sua integração visível para todos os utilizadores do Marketplace, defina o public flag para true no seu manifesto e republique.

Para mais informações sobre as qualificações exigidas para as listagens públicas, consulte Tornar a sua extensão pública.