【问题标题】:Github workflow excluding paths does not work排除路径的 Github 工作流不起作用
【发布时间】:2022-02-11 02:41:52
【问题描述】:

我无法让 Github 工作流功能排除路径以正常工作,并且在堆栈溢出时找不到类似的问题。最相似的案例是Github workflow does not trigger on push for path based filtering,但对我没有帮助。

我有以下 PR 的工作流程:

name: Build For PRs

on:
  pull_request:
    types: [opened, synchronize, ready_for_review]
    paths:
      - 'src/**'
      - '!src/abc/**'
      - '!src/def/**'
      - '!src/ghi/**'
      - '!src/docker-compose*.yml'
      - '!**.md'

我希望它在“src”下的任何文件发生更改时在 PR 上运行,除非其中一个否定过滤器匹配。

即使更改 .md 文件也会触发此 WF。如何实现上面的逻辑?

【问题讨论】:

  • 我怀疑这可能与您告知的 types 子类型和 paths 子类型有关。如果您删除 types 列表,它是否按预期工作?由于 github 操作在触发器上作为 OR 条件工作,因此工作流可能会因为 types 字段而不是 paths 字段而触发。
  • @jessehouwing 根据文档是正确的:docs.github.com/en/actions/using-workflows/…

标签: github continuous-integration github-actions


【解决方案1】:

问题是排除路径不能按您的设计要求工作。

当所有路径名都与paths-ignore 中的模式匹配时,工作流将不会运行,但如果您至少有一个不属于否定的文件 - 工作流仍将运行。

因此,无法按照您想要的方式通过此功能停止工作流 - 当至少 1 个文件属于排除列表时停止工作流。

如果您发现任何符合您的条件的文件,我建议您过滤更改的文件,然后停止工作流程,并改用https://github.com/tj-actions/changed-files/。 通过该操作,您将能够检查是否有任何文件符合您的标准,然后您只需停止工作流程。 不幸的是,它将启动完整的工作流程,创建一个运行器并自行执行工作流程。

【讨论】:

    猜你喜欢
    • 2013-09-23
    • 1970-01-01
    • 2016-05-01
    • 2021-07-25
    • 2021-08-05
    • 2013-07-06
    • 2018-10-17
    • 1970-01-01
    • 2014-12-27
    相关资源
    最近更新 更多