Skip to content

Commit 065a5eb

Browse files
mpuszclaude
andcommitted
ci: a workflow edit runs that workflow, not the whole matrix
Every CI workflow filtered on `paths-ignore: docs/**`, which says nothing about `.github/workflows/**` - so touching one workflow definition started every build in the repository, and so did a README, an issue template, or a formatter config. `paths-ignore` cannot express the exception, since it takes no `!` negations. Each workflow now lists what it actually consumes. The lists are tailored to what each one runs: only Conan CI does `conan create`, so only it needs test_package/; the four matrix-driven workflows are the only readers of the job-matrix generator; Compile-time CI compiles the external corpus straight against the headers, so src/ alone. Documentation CI was missing inputs the published site is generated from: the snippets it embeds from example/, and the systems reference the mkdocs hook in scripts/ generates out of src/systems/include/. Dependency Review is scoped to the manifests GitHub's dependency graph understands here - pinned action versions and the Python requirements - and deliberately keeps running on any workflow edit, because those action pins are what it reviews. Formatting CI stays unfiltered on purpose: `pre-commit run --all-files` is what lints these very files, so it is the one gate a workflow edit must not skip. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent 27a70ff commit 065a5eb

11 files changed

Lines changed: 141 additions & 27 deletions

.github/workflows/ci-clang-tidy.yml

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,31 @@ on:
2626
push:
2727
branches:
2828
- "**"
29-
paths-ignore:
30-
- "docs/**"
29+
paths:
30+
- "src/**"
31+
- "test/**"
32+
- "example/**"
33+
- "cmake/**"
34+
- "CMakeLists.txt"
35+
- "conanfile.py"
36+
- ".clang-tidy"
37+
- ".github/generate-job-matrix.py"
38+
- ".github/job_matrix.py"
39+
- ".github/workflows/ci-clang-tidy.yml"
3140
pull_request:
3241
branches:
3342
- "**"
34-
paths-ignore:
35-
- "docs/**"
43+
paths:
44+
- "src/**"
45+
- "test/**"
46+
- "example/**"
47+
- "cmake/**"
48+
- "CMakeLists.txt"
49+
- "conanfile.py"
50+
- ".clang-tidy"
51+
- ".github/generate-job-matrix.py"
52+
- ".github/job_matrix.py"
53+
- ".github/workflows/ci-clang-tidy.yml"
3654
workflow_dispatch:
3755
inputs:
3856
matrix-seed:

.github/workflows/ci-compile-time.yml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,17 @@
5454
# and fail for reasons that say nothing about that branch.
5555
name: Compile-time CI
5656

57-
on: [push, pull_request]
57+
# The suite compiles its own corpus straight against the headers, so nothing else in this tree - not
58+
# the tests, not the build system - can move the instantiation counts.
59+
on:
60+
push:
61+
paths:
62+
- "src/**"
63+
- ".github/workflows/ci-compile-time.yml"
64+
pull_request:
65+
paths:
66+
- "src/**"
67+
- ".github/workflows/ci-compile-time.yml"
5868

5969
permissions:
6070
contents: read

.github/workflows/ci-conan.yml

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,29 @@ name: Conan CI
2424

2525
on:
2626
push:
27-
paths-ignore:
28-
- "docs/**"
27+
paths:
28+
- "src/**"
29+
- "test/**"
30+
- "example/**"
31+
- "test_package/**"
32+
- "cmake/**"
33+
- "CMakeLists.txt"
34+
- "conanfile.py"
35+
- ".github/generate-job-matrix.py"
36+
- ".github/job_matrix.py"
37+
- ".github/workflows/ci-conan.yml"
2938
pull_request:
30-
paths-ignore:
31-
- "docs/**"
39+
paths:
40+
- "src/**"
41+
- "test/**"
42+
- "example/**"
43+
- "test_package/**"
44+
- "cmake/**"
45+
- "CMakeLists.txt"
46+
- "conanfile.py"
47+
- ".github/generate-job-matrix.py"
48+
- ".github/job_matrix.py"
49+
- ".github/workflows/ci-conan.yml"
3250
workflow_dispatch:
3351
inputs:
3452
matrix-seed:

.github/workflows/ci-freestanding.yml

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,29 @@ on:
2626
push:
2727
branches:
2828
- "**"
29-
paths-ignore:
30-
- "docs/**"
29+
paths:
30+
- "src/**"
31+
- "test/**"
32+
- "example/**"
33+
- "cmake/**"
34+
- "CMakeLists.txt"
35+
- "conanfile.py"
36+
- ".github/generate-job-matrix.py"
37+
- ".github/job_matrix.py"
38+
- ".github/workflows/ci-freestanding.yml"
3139
pull_request:
3240
branches:
3341
- "**"
34-
paths-ignore:
35-
- "docs/**"
42+
paths:
43+
- "src/**"
44+
- "test/**"
45+
- "example/**"
46+
- "cmake/**"
47+
- "CMakeLists.txt"
48+
- "conanfile.py"
49+
- ".github/generate-job-matrix.py"
50+
- ".github/job_matrix.py"
51+
- ".github/workflows/ci-freestanding.yml"
3652
workflow_dispatch:
3753
inputs:
3854
matrix-seed:

.github/workflows/ci-sonarqube-cloud.yml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,15 @@ on:
2727
branches:
2828
- master
2929
- main
30-
paths-ignore:
31-
- "docs/**"
30+
paths:
31+
- "src/**"
32+
- "test/**"
33+
- "example/**"
34+
- "cmake/**"
35+
- "CMakeLists.txt"
36+
- "conanfile.py"
37+
- "sonar-project.properties"
38+
- ".github/workflows/ci-sonarqube-cloud.yml"
3239

3340
concurrency:
3441
group: ${{ github.workflow }}-${{ github.ref }}

.github/workflows/ci-test-package-cmake.yml

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,27 @@ on:
2626
push:
2727
branches:
2828
- "**"
29-
paths-ignore:
30-
- "docs/**"
31-
- "example/**"
32-
- "test/**"
29+
paths:
30+
- "src/**"
31+
- "test_package/**"
32+
- "cmake/**"
33+
- "CMakeLists.txt"
34+
- "conanfile.py"
35+
- ".github/generate-job-matrix.py"
36+
- ".github/job_matrix.py"
37+
- ".github/workflows/ci-test-package-cmake.yml"
3338
pull_request:
3439
branches:
3540
- "**"
36-
paths-ignore:
37-
- "docs/**"
38-
- "example/**"
39-
- "test/**"
41+
paths:
42+
- "src/**"
43+
- "test_package/**"
44+
- "cmake/**"
45+
- "CMakeLists.txt"
46+
- "conanfile.py"
47+
- ".github/generate-job-matrix.py"
48+
- ".github/job_matrix.py"
49+
- ".github/workflows/ci-test-package-cmake.yml"
4050
workflow_dispatch:
4151
inputs:
4252
matrix-seed:

.github/workflows/citation.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ on:
44
push:
55
paths:
66
- CITATION.cff
7+
- ".github/workflows/citation.yml"
78
pull_request:
89
paths:
910
- CITATION.cff
11+
- ".github/workflows/citation.yml"
1012

1113
permissions:
1214
contents: read

.github/workflows/codeql.yml

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,25 @@ name: "CodeQL"
1414
on:
1515
push:
1616
branches: ["master"]
17-
paths-ignore:
18-
- "docs/**"
17+
paths:
18+
- "src/**"
19+
- "test/**"
20+
- "example/**"
21+
- "cmake/**"
22+
- "CMakeLists.txt"
23+
- "conanfile.py"
24+
- ".github/workflows/codeql.yml"
1925
pull_request:
2026
# The branches below must be a subset of the branches above
2127
branches: ["master"]
22-
paths-ignore:
23-
- "docs/**"
28+
paths:
29+
- "src/**"
30+
- "test/**"
31+
- "example/**"
32+
- "cmake/**"
33+
- "CMakeLists.txt"
34+
- "conanfile.py"
35+
- ".github/workflows/codeql.yml"
2436

2537
concurrency:
2638
group: ${{ github.workflow }}-${{ github.ref }}

.github/workflows/codespaces-test.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ on:
3535
permissions:
3636
contents: read
3737

38+
concurrency:
39+
group: ${{ github.workflow }}-${{ github.ref }}
40+
cancel-in-progress: true
41+
3842
jobs:
3943
test-devcontainer:
4044
runs-on: ubuntu-latest

.github/workflows/dependency-review.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,20 @@ name: Dependency Review
2525
on:
2626
pull_request:
2727
branches: [ master ]
28+
# The manifests GitHub's dependency graph understands here: pinned action versions and the
29+
# Python requirements. Nothing else in the tree reaches this review.
30+
paths:
31+
- "requirements.txt"
32+
- ".github/workflows/**"
2833

2934
permissions:
3035
contents: read
3136
pull-requests: write # To post comments on PRs
3237

38+
concurrency:
39+
group: ${{ github.workflow }}-${{ github.ref }}
40+
cancel-in-progress: true
41+
3342
jobs:
3443
dependency-review:
3544
runs-on: ubuntu-latest

0 commit comments

Comments
 (0)