Skip to content

ci: path-filter docker.yml and ci-macos-main.yml push triggers - #1336

Open
mjacobs wants to merge 1 commit into
kenn-io:mainfrom
mjacobs:ci/path-filter-push-workflows
Open

ci: path-filter docker.yml and ci-macos-main.yml push triggers#1336
mjacobs wants to merge 1 commit into
kenn-io:mainfrom
mjacobs:ci/path-filter-push-workflows

Conversation

@mjacobs

@mjacobs mjacobs commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

docker.yml and ci-macos-main.yml build the Docker image and run the
macOS test suite on every push to main, even when the change is
docs-only or frontend-only. desktop-artifacts.yml and
desktop-macos-main.yml already gate on paths: to avoid this; this PR
applies the same pattern to the other two workflows so a docs commit
stops occupying the self-hosted macOS runner and rebuilding/republishing
the Docker image.

Paths chosen

  • docker.yml: cmd/**, internal/**, frontend/**, go.mod,
    go.sum, Dockerfile, .dockerignore, docker-entrypoint.sh, and
    its own workflow file — everything the Dockerfile's COPY and
    go:embed steps pull into the built binary and image.
  • ci-macos-main.yml: cmd/**, internal/**, testdata/golden/**,
    go.mod, go.sum, and its own workflow file — matching the packages
    its Go Test step exercises (internal/fsevents, internal/sync,
    internal/db, cmd/agentsview), including the golden fixtures
    cmd/agentsview/usage_test.go reads from testdata/golden.
    frontend/** is intentionally left out: in this test path,
    internal/web's embedded dist directory is just the git-committed
    placeholder, not a real frontend build, so frontend changes don't
    affect what these tests exercise.

Required-check caveat

GET /repos/kenn-io/agentsview/branches/main/protection returns 404
(branch not protected), so neither workflow is a required status check
today — a path-skipped run can't block anything on main. Worth a
second look if branch protection gets added later, since a skipped
required check on a push-triggered (not PR-triggered) workflow stays
pending rather than reporting green.

One more finding from review: docker.yml's paths: filter has no
effect on its tags: ['v*'] trigger, by GitHub's design — path filters
are not evaluated for tag pushes — so tagged releases still always
build regardless of which files a tag's commit touches.

Verified against history

  • 33c9695c (docs: add contributor engineering guide) touches nothing
    in either filter and would now be skipped by both workflows.
  • ca808ec2 (feat(artifact): add explicit folder transport) touches
    cmd/** and internal/** and would still trigger both.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Gg4bVx9TbcLEeg2Zd5SNaz

Both workflows ran on every push to main regardless of what changed, so
a docs-only or frontend-only merge still built and pushed the Docker
image and occupied the self-hosted macOS runner. desktop-artifacts.yml
and desktop-macos-main.yml already gate on paths for the same reason;
this applies the same pattern here.

docker.yml now filters on cmd/**, internal/**, frontend/**, go.mod,
go.sum, Dockerfile, .dockerignore, docker-entrypoint.sh, and its own
workflow file — everything the Dockerfile's COPY and go:embed pull
into the built binary and image. ci-macos-main.yml filters on cmd/**,
internal/**, testdata/golden/**, go.mod, go.sum, and its own workflow
file, matching what its Go Test step actually exercises (fsevents,
sync, db, and cmd/agentsview, whose usage_test.go reads fixtures from
testdata/golden); frontend/dist is embedded as a placeholder in this
test path, not built, so frontend/** doesn't need to be in its filter.

Path filters are not evaluated for tag pushes (GitHub's documented
behavior), so docker.yml's paths filter has no effect on the tags:
'v*' trigger — a release tag always builds and publishes regardless
of which files it touches.

The branch is unprotected (GET /branches/main/protection returns 404),
so neither workflow is a required status check today and a
path-skipped run can't block anything on main.

Verified against history: 33c9695 (docs: add contributor engineering
guide) touches no path in either filter and would now be skipped by
both; ca808ec (feat(artifact): add explicit folder transport) touches
cmd/** and internal/** and would still trigger both.

Generated with Claude Code
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@roborev-ci

roborev-ci Bot commented Aug 3, 2026

Copy link
Copy Markdown

roborev: Combined Review (ec92c98)

No issues found.


Reviewers: 2 done | Synthesis: codex | Total: 1m32s

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant