Skip to content

ci: skip expensive workflows for docs-only changes#2073

Merged
martin-g merged 1 commit into
apache:mainfrom
andygrove:ci-skip-expensive-workflows-for-docs
Jul 17, 2026
Merged

ci: skip expensive workflows for docs-only changes#2073
martin-g merged 1 commit into
apache:mainfrom
andygrove:ci-skip-expensive-workflows-for-docs

Conversation

@andygrove

Copy link
Copy Markdown
Member

Which issue does this PR close?

N/A - CI-only change, no issue filed.

Rationale for this change

The TPC-H, TPC-DS, Rust, Docker, and Web TUI workflows are all already gated on path allowlists, so changes under docs/** or to the root README.md correctly skip them. However, those allowlists use whole-directory globs (ballista/**, benchmarks/**, examples/**, ballista-cli/**), and there are ten markdown files living inside those directories:

ballista-cli/README.md
benchmarks/README.md
examples/README.md
ballista/core/README.md
ballista/scheduler/README.md
ballista/executor/README.md
ballista/client/README.md
benchmarks/db-benchmark/README.md
benchmarks/spark/README.md
ballista/scheduler/tests/tpch_plan_stability/README.md

As a result, editing only benchmarks/README.md currently triggers TPC-H SF10 and TPC-DS SF1 along with the Rust, Docker, and Web TUI builds. This is not hypothetical: #2015 ("docs: remove outdated TPC-H benchmark results from READMEs") touched only ballista/client/README.md and ran the full expensive matrix for no reason.

What changes are included in this PR?

Appends - "!**/*.md" to the paths list of both the push and pull_request triggers in tpch.yml, tpcds.yml, rust.yml, docker.yml, and web-tui.yml. GitHub evaluates path patterns in order and the last match wins, so the exclusion has to be the final entry.

Two workflows are deliberately left alone:

  • dev.yml (RAT and prettier) has no path filter and should keep running on everything, since prettier lints the markdown itself.
  • docs.yaml still deploys the site on docs/**.

Verification, beyond confirming the YAML still parses, simulated the GitHub path-filter semantics against representative change sets to check both directions. Docs-only sets now skip all five workflows, while a .rs edit, a Cargo.toml bump, and a mixed code-plus-markdown change each still trigger all five. The mixed case matters most: a PR that touches both code and a README is not docs-only and must still build.

Are there any user-facing changes?

No. CI configuration only, with no public API impact.

The TPC-H, TPC-DS, Rust, Docker, and Web TUI workflows are already gated
on path allowlists, but those allowlists use whole-directory globs such as
`ballista/**` and `benchmarks/**`. Ten markdown files live inside those
directories, so a README-only change fires both benchmark suites and three
builds. PR apache#2015 touched only `ballista/client/README.md` and ran the full
matrix for nothing.

Append `!**/*.md` to each `paths` list. GitHub applies patterns in order and
lets the last match win, so the exclusion must come last. Changes that mix
code and markdown still trigger every workflow.

The prettier check in `dev.yml` is deliberately left ungated since it lints
markdown, as is the `docs.yaml` site deploy.
@andygrove
andygrove marked this pull request as ready for review July 17, 2026 00:51
@martin-g
martin-g merged commit c4260b8 into apache:main Jul 17, 2026
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants