通过 webhook 传递拉取请求状态和提交数据

Pass both pull request status and commit data via webhook

我正在致力于自动化 Jira 和 Github 之间的集成,其中工单根据拉取请求的状态/生命周期通过工作流转换其状态(进行中 -> 代码审查 -> 完成) .

已创建拉取请求:票据转换为代码审查状态
拉取请求已合并:工单转换为完成状态

我遇到的问题是如何为 Jira 自动化流程发送足够的数据。开发人员提交消息包括我正在寻找的票证 ID (git commit -m 'ID-22, <commit message here>),我还需要知道拉取请求数据以了解 PR 的状态。

为此配置 webhook 时,我选择接收拉取请求和推送的事件以发送到我的 Jira 自动化工作流程。

事件是单独发送的,这是主要问题,因为我需要这两个事件来应用工单自动化。例如,这是提交 webhook,它成功地从提交中找到了票证,但是缺少拉取请求数据,因此它无法采取任何行动。

下一个事件是拉取请求事件,它找不到票证,因为它在有效负载中缺少提交。

是否有我可以使用的事件,其中包含有关提交和 PR 的数据?如果可能的话,我宁愿避免设置机器人/服务器将它们合并在一起。
如果分支名称包含票证,我可以在技术上使拉取请求事件(单独)工作,但是这需要更改流程+很多时候拉取请求将包含多个票证的修复,分支名称策略也是如此 1:1。理想情况下,我想从提交消息中发现票证

感谢阅读!

我使用 GitHub APIs 的经验:提交和拉取请求彼此不关联。因此拉取请求事件没有任何提交的上下文,反之亦然。

话虽如此,它仍然可行:

使用“pull requests”事件,每当 pull request 本身有一个事件时触发,例如打开、同步(新提交)、准备好审查等

然后:

选项 1. 使用拉取请求信息,查询 GitHub API 以获取提交 信息: https://developer.github.com/v3/pulls/#list-commits-on-a-pull-request.

选项 2. 不仅让开发人员在他们的提交中提及工作 ID,还让他们在 PR 标题中提及工作 ID,这样你就不需要进行单独的 API 调用,因为 PR标题包含在拉取请求事件负载中 (https://developer.github.com/webhooks/event-payloads/#pull_request)