如果分支已更新特定目录中的文件,则运行 github 操作

Dzm*_*sky 5 continuous-integration github github-actions

文件结构:

apps
-- app-1
-- app-2
libs
-- lib-1
-- lib-2
Run Code Online (Sandbox Code Playgroud)

我们有一些测试,仅当文件在lib-2. 我尝试过做

on:
  push:
    paths:
      - 'libs/lib-2/**'
Run Code Online (Sandbox Code Playgroud)

但它仅lib-2在提交中推送文件时运行测试,但如果此后推送了其他文件,则它不会运行。想象一下,测试失败了lib-2,然后开发人员已经提交了lib-1下一次提交中的文件,并且测试不会针对之前的更改运行,并且 github 将认为检查成功。

如果某个目录中的文件在分支中发生更改,无论在哪个提交中,是否有办法运行操作?

Dzm*_*sky 6

感谢@guifalourd,我设计了一个解决方案。

name: 'UI-kit Tests'
on:
  pull_request:
    branches:
      - proto
      - develop
      - staging
      - master
jobs:
  filter-ui-kit:
    runs-on: ubuntu-latest
    name: Filter Ui kit
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Get changed files in the docs folder
        id: changed-files-specific
        uses: tj-actions/changed-files@v34
        with:
          files: libs/ui-kit/**

      - name: Run step if any file(s) in the docs folder change
        if: steps.changed-files-specific.outputs.any_changed == 'true'
        run: echo UI-kit is affected

      - name: Prevent from running
        if: steps.changed-files-specific.outputs.any_changed != 'true'
        run: exit 1
  test:
    timeout-minutes: 60
    runs-on: ubuntu-latest
    needs: [filter-ui-kit]
    steps:
      ... test actions goes there
Run Code Online (Sandbox Code Playgroud)