排除路径的 Github 工作流程不起作用

Th3*_*B0Y 6 continuous-integration github github-actions

我无法让 Github 工作流功能排除正常工作的路径,并且在堆栈溢出上找不到类似的问题。最相似的情况是Github 工作流程不会在推送基于路径的过滤时触发,但它对我没有帮助。

我的 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'
Run Code Online (Sandbox Code Playgroud)

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

即使更改 .md 文件也会触发此 WF。我怎样才能实现上面的逻辑呢?

Grz*_*ski 5

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

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

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

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