我有一个github actions yaml文件,如下所示:
name: Test deployment
on:
pull_request:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-18.04
steps:
- name: Random name
run: date
当我从一个分支向master
分支提交PR时,Github Action
会被触发。因此,我将YAML更新为:
name: Test deployment
on:
pull_request:
types:
- closed
branches:
- master
现在它是在我合并PR时触发的,而不是在提高PR时触发的。但是它也会在我关闭PR而不合并它时触发。
我在文档中没有找到类似merged
类型的内容
甚至我尝试的以下语法也不能按预期工作:
jobs:
...
if: github.event_name == 'pull_request' && github.event.action == 'closed'
有谁能帮我一下吗?我可以检查一下PR是否至少被一个审阅者批准吗?(我可以启用分支保护,但想知道是否有任何选项可以在github操作中启用)
6条答案
按热度按时间wbgh16ku1#
没有合并拉取请求事件。
最接近的方法是订阅
push
事件,因为合并后的PR总是会创建一个推送事件到它要合并到的分支。如果您只关心到
master
的PR,则可以指定:您可以做的另一件事是单独过滤每个步骤
(Edit,截至2022年)根据GitHub文档,现在应该可以通过以下方式实现:
e5njpo682#
虽然拉取请求没有特定的
merged
类型,但是在API响应上有一个merged
标志,这允许您只在合并时运行操作,而不是将所有操作都推送到目标分支。假设我们想要对
main
分支的任何合并执行一个操作,这将允许用户执行以下操作:92vpleto3#
我还没有尝试过,但我认为它可能会工作,因为我注意到这是自动合并行动,必须检查如果公关是批准之前,它合并它。
尝试对此操作作出React
然后从负载中获取名为
review.state
的内容,其值应为approved
。我在www.example.com中看到了它的实际应用https://github.com/pascalgn/automerge-action/blob/135f0bdb927d9807b5446f7ca9ecc2c51de03c4a/lib/api.js#L123nhjlsmyf4#
因此,我刚刚尝试了建议的解决方案,并查看输出,我看到一些奇怪的东西:工作流被触发,但我看到它 * 在被合并的分支上 * 运行,而不是在被合并的分支上(在我的例子中是
main
)。这有点令人不安,因为我的工作流程是构建和推送Docker图像。如果主节点上的更改 * 不是 * 正在合并的分支上的更改,该怎么办?在我看来,正在推送的图像可能并不完全是我所期望的?
我的工作流运行在这里:https://github.com/Axual/ksml/actions-您可以看到一个工作流在
main
上运行(由push
触发),另一个在分支上运行。是否有一种方法可以在PR合并产生的推送上运行工作流,或者类似的方法?
368yc8dk5#
Old question still popping up on Google. As per Github documentation found here: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#running-a-workflow-when-a-pull-request-is-approved
这是怎么做到的:
ac1kyiln6#
一旦合并了一个PR请求,它将提交一条消息“合并拉式请求〈您的PR等〉”。然后您可以将其与作业的if语句一起使用。