Criar um gancho de serviço para o Azure DevOps Services e o TFS com o Trello

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

Crie cartões e listas no Trello em resposta a eventos do Azure DevOps. Por exemplo, quando o código é enviado por push ou ocorre um build.

Pré-requisitos

Categoria Requisitos
Permissões - Membro do grupo "Administradores da Coleção de Projetos ". Os proprietários da organização são automaticamente membros desse grupo.
Permissões - Editar assinaturas e Exibir assinaturas definidas como Permitir. Por padrão, somente os administradores de projeto têm essas permissões. Para conceder as permissões a outros usuários, você pode usar a linha de comando ou a API REST de Segurança .
Ferramentas Trello

Obter um token de autorização do Trello

  1. Se você não tiver uma conta do Trello, inscreva-se no Trello.

  2. Acesse a página Autorizar o Azure DevOps Services para Trelloe entre com suas credenciais do Trello.

  3. Permitir que o Azure DevOps use sua conta do Trello.

    Permitir o Azure DevOps Services

  4. Copie o token de autorização.

    Token de autorização do Trello

Crie um cartão ou uma lista do Trello a partir de um evento do Azure DevOps Services.

  1. Vá para a página Service Hooks do projeto:

    https://{orgName}/{project_name}/_settings/serviceHooks

    página de administração do projeto

    Escolha Criar assinatura.

  2. Escolha o serviço trello.

    página de serviço Página de serviço: Trello selecionado

  3. Configure o evento de acionamento do Visual Studio. Nesse caso, vamos fazer com que a assinatura responda quando um item de trabalho for criado.

    Página de configuração do acionador

  4. Configure a ação que o Trello tomará em resposta ao gatilho – crie um cartão ou uma lista.

    página de configuração da Ação

    Você pode usar os espaços reservados para inserir conteúdo do evento no nome e na descrição dos cartões ou listas que a assinatura cria. Por exemplo, quando executamos a notificação de teste, o cartão que é criado é denominado "Bug nº 5: Uma ótima ideia nova!" porque o item de trabalho de teste é um bug (ID=5) com o título "Uma ótima ideia nova!".

  5. Teste a assinatura do gancho de serviço e finalize o assistente.

    Notificação de teste

Agora está configurado. Vá para Trello e veja as cartas aparecerem.

placa de boas-vindas com um cartão para o Bug nº 5

Espaços reservados

Você pode inserir os espaços reservados no nome de uma lista ou no nome ou descrição de um cartão a ser criado pela assinatura. Quando uma lista ou cartão for criado, os espaços reservados serão substituídos por valores do evento que foi gerado. O exemplo usado para o nome do cartão nesta página usa:

    {{workitem.workItemType}} #{{workitem.id}}: {{workitem.title}}

Portanto, quando um bug é criado com a ID 5 e o título "Alguma ótima ideia nova!", o nome do cartão é "Bug nº 5: Uma ótima ideia nova!".

A forma básica do espaço reservado é {{resource.field}} em que o recurso é o nome do recurso que gera o evento (item de trabalho, build, etc.) e o campo é um campo dentro da seção de recursos do evento, como a ID. Então, se a assinatura for para uma compilação concluída, ela pode ser algo como

    Build {{build.id}} completed at {{build.finishTime}}

Onde build é o nome do recurso e ID, finishTime são os campos disponíveis nesse recurso. Para entender os tipos de evento, os campos e os recursos disponíveis para uso, examine a referência de eventos .

Campos de item de trabalho

Campos de item de trabalho aparecem no evento na matriz de campos, como este exemplo:

    " fields": {
                " System.AreaPath": "Fabrikam-Fiber-Git", 
                " System.TeamProject": "Fabrikam-Fiber-Git", 
                " System.IterationPath": "Fabrikam-Fiber-Git", 
                " System.WorkItemType": "Product Backlog Item", 
                " System.State": "New", 
                " System.Reason": "New backlog item", 
                " System.CreatedDate": "2014-11-05T21:11:28.85Z", 
                " System.CreatedBy": "Normal Paulk", 
                " System.ChangedDate": "2014-11-05T21:11:29.23Z", 
                " System.ChangedBy": "Normal Paulk", 
                " System.Title": "Test PBI", 
                " Microsoft.Azure DevOps Services.Common.BacklogPriority": 999999999, 
                " WEF_6CB513B6E70E43499D9FC94E5BBFB784_Kanban.Column": "New"
           },

Trabalhando diretamente da definição do evento, teríamos criado nosso nome de cartão como mostrado neste exemplo:

    {{workitem.fields["System.workItemType"]}} #{{workitem.fields["System.id"]}: {{workitem.fields["System.title"]}}

Como atalho, você pode referenciar todos os campos nos namespaces System ou Microsoft.Azure DevOps Services.Common como se fossem campos do recurso. Então {{workitem.fields["System.workItemType"]}} se torna {{workitem.workItemType}}.

Expressões de espaço reservado

Esses espaços reservados usam a implementação dos modelos de handlebars que é amplamente compatível com Mustache. Algumas expressões úteis incluem

Tipo de expressão Exemplos
expressões básicas {{workitem.name}}
expressões de matriz {{pullRequest.reviewers.[0].displayName}}
seções Mustache {{#workitem.assignedTo}} Essa WI é atribuída {{/workitem.assignedTo}}
Seções Mustache invertidas {{^workitem.assignedTo}} Essa WI não é atribuída {{/workitem.assignedTo}}
Auxiliares de blocos de handlebars por
if/else
a menos que
a cada
Caminhos de handlebars ...
this
Por exemplo, {{../comment/id}} ou {{this/title}}
Comentários do modelo {{!-- this is a handlebar comment --}}

Precificação

O Azure DevOps não cobra pela estrutura para integração com serviços externos. Confira o site do serviço específico para obter preços relacionados aos seus serviços.

P & R

P: Posso criar assinaturas programaticamente?

R: Sim, veja os detalhes aqui.

P: Posso obter mais informações sobre Trello?

R: Sim, trello.com.