Skip to content

ci: add missing path filters so changed inputs trigger their jobs - #685

Merged
DamianReeves merged 1 commit into
mainfrom
ci/add-missing-path-filters
Aug 24, 2026
Merged

ci: add missing path filters so changed inputs trigger their jobs#685
DamianReeves merged 1 commit into
mainfrom
ci/add-missing-path-filters

Conversation

@DamianReeves

@DamianReeves DamianReeves commented Aug 24, 2026

Copy link
Copy Markdown
Member

Problem

Detect Changes gates the Rust and Docs jobs on path filters, but several inputs those jobs actually depend on weren't listed. Changing them ran no jobs, so CI reported green without building anything.

Three cases hit this in the last day:

PR Change Rust jobs
#675 rustc 1.97.1 → 1.98.0 skipped
#684 mise tool backend skipped
#677 morphir-rust submodule bump ran, but only because it also touched Cargo.lock

A compiler upgrade landed with nothing compiled. That's the same class of blind spot that let the pager clippy lints sit on main unnoticed until #679 — new clippy lints ship with new toolchains.

Changes

rust filter

- 'ecosystem/morphir-rust'   # path-dep source
- '.gitmodules'
- '.config/mise/**'          # pins the Rust toolchain
  • ecosystem/morphir-rustcrates/morphir and crates/morphir-live path-depend on crates inside this submodule, so a ref bump changes the source being compiled. A submodule-only bump previously ran nothing.
  • .gitmodules — same reasoning, for submodule wiring.
  • .config/mise/** — pins the toolchain the jobs build with.

docs filter

- '.config/mise/tasks/ci/validate_docs.py'

The Docs job runs this script, but editing it triggered no job.

Verification

Validated both levels — the workflow itself, and the filters block as dorny/paths-filter parses it (it's a block scalar, so the # lines are YAML comments inside a string):

{
 "rust": ["Cargo.toml","Cargo.lock","crates/**","ecosystem/morphir-rust",
          ".gitmodules",".config/mise/**",".github/workflows/ci.yml"],
 "docs": ["website/**","docs/**","**/*.md",
          ".config/mise/tasks/ci/validate_docs.py",".github/workflows/ci.yml"]
}

7 rust patterns, 5 docs patterns, comments stripped correctly.

This PR touches ci.yml, which is in both filters, so its own run exercises the change end to end.

Note on the website

An earlier revision of this description claimed no job builds the website. That was wrong — Netlify does. netlify.toml runs the real Docusaurus build:

base = "website"
command = "npm run build"
ignore = "... git diff --quiet \"$CACHED_COMMIT_REF\" \"$COMMIT_REF\" -- ':(top)website' ':(top)docs'"

The ignore clause skips the build only when neither website/ nor docs/ changed, which is why Rust-only PRs show "Deploy Preview canceled" — that's the skip working as designed, not missing coverage.

So the website is covered; it's just covered by Netlify rather than by this workflow. No filter change is needed for it, and none is made here.

@netlify

netlify Bot commented Aug 24, 2026

Copy link
Copy Markdown

Deploy Preview for angry-raman-7c44f6 canceled.

Name Link
🔨 Latest commit 75e93e8
🔍 Latest deploy log https://app.netlify.com/projects/angry-raman-7c44f6/deploys/6a8bab64f818f90008f6489d

Detect Changes gates the Rust and Docs jobs on path filters, but several
inputs those jobs actually depend on were not listed. Changing them ran
no jobs, so CI reported green without building anything. Three cases hit
this in the last day alone.

rust filter, additions:

  ecosystem/morphir-rust
    crates/morphir and crates/morphir-live path-depend on crates inside
    this submodule, so a ref bump changes the source being compiled.
    #677 only ran the Rust jobs because it also touched Cargo.lock; a
    submodule-only bump would have run nothing.

  .gitmodules
    Same reasoning, for submodule wiring changes.

  .config/mise/**
    Pins the Rust toolchain the jobs build with. #675 moved rustc from
    1.97.1 to 1.98.0 and both Rust jobs were skipped, so a compiler
    upgrade landed with no compilation. New clippy lints ship with new
    toolchains, which is exactly how the pager lints fixed in #679
    reached main unnoticed.

docs filter, addition:

  .config/mise/tasks/ci/validate_docs.py
    The Docs job runs this script, but editing it triggered no job.

Verified the workflow parses, and that the filters block parses as
dorny/paths-filter itself parses it: 7 rust patterns, 5 docs patterns,
comments stripped.

No filter change is needed for the website. Netlify builds it:
netlify.toml runs `npm run build` in website/, with an ignore clause
that skips only when neither website/ nor docs/ changed. Rust-only PRs
showing "Deploy Preview canceled" are that skip working as designed,
not missing coverage.
@DamianReeves
DamianReeves force-pushed the ci/add-missing-path-filters branch from d3844c6 to 75e93e8 Compare August 24, 2026 02:24
@DamianReeves
DamianReeves merged commit cf1e10c into main Aug 24, 2026
10 checks passed
@DamianReeves
DamianReeves deleted the ci/add-missing-path-filters branch August 24, 2026 02:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant