Skip to content

ci: skip package suites on bookkeeping-only changes - #15545

Open
RogerHYang wants to merge 1 commit into
mainfrom
roger/ci-skip-release-prs
Open

ci: skip package suites on bookkeeping-only changes#15545
RogerHYang wants to merge 1 commit into
mainfrom
roger/ci-skip-release-prs

Conversation

@RogerHYang

@RogerHYang RogerHYang commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

What

Skip the Python package suites (phoenix, phoenix_client, phoenix_evals, phoenix_otel) and the Playwright e2e suite when every changed file is release bookkeeping.

A root release PR changes exactly three files — there is nothing in it for those suites to exercise:

.release-please-manifest.json
CHANGELOG.md
src/phoenix/version.py

Why it is decided by content, not by branch name

Gating on the branch name or a label is the cheaper option and was the first thing I tried. It is a CI bypass:

  • the * CI Required aggregators run with if: always() and fail only on failure/cancelled — a skipped job reports success
  • a branch name is chosen by whoever opens the PR, including from a fork

Together those mean any author-selectable skip signal lets a PR merge with nothing tested: name your branch release-please--branches--anything, and every suite skips while the required checks still go green. So the skip is decided from paths-filter's changed-file list against an explicit allowlist:

^(\.release-please-manifest\.json|CHANGELOG\.md|packages/[^/]+/CHANGELOG\.md|src/phoenix/version\.py)$

An empty file list fails closed and runs everything.

What deliberately still runs

pyproject.toml and uv.lock are not allowlisted. A subpackage release PR bumps its pyproject.toml and regenerates uv.lock, and those change what actually gets installed — so those releases keep running the full suites. Same for migrations, ddl, uv_lock, ipynb and prompts, whose filter outputs are untouched here.

Verification

Run against the real file lists of existing release PRs plus hostile cases:

SKIP  root release PR #15487        (actual files)
SKIP  sibling release PR #15231     (actual files)
RUN   sibling release PR #15387     (actual: pyproject.toml + uv.lock)
RUN   spoofed branch name, real code change
RUN   version.py + smuggled code change
RUN   version.py + pyproject dep change
RUN   CHANGELOG + hidden workflow edit
RUN   empty file list
RUN   lookalike path (src/phoenix/version.py.bak)
RUN   nested changelog outside packages/

Interaction with #15544

#15544 combines the per-package release PRs into one. After it lands, any release including a subpackage carries that subpackage's pyproject.toml and uv.lock, so this skip will fire only on root-only releases. That is the common case, and the narrowing is the correct behaviour rather than something to widen the allowlist for. The two PRs are independent and can land in either order.

@mintlify

mintlify Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
arize-phoenix 🟢 Ready View Preview Aug 21, 2026, 12:29 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@dosubot dosubot Bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Aug 21, 2026
A release PR that only bumps a version and a changelog has nothing for the
Python or Playwright suites to exercise.

The skip is decided from the changed-file list rather than a branch name or
label: the required aggregators report success when their jobs skip, so a
signal the PR author picks would let any PR merge untested.

Dependency metadata (pyproject.toml, uv.lock) stays outside the allowlist,
since those change what actually gets installed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS This PR changes 0-9 lines, ignoring generated files.

Projects

Status: 📘 Todo

Development

Successfully merging this pull request may close these issues.

1 participant