From 2d139e512b8aeee2233e739d0fffd47f9cab9db9 Mon Sep 17 00:00:00 2001 From: Josh Mock Date: Thu, 2 Nov 2023 11:16:39 -0500 Subject: [PATCH] Improve unit test path filtering rules (#2052) * Improve path-filtering rules on unit test action See docs about how jobs that are skipped still report "success", which is necessary for jobs that are required to succeed based on branch protection rules. https://docs.github.com/en/actions/using-jobs/using-conditions-to-control-job-execution * Code must be checked out for paths-filter to run * Only run on default pull request events Defaults are that it will run when a PR is opened, reopened, or synchronized (new commits pushed). --- .github/workflows/nodejs.yml | 47 ++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 4fe2b1236..92d2ca72b 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -2,31 +2,36 @@ name: Node CI on: - push: - paths-ignore: - - '**/*.md' - - '**/*.asciidoc' - - '**/*.txt' - - 'docs/**' - - '.ci/**' - - '.buildkite/**' - - 'scripts/**' - - 'catalog-info.yaml' - pull_request: - paths-ignore: - - '**/*.md' - - '**/*.asciidoc' - - '**/*.txt' - - 'docs/**' - - '.ci/**' - - '.buildkite/**' - - 'scripts/**' - - 'catalog-info.yaml' + pull_request: {} jobs: + paths-filter: + name: Detect files changed + runs-on: ubuntu-latest + outputs: + skip: '${{ steps.changes.outputs.skip }}' + steps: + - uses: actions/checkout@v4 + - uses: dorny/paths-filter/@v2.11.1 + id: changes + with: + filters: | + skip: + - '**/*.md' + - '**/*.asciidoc' + - '**/*.txt' + - 'docs/**' + - '.ci/**' + - '.buildkite/**' + - 'scripts/**' + - 'catalog-info.yaml' + test: name: Test runs-on: ${{ matrix.os }} + needs: paths-filter + # only run if files not in `skip` filter were changed + if: needs.paths-filter.outputs.skip != 'true' strategy: fail-fast: false @@ -35,7 +40,7 @@ jobs: os: [ubuntu-latest, windows-latest, macOS-latest] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3