使用 Slack 为Azure DevOps创建服务挂钩

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

将消息发布到 Slack 以响应Azure DevOps组织中的事件,例如已完成的生成、代码更改、拉取请求、发布、工作项更改等。

注意

对于Azure DevOps Services,我们建议使用以下提供丰富功能的应用套件来与 Slack 集成。

适用于 Slack 的 Azure Boards 应用

适用于 Slack 的 Azure Boards 应用有助于轻松创建和监视 Slack 通道中的工作项。 用户可以使用斜杠命令创建工作项,或使用消息操作将通道中的对话转换为工作项。 用户还可以设置和管理订阅,以在创建或更新工作项时在其频道中获取通知。

适用于 Slack 的 Azure Pipelines 应用

适用于 Slack 的 Azure Pipelines 应用有助于轻松监视管道中的事件。 用户可以从应用设置和管理已完成的生成、发布、挂起审批等订阅,并在其频道中获取这些事件的通知。 用户还可以从其频道批准发布部署。

适用于 Slack 的 Azure Repos 应用

适用于 Slack 的 Azure Repos 应用有助于轻松监视存储库中的事件。 用户可以从应用设置和管理代码提交、PR 创建和 PR 更新等订阅,并在其频道中获取这些事件的通知。

在 Slack 中创建自定义应用

  1. 请参阅 Slack 文档,使用传入 Webhook 发送消息 ,以了解使用 WebHook 将信息推送到 Slack 通道的过程。

  2. 创建新的 Slack 应用Create slack app

  3. 激活传入的 Web 挂钩,并将新的 WebHook 添加到所需的工作区 incoming Web Hook

    toggle Web Hook

  4. 选择必须为其创建 Web 挂钩的通道

    create-Web Hook

  5. 复制 Web 挂钩 URL 并转到Azure DevOps

    copy Web Hook

在组织中创建服务挂钩订阅

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

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

    Project administration page

    选择“创建订阅”。

  2. 选择要在 Slack 频道中显示的事件类型。

    可以按特定方式筛选每个触发器。 例如,可以在请求请求所在的存储库、应用拉取 请求 的目标分支以及需要或受邀查看请求的团队成员上筛选创建触发器。

  3. 粘贴你创建的 Slack 集成中的 Web 挂钩 URL,然后选择“ 完成”。

    Action dialog box with the Web Hook URL.

  4. 现在,在项目中配置的事件发生时,团队的 Slack 频道中会显示一条通知。

    Screenshot showing a notification in a Slack channel.

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

    https://dev.azure.com/{orgName}/{project_name}/_apps/hub/ms.vss-servicehooks-web.manageServiceHooks-project

    Project administration page

    选择“创建订阅”。

  2. 选择要在 Slack 频道中显示的事件类型。

    可以按特定方式筛选每个触发器。 例如,可以在请求请求所在的存储库、应用拉取 请求 的目标分支以及需要或受邀查看请求的团队成员上筛选创建触发器。

  3. 粘贴你创建的 Slack 集成中的 Web 挂钩 URL,然后选择“ 完成”。

    ![具有 Web 挂钩 URL 的“操作”对话框]./media/slack/action.png)

  4. 现在,在项目中配置的事件发生时,团队的 Slack 频道中会显示一条通知。

    Screenshot that shows a notification in a Slack channel.

问题解答

问:为什么在配置触发器时,我没有拉取请求事件作为选项?

答:拉取请求仅适用于使用 Git 的项目。 如果项目使用 TFVC,则拉取事件触发器不可用,并且代码事件称为“签入代码”,而不是“已推送代码”。

问:如何获取多个事件以在 Slack 频道中显示?

答:为所需的每种类型的事件创建新订阅。 例如,如果想要在 Slack 频道中看到生成失败和新工作项,请创建另外两个订阅。