Empacotar e publicar uma integração com o Marketplace
Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019
Você tem uma ferramenta, serviço ou produto que se integra ao Azure DevOps ou ao Team Foundation Server (TFS)? Em caso afirmativo, ajude os usuários a encontrá-lo publicando-o no Visual Studio Marketplace. O Marketplace é um balcão único para indivíduos e equipas encontrarem ferramentas que ampliem e melhorem a experiência.
Navegue no Marketplace para ver exemplos de outras integrações e extensões.
Nota
Se você estiver procurando empacotamento e publicação de informações para extensões, confira Pacote & Publicar extensões.
Requisitos de publicação
A lista de requisitos a seguir deve ser atendida antes de publicar no Marketplace.
- Instale a ferramenta de empacotamento de extensão (TFX). Execute
npm install -g tfx-cli
a partir de um prompt de comando. - Certifique-se de que as permissões adequadas são concedidas para usar quaisquer imagens, por exemplo, ícones, logotipos, capturas de tela e assim por diante.
- Inclua um ficheiro completo
overview.md
para descrever o seu anúncio no Marketplace. - Inclua um ícone para sua extensão, que tem pelo menos 128x128 pixels de tamanho.
- Quando você se refere a produtos da Microsoft, use nomes completos no lugar de abreviaturas, por exemplo, Azure DevOps vs. AzDO ou - qualquer outra abreviação.
- Abster-se de usar nomes de marcas no nome da sua extensão.
Do que precisa
- Logótipo de 128x128 píxeis (formato PNG ou JPEG) que representa a sua integração, você próprio ou a sua empresa/organização
- Mínimo de uma captura de tela mostrando sua integração
- Call to action / URL de introdução (onde os usuários devem ir para começar a sua integração)
Passos
A publicação no Marketplace é um processo iterativo que começa com a criação de um arquivo de manifesto que define sua integração e as principais características de descoberta (como capturas de tela, logotipos e conteúdo de visão geral). Estas informações são utilizadas para apresentar a sua integração aos utilizadores no Marketplace, por exemplo:
Nota: O termo, extension
, é usado nas documentações mencionadas abaixo. As extensões são outro tipo de item do Marketplace e compartilham muitas semelhanças do ponto de vista da descoberta como integrações.
Criar um editor
Todas as extensões e integrações, incluindo extensões da Microsoft, têm um editor. Qualquer pessoa pode criar um editor e publicar extensões sob ele. Você também pode dar a outras pessoas acesso ao seu editor se uma equipe estiver desenvolvendo a extensão.
Um usuário é o proprietário do editor, normalmente o usuário que o criou. Você também pode compartilhar o editor com outros usuários.
Entre no Portal de Publicação do Visual Studio Marketplace.
Se ainda não for membro de um editor existente, + Criar um editor. Insira um nome no campo Nome do editor. O campo ID deve ser definido automaticamente com base no nome que você inseriu.
Nota
Anote o ID, pois você precisa defini-lo no arquivo de manifesto da sua extensão.
Se você não for solicitado a criar um editor, role para baixo até a parte inferior da página e selecione Publicar extensões abaixo de Sites relacionados.
- Especifique um identificador para o editor, por exemplo:
mycompany-myteam
. Esse identificador é usado como o valor para o atributo em seu arquivo de manifestopublisher
de extensão. - Especifique um nome para exibição para seu editor, por exemplo:
My Team
- Especifique um identificador para o editor, por exemplo:
Reveja o Contrato de Editor do Marketplace e, em seguida, selecione Criar.
Depois que o editor é criado, você é direcionado para gerenciar itens, mas não há itens.
Criar uma pasta para conter o manifesto do item e outros ativos
Antes de empacotar sua integração como uma extensão, você precisará criar uma home
pasta para conter alguns ativos necessários, dentro desta pasta:
- Crie uma pasta chamada
images
para conter:- Logótipo para a sua integração (128x128 pixels)
- Imagens (1366x768 pixels)
- Criar um arquivo chamado
overview.md
- Descreva a sua integração aqui
- Para saber mais sobre Markdown, consulte GitHub Flavored Markdown
- Criar um arquivo chamado
vss-integration.json
- Este ficheiro é o ficheiro de manifesto do seu anúncio do Marketplace, contém muitas propriedades para descrever a sua extensão no seu anúncio do Marketplace. Você pode navegar pela referência do manifesto de extensão aqui
Manifesto de extensão
Preencha seu
vss-integration.json
arquivo com o seguinte 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" } }
Atualize o JSON usando a seguinte referência:
Estas propriedades são necessárias:
Property | Description | Notas |
---|---|---|
manifestVersion | Um número correspondente à versão do formato de manifesto. | deverá ser 1 . |
ID | O identificador da extensão. | Th ID é uma cadeia de caracteres que deve ser exclusiva entre extensões do mesmo editor. 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 |
Designação | Um nome curto e legível por humanos da extensão. Limitado a 200 caracteres. | Exemplo: "Fabrikam Agile Board Extension" . |
editora | O identificador do editor. | 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 .Notas:
- 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. Para extensões direcionadas a versões anteriores do TFS:
- Se você vai compartilhar a extensão diretamente (ou seja, não por meio do Visual Studio Marketplace) com um cliente usando TFS <= 2018, use as seguintes categorias: Código, Planejar e rastrear, Compilar e liberar, Testar, Colaborar e Integrar. Se você precisar compartilhar ambos via Visual Studio Marketplace e diretamente com um cliente TFS <= 2018, precisará ter 2 pacotes de extensão. |
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 ou TFS),Microsoft.TeamFoundation.Server - (extensão que funciona com o TFS),- Microsoft.VisualStudio.Services.Integration (integrações que funcionam com o Azure DevOps ou TFS), - Microsoft.TeamFoundation.Server.Integration (integrações que funcionam com o TFS) |
Estas propriedades opcionais ajudam os usuários a descobrir e aprender sobre sua extensão:
Property | Description | Notas |
---|---|---|
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. |
Imagens | 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 podem 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 do crachá, a ser exibido no pairar. |
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. |
Página Detalhes
- 1 - Descrição
- 2 - ícone
- 3 - categorias
- 4 - Imagens
- 5 - conteúdo (detalhes)
- 6 - Ligações
- 7 - Branding
Empacote seu manifesto e ativos
Obter a ferramenta de pacote (tfx-cli)
Você pode instalar ou atualizar a CLI de plataforma cruzada para DevOps do Azure (tfx-cli) usando npm
o , um componente do Node.js, na sua linha de comando.
npm i -g tfx-cli
Empacote sua integração em um arquivo .vsix
tfx extension create --manifest-globs vss-extension.json
Nota
A versão de uma extensão/integração deve ser incrementada em cada atualização.
Se você não tiver incrementado sua extensão/integração no manifesto, deverá passar a opção de linha de --rev-version
comando. Isso incrementa o número da versão do patch da sua extensão e salva a nova versão no seu manifesto.
Publique sua integração no Marketplace
Assim que a extensão for empacotada, você poderá carregá-la no Marketplace sob um editor. O publisher
identificador especificado no arquivo de manifesto da extensão deve corresponder ao identificador do editor sob o qual a extensão é carregada.
No portal de gerenciamento, selecione seu editor no menu suspenso na parte superior da página.
Selecione Nova extensão>Azure DevOps.
Arraste e solte seu arquivo ou selecione-o para encontrar seu arquivo VSIX, que você criou na etapa de empacotamento anterior, e escolha Carregar.
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ê.
Neste ponto, sua extensão não está visível para nenhuma conta e não pode ser instalada até que você a compartilhe.
Nota
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 sua integração
Antes de instalar uma integração em uma organização no Azure DevOps ou TFS, você deve compartilhá-la com essa organização. O compartilhamento é um requisito durante o desenvolvimento e teste de uma integração, pois é a única maneira de executar uma integração.
Para compartilhar uma integração, execute as seguintes tarefas:
- Selecione uma integração na lista de itens exibidos
- Selecione o botão Compartilhar
- Especifique o nome da organização para tornar essa integração visível.
- Por exemplo, para tornar uma integração visível para a organização dev.azure.com/fabrikam-fiber-inc , especifique
fabrikam-fiber-inc
.
- Por exemplo, para tornar uma integração visível para a organização dev.azure.com/fabrikam-fiber-inc , especifique
Atualizar um item
Para alterar uma extensão já publicada, atualize-a.
Gorjeta
Recomendamos atualizar a extensão ao remover e recarregar. Também recomendamos ter duas extensões, por exemplo, publisher.extension
e publisher.extension-dev
.
Publisher.extension
é público no Marketplace, onde os clientes podem instalá-lo em suas organizações de DevOps do Azure. Publisher.extension-dev
é mantido privado no Marketplace e pode ser compartilhado com uma organização que você possui e controla.
Não é necessário manter duas cópias do código-fonte da extensão. Você pode manter dois arquivos de manifesto - um para cada extensão e durante o empacotamento da extensão você pode fornecer o respetivo arquivo de manifesto para a ferramenta tfx-cli. Para obter mais informações sobre os argumentos necessários para a ferramenta, consulte Comandos de extensão TFX.
- Selecione uma extensão na lista de itens exibidos.
- Clique com o botão direito do mouse e selecione Atualizar para o
publisher.extension-dev
, por exemplo. - Valide a sua extensão.
- Faça as mesmas atualizações para a versão de produção,
publisher.extension
por exemplo. - Navegue até o .vsix para sua extensão e carregue-a.
A versão atualizada da sua extensão é instalada automaticamente nas contas que já a têm instalada. Novas contas onde a extensão é instalada no futuro também recebem a versão mais recente.
Torne a sua integração pública (visível para todos)
Para obter informações sobre como tornar a sua integração pública, visite Tornar o seu anúncio público.