Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅在合并PR时触发Github操作_Git_Github_Github Actions - Fatal编程技术网

仅在合并PR时触发Github操作

仅在合并PR时触发Github操作,git,github,github-actions,Git,Github,Github Actions,我有一个github操作yaml文件,如下所示: name: Test deployment on: pull_request: branches: - master jobs: deploy: runs-on: ubuntu-18.04 steps: - name: Random name run: date 当我将PR从分支提升到masterbranch时,Github操作被触发。因此,我将YAML更新为: name: Tes

我有一个github操作yaml文件,如下所示:

name: Test deployment
on:
  pull_request:
    branches:
    - master

jobs:
  deploy:
    runs-on: ubuntu-18.04
    steps:
    - name: Random name
      run: date

当我将PR从分支提升到
master
branch时,
Github操作
被触发。因此,我将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操作中是否存在执行此操作的选项)

我自己没有尝试过,但我认为它可能会起作用,因为我注意到这是自动合并操作,必须在合并PR之前检查PR是否已批准

试着对这个动作做出反应

on
  pull_request_review:
    types:
      - submitted

然后从有效负载中获取一个名为
review.state
,它应该具有值
approved
。我在这里看到了它的作用

没有拉请求合并事件

你能得到的最接近的东西是订阅
push
事件,因为合并的PR总是会创建一个推送事件到它被合并到的分支

如果您只关心主控<代码>的PRs,则可以指定:

on:
  push:
    branches:
      - master
您可以做的另一件事是分别对每个步骤进行筛选

      - name: Do something
        if: github.event_name == 'pull_request' && github.event.action == 'closed' && github.event.pull_request.merged == true
        run: ...

虽然拉取请求没有特定的
merged
类型,但是在上有一个
merged
标志。这允许您仅对合并运行操作,而不是对目标分支的所有推送

假设我们希望对
main
分支的任何合并运行操作,这将允许执行以下操作:

关于:
拉拽请求:
分支机构:
-主要
类型:[已关闭]
工作:
我的行动:
如果:${github.event.pull_request.merged}
运行于:。。。

合并前,您是如何检查PR是否至少获得了一家的批准的?