我正在尝试建立一个GitHub操作,如果PR处于可合并状态(通过所有检查等),它将自动合并PR。
我的设置看起来像这样:
name: Auto-Merge Pull Requests
on:
pull_request:
branches:
- master
types:
- opened
- reopened
jobs:
auto_merge:
name: auto_merge
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: ./.github/actions/auto_merge
在该操作中,我的基本计划是简单地轮询GitHub API,直到PR处于干净状态或发生一些超时。
但是,我发现这个GitHub动作本身就是在PR上创建一个待处理状态检查,只有在该动作停止运行时,它才会变为绿色。因此,从根本上我无法实现我想要的目标,因为操作本身会将PR置于不可合并的状态。
如何在不对PR创建新状态检查的情况下运行GitHub Action?我看了看所有文档,却找不到任何信息。
答案 0 :(得分:1)
我还没有亲自尝试过,但是GitHub上的pascalgn/automerge-action
可能值得使用,而不是推出自己的解决方案,因为它还支持许多额外的功能。
答案 1 :(得分:1)
您可以尝试在其他事件上运行您的工作流,例如仅在批准合并请求时才运行。这也不会添加status check
name: Auto-Merge Pull Requests
on:
pull_request_review:
types: [submitted]
branches:
- master
jobs:
auto_merge:
name: auto_merge
if: github.event.review.state == 'approved'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: ./.github/actions/auto_merge
答案 2 :(得分:0)
我的猜测是,使用on: pull_request
时无法避免状态检查。我建议尝试重新设计您的解决方案,以使用其他工作流触发器来执行合并本身。
在这种情况下,也许on: status
会很好用。
https://help.github.com/en/articles/events-that-trigger-workflows#status-event-status
根据API参考:
状态API允许外部服务以
error
,failure
,pending
或success
状态标记提交,然后在涉及那些提交的请求请求中反映出来
https://developer.github.com/v3/repos/statuses/
如果您的工作流基于status
事件运行,并检查所涉及的提交是否处于成功状态并包含在PR中,则该PR可能会被合并。