Partager via


Créer un hook de service pour Azure DevOps Services et TFS avec Trello

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Créez des cartes et des listes dans Trello en réponse aux événements d’Azure DevOps. Par exemple, lorsque le code est envoyé (push) ou qu’une build se produit.

Conditions préalables

Catégorie Exigences
Permissions - Membre du groupe Administrateurs de regroupements de projets . Les propriétaires de l’organisation sont automatiquement membres de ce groupe.
- Modifier les abonnements et Afficher les abonnements avec les autorisations définies sur Autoriser. Par défaut, seuls les administrateurs de projet disposent de ces autorisations. Pour accorder les autorisations à d’autres utilisateurs, vous pouvez utiliser l’outil en ligne de commande ou l’API REST Security.
Outils Trello

Obtenir un jeton d’autorisation Trello

  1. Si vous n’avez pas de compte Trello, inscrivez-vous à Trello .

  2. Accédez à la page Autoriser Azure DevOps Services pour Trello, puis connectez-vous avec vos informations d’identification Trello.

  3. Autoriser Azure DevOps à utiliser votre compte Trello.

    autoriser Azure DevOps Services

  4. Copiez le jeton d’autorisation.

    jeton d’autorisation Trello

Créez une carte trello ou une liste à partir d’un événement Azure DevOps Services.

  1. Accédez à la page des webhooks de service de votre projet :

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

    page d’administration de projet

    Sélectionnez Créer un abonnement.

  2. Choisissez le service Trello.

    Page de service , Trello sélectionné

  3. Configurez l’événement Visual Studio déclencheur. Dans ce cas, nous allons faire en sorte que l'abonnement réponde lorsqu'un élément de travail est créé.

    page de configuration du déclencheur

  4. Configurez l’action que Trello prendra en réponse au déclencheur : créez une carte ou une liste.

    page de configuration d’action

    Vous pouvez utiliser des marqueurs de position pour insérer du contenu de l'événement dans le nom et la description des cartes ou des listes que l'abonnement crée. Par exemple, lorsque nous exécutons la notification de test, la carte qui est créée est nommée « Bogue #5 : Une nouvelle idée intéressante ! », car l’élément de travail de test est un bogue (ID=5) avec le titre « Une bonne idée ! ».

  5. Testez l'abonnement au service hook et terminez l'assistant.

    notification de test

Maintenant, c'est configuré. Accédez à Trello et voyez les cartes s’afficher.

Panneau d'accueil avec une carte pour Bug #5

Espaces réservés

Vous pouvez insérer des éléments de substitution dans le nom d'une liste ou dans le nom ou la description d'une carte à créer via votre abonnement. Lorsqu’une liste ou une carte est créée, les espaces réservés sont remplacés par des valeurs de l’événement déclenché. L’exemple que nous avons utilisé pour le nom de la carte dans cette page utilise :

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

Ainsi, lorsqu'un bug est créé avec l'ID 5 et le titre « Une super nouvelle idée ! », le nom de la carte est « Bug #5 : Une super nouvelle idée ! ».

La forme de base de l'espace réservé est {{resource.field}} où ressource est le nom de la ressource qui déclenche l'événement (élément de travail, build, etc.) et champ est un champ de la section ressource de l'événement, comme ID. Par conséquent, si l’abonnement concerne une build terminée, il peut s’agir de quelque chose comme

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

Où "build" est le nom de la ressource et de l'ID, et finishTime est le champ disponible dans cette ressource. Pour comprendre les types d’événements, les champs et les ressources disponibles à utiliser, examinez la référence des événements .

Champs d'élément de travail

Les champs de l'élément de travail apparaissent dans l'événement sous la forme d'un tableau de champ, comme dans cet exemple :

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

En travaillant directement à partir de la définition d’événement, nous aurions créé notre nom de carte comme cet exemple :

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

En guise de raccourci, vous pouvez référencer tous les champs dans les espaces de noms System ou Microsoft.Azure DevOps Services.Common comme s’ils étaient des champs de la ressource. Ainsi, {{workitem.fields["System.workItemType"]}} devient {{workitem.workItemType}}.

Expressions de remplacement

Ces espaces réservés utilisent une implémentation de gabarits handlebar qui est largement compatible avec Mustache. Certaines expressions utiles incluent

Type d’expression Exemples
expressions de base {{workitem.name}}
expressions de tableau {{pullRequest.reviewers.[0].displayName}}
sections Moustache {{#workitem.assignedTo}} Ce wi-fi est attribué {{/workitem.assignedTo}}
sections Moustache inversées {{^workitem.assignedTo}} Ce WI n'est pas attribué {{/workitem.assignedTo}}
assistants de bloc Handlebars par
if/else
unless
chaque
chemins Handlebars ...
this
Par exemple, {{../comment/id}} ou {{this/title}}
Commentaires de modèle {{!-- this is a handlebar comment --}}

Tarification

Azure DevOps ne facture pas l’intégration de l’infrastructure à des services externes. Consultez le site du service spécifique pour connaître les tarifs liés à leurs services.

Questions & réponses

Q : Puis-je créer des abonnements par programmation ?

R : Oui, consultez les détails ici.

Q : Puis-je obtenir plus d’informations sur Trello ?

R : Oui, trello.com.