Github工作流,强制开发人员在合并前勾选PR(根据issue_ecomment事件通过状态检查)



我想创建一个工作流,在新打开的PR上用一个检查表发表评论,提醒开发人员去更新文档并失败状态检查,直到开发人员确认检查表。这是我的工作流程:

name: 'PR Tasks Completed Check'
on: 
pull_request:
types: [opened, edited, synchronize]
issues:
types: [opened, edited, deleted]
issue_comment:
types: [created, edited, deleted]
jobs:
review-checklist:
name: Make documentation comment on PR
runs-on: ubuntu-latest
steps:
- name: "Make comment (if necessary)"
uses: actions/github-script@v4
with:
script: |
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `### Review Checklist
- [ ] Documentation updated`,
})
require_checklist_c:
name: "Require Checklist"
runs-on: ubuntu-latest
needs: [review-checklist]
steps:
- uses: mheap/require-checklist-action@v1
with:
requireChecklist: false 
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

我遇到的问题是,即使要求检查表操作运行良好,并且在PR打开并进行文档注释后,状态检查失败,但当它由于人员选中该框后运行issue_ecomment而运行时,我可以在"操作"选项卡上看到工作流再次运行,但PR本身的状态检查仍处于失败状态。我是否无法通过基于issue_comment事件的状态检查?还是我根本误解了其他问题?

这是一个棘手的问题!issue_ecomment事件激活了您的工作流,但PR状态检查仍处于失败状态。断开连接的原因可能是issue_ecomment事件没有促使要求检查表的操作重新评估检查表的状态。

这里有一种思考方式:公关状态检查和issue_ecomment事件并不是天生联系在一起的。虽然你的工作流程确实被触发了,但状态检查可能不会更新,因为它的状态并不直接取决于触发的事件;事件启动工作流,而状态检查属于PR的";状态";。

要浏览此内容,您可能需要研究如何显式更新状态检查以响应issue_ecomment事件。或者,考虑使用直接影响PR状态检查的不同事件。

现在,这是一种方法,我没有你的用例的完整上下文,但我知道GitHub操作可能非常复杂,测试可能会变得乏味。幸运的是,GitHub市场上有一些清单构建器正是针对这种流程。其中一个,拉清单,我实际上已经发展了自己(公平的警告,这里有轻微的偏见!(。该工具和其他工具,如Pull Request Checklist Buddy,可以帮助您将阻塞检查表与条件组合在一起,极大地简化您的公关工作流程管理。如果你想避开GitHub Actions的麻烦,它们可能值得一看。

我希望这能给你一条更清晰的前进道路。调试工作流程可能很复杂,但只要有一点毅力,你就会成功!希望这能有所帮助。

最新更新