【问题标题】:Github workflow with multiple types of same event具有多种类型的同一事件的 Github 工作流程
【发布时间】:2023-01-07 08:48:18
【问题描述】:

我很难弄清楚触发不同事件类型的语法。

例如,以下在 secod pull_request 触发器上给我一个“重复的映射键”错误。

on:

  pull_request:
    types: [opened, reopened]
    branches:
      - main
      - develop
      
  pull_request:
    types [synchronize]
    branches:
      - main
      - develop
    paths: ['**.h', '**.cpp', '**.hpp', '**.yaml', '**CMakeLists.txt', '**Makefile', '**.spec', '**.py', '**Dockerfile', '**conanfile.txt']

我希望工作流在第一次打开(或重新打开)时始终运行,但随后当分支同步时,它应该只在更改为指定文件类型之一时运行。

为了澄清,我已经有了 on.push 事件挂钩,为了简洁起见,这里没有显示。

我相信我需要有一个 pull_request.synchronize 事件来处理更新。

在文档中找不到有关如何执行此操作的任何内容。我尝试将两个 pull_requests 触发器组合在一起,但随后出现“类型”键被复制的错误。

有任何想法吗?

【问题讨论】:

    标签: github-actions github-enterprise


    【解决方案1】:

    documentation 确实讨论了基于多个事件的触发,但不是同一类型的多个事件,因此尚不完全清楚这是否可能(除了验证错误)。

    要完成这项工作,您需要定义三种不同的工作流,一种具有每种不同类型的事件及其过滤器,另一种具有使用 workflow_call 事件的可重用工作流。

    #workflow-1
    on:
      pull_request:
        types: [opened, reopened]
        branches:
          - main
          - develop
    
    jobs:
      job:
        uses: ./.github/workflows/workflow-3.yml
    
    #workflow-2
    on:
      pull_request:
        types: [synchronize]
        branches:
          - main
          - develop
        paths: ['**.h', '**.cpp', '**.hpp', '**.yaml', '**CMakeLists.txt', '**Makefile', '**.spec', '**.py', '**Dockerfile', '**conanfile.txt']
    
    jobs:
      job:
        uses: ./.github/workflows/workflow-3.yml
    
    #workflow-3
    on:
      workflow_call:
    
    jobs:
      job:
        steps:
          - run: do stuff
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      • 2021-05-28
      相关资源
      最近更新 更多