GIthub 操作:仅当特定目录发生更改时才触发作业

Kev*_*ata 2 github-actions

我创建了一个deployment.yaml,每次我推送到 master 分支时它都会构建我的代码。

这是我的项目结构。

project1
|-subproject1
|-subproject2
|-subproject3
Run Code Online (Sandbox Code Playgroud)

现在,我有 3 个不同的工作来构建每个子项目。

我可以以这种方式添加一个条件吗?如果我只在 subproject2 中进行更改,那么只有该特定作业应该运行。

我发现工作有一个if属性。

https://docs.github.com/en/actions/using-jobs/using-conditions-to-control-job-execution

所以,简而言之,我想写一些类似的东西......

jobs:
  deploy:
    if: old_subproject1 != new_subproject1

...
jobs:
  deploy:
    if: old_subproject2 != new_subproject2
...
jobs:
  deploy:
    if: old_subproject3 != new_subproject3
Run Code Online (Sandbox Code Playgroud)

提前致谢 !

小智 11

您可以使用路径过滤器来做到这一点:

on:
  push:
    branches:
      - 'master'
    paths:
      - 'project1/subproject1/**/*'
Run Code Online (Sandbox Code Playgroud)

每 3 份工作都做一次。

请参阅:https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#using-filters-to-target-specific-paths-for-pull-request-or-push-events