使用 Trello 为 Azure DevOps Services 和 TFS 创建服务挂钩

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

在 Trello 中创建卡片和列表以响应 Azure DevOps 中的事件。 例如,当代码被推送或发生构建时。

先决条件

类别 要求
权限 - 项目集合管理员组的成员。 组织所有者是此组的自动成员。
- 编辑订阅查看订阅权限设置为允许。 默认情况下,只有项目管理员才拥有这些权限。 若要向其他用户授予权限,可以使用命令行工具或 安全 REST API。
工具 Trello

获取 Trello 授权令牌

  1. 如果没有 Trello 帐户,请在 Trello注册。

  2. 转到 授权 Azure DevOps Services for Trello 页面,然后使用 Trello 凭据登录。

  3. 允许 Azure DevOps 使用 Trello 帐户。

    允许 Azure DevOps 服务

  4. 复制授权令牌。

    Trello 授权令牌

从 Azure DevOps Services 事件创建 Trello 卡或列表。

  1. 转到项目“服务挂钩”页:

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

    “项目管理”页

    选择创建订阅

  2. 选取 Trello 服务。

    服务页中,Trello 选择了

  3. 配置触发 Visual Studio 事件。 在这种情况下,我们将在创建工作项时让订阅做出响应。

    触发器配置页

  4. 设置 Trello 在触发时将采取的操作——创建卡片或列表。

    操作配置页面

    可以使用占位符将事件中的内容插入到订阅创建的卡片或列表的名称和说明中。 例如,当我们运行测试通知时,创建的卡片名为“Bug #5:一些伟大的新想法!”,因为测试工作项是一个 bug(ID=5),标题为“一些伟大的新想法!”

  5. 测试服务挂钩订阅并完成向导。

    测试通知

现在它已经设置好了。 转到 Trello,可看到卡片出现。

欢迎板,上有一张 Bug #5 的卡片

占位符

可以在列表名称或由您的订阅创建的卡片的名称或描述中插入占位符。 创建列表或卡片时,占位符将被引发的事件中的值替换。 我们在此页中用于卡片名称的示例使用:

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

因此,当使用 ID 5 创建 bug 并标题为“一些伟大的新想法!”时,卡片名称为“Bug #5:一些伟大的新想法!”。

占位符的基本形式是 {{resource.field}} 其中资源是引发事件(工作项、生成等)的资源的名称,字段是事件的资源部分内的字段,例如 ID。 因此,如果订阅适用于已完成的生成,则可能类似于

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

其中,build 是资源和 ID 的名称,而 finishTime 是此资源中可用的字段。 若要了解可用的事件类型、字段和资源,请查看 事件参考

工作项字段

工作项字段显示在字段数组的事件中,如以下示例所示:

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

根据事件定义,我们将会这样创建我们的卡片名称,如以下示例所示:

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

作为快捷方式,可以引用 System 或 Microsoft.Azure DevOps Services.Common 命名空间中的任何字段,就像它们是资源的字段一样。 因此,{{workitem.fields["System.workItemType"]}} 变得 {{workitem.workItemType}}

占位符表达式

这些占位符使用 Handlebars 模板 实现,该实现与 Mustache具有很高的兼容性。 一些有用的表达式包括

表达式的类型 例子
基本表达式 {{workitem.name}}
数组表达式 {{pullRequest.reviewers.[0].displayName}}
Mustache 部分 {{#workitem.assignedTo}} 此 WI 被分配 {{/workitem.assignedTo}}
Mustache 反转部分 {{^workitem.assignedTo}} 此 WI 未分配 {{/workitem.assignedTo}}
Handlebars 阻止帮助程序 替换为
如果/否则
unless
Handlebars 路径 ...
this
例如,{{../comment/id}}{{this/title}}
模板注释 {{!-- this is a handlebar comment --}}

定价

Azure DevOps 不收取与外部服务集成的框架费用。 查看特定服务的官方网站,获取与其服务相关的定价。

问题解答

问:是否可以以编程方式创建订阅?

答:是,请参阅此处的详细信息。

问:是否可以获取有关 Trello 的详细信息?

答:是,trello.com