diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 52764a7cc..4af9f6caa 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -1,11 +1,9 @@ name: Linux CI -on: - pull_request: - paths-ignore: - - '**.md' - - '**.ipynb' - - 'myst.yml' +# Since this is a required check, specify paths-ignore in the check-paths job +# instead of under 'pull_request:'. Otherwise, the check is still required but +# never runs, and a maintainer must bypass the check in order to merge the PR. +on: [pull_request] # Every time you make a push to your PR, it cancel immediately the previous checks, # and start a new one. The other runner will be available more quickly to your PR. @@ -14,7 +12,26 @@ concurrency: cancel-in-progress: true jobs: + # Check paths to changed files to see if any are non-ignored. + check-paths: + runs-on: ubuntu-latest + outputs: + should_run: ${{ steps.filter.outputs.changes_detected }} + steps: + - name: Check modified files + id: filter + uses: dorny/paths-filter@v2 + with: + filters: | + ignored: + - '!**.md' + - '!**.ipynb' + - '!myst.yml' build: + # Only run build if relevant files have been modified in this PR. + needs: check-paths + if: needs.check-paths.outputs.should_run == 'true' + name: ${{ matrix.name }} ${{ matrix.build_type }} runs-on: ${{ matrix.os }}