Criar um gancho de serviço para os Serviços de DevOps do Azure 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 uma compilação.

Obter um token de autorização do Trello

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

  2. Vá para a página Autorizar Serviços de DevOps do Azure para o Trello e entre com suas credenciais do Trello.

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

    Permitir Serviços de DevOps do Azure

  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 dos Serviços de DevOps do Azure.

  1. Vá para a página Ganchos de Serviço 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, Trello selecionado

  3. Configure o evento de disparo do Visual Studio. Nesse caso, teremos a resposta da assinatura quando um item de trabalho for criado.

    Página de configuração de gatilho

  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 espaços reservados para inserir conteúdo do evento no nome e na descrição dos cartões ou listas criados pela assinatura. Por exemplo, quando executamos a notificação de teste, o cartão que é criado é chamado de "Bug #5: Some great new idea!" porque o item de trabalho de teste é um bug (ID=5) com o título "Some great new idea!".

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

    Notificação de teste

Agora está configurado. Acesse o Trello e veja os cartões aparecerem.

Placa de boas-vindas com um cartão para o Bug #5

Espaços reservados

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

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

Então, quando um bug é criado com o ID 5 e o título "Some great new idea!", o nome do cartão é "Bug #5: Some great new idea!".

A forma básica do espaço reservado é {{resource.field}} onde resource é o nome do recurso que gera o evento (item de trabalho, compilação e assim por diante) e field é um campo dentro da seção de recursos do evento, como ID. Então, se a assinatura for para uma compilação concluída, 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 neste recurso. Para entender os tipos de eventos, campos e recursos disponíveis para uso, consulte a referência de eventos.

Campos de item de trabalho

Os 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 a partir da definição do evento, teríamos criado nosso nome de cartão como este exemplo:

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

Como atalho, você pode fazer referência a quaisquer campos nos namespaces System ou Microsoft.Azure DevOps Services.Common como se fossem campos do recurso. Portanto, {{workitem.fields["System.workItemType"]}} torna-se {{workitem.workItemType}}.

Expressões de espaço reservado

Esses espaços reservados usam uma implementação de modelos de guidão que é amplamente compatível com o Bigode. 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 de bigode {{#workitem.assignedTo}} Este WI é atribuído {{/workitem.assignedTo}}
Bigode Seções Invertidas {{^workitem.assignedTo}} Esta WI não está atribuída {{/workitem.assignedTo}}
Ajudantes de bloco de guidão por
se/mais
unless
a cada
Caminhos do guidão ...
this
Por exemplo, {{../comment/id}} ou {{this/title}}
Comentários do modelo {{!-- this is a handlebar comment --}}

Preços

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

Perguntas e Respostas

P: Posso criar assinaturas programaticamente?

R: Sim, veja detalhes aqui.

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

R: Sim, trello.com.