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

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

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

获取 Trello 授权令牌

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

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

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

    允许 Azure DevOps Services

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

其中生成是资源和 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}}

占位符表达式

这些占位符使用与 Mustache 基本兼容的句柄栏模板实现。 一些有用的表达式包括

表达式的类型 示例
基本表达式 {{workitem.name}}
数组表达式 {{pullRequest.reviewers.[0].displayName}}
胡须节 {{#workitem.assignedTo}} 分配此 WI {{/workitem.assignedTo}}
胡须倒排部分 {{^workitem.assignedTo}} 未分配此 WI {{/workitem.assignedTo}}
句柄栏阻止帮助程序 替换为
if/else
unless
句柄栏路径 ...
this
例如,{{../comment/id}}{{this/title}}
模板注释 {{!-- this is a handlebar comment --}}

定价

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

问题解答

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

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

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

答:是的, trello.com