Skip to content

ci: skip scheduled pre-releases when only development files changed - #1934

Open
eitsupi wants to merge 2 commits into
mainfrom
ci/prerelease-path-filter
Open

eitsupi wants to merge 2 commits into
mainfrom
ci/prerelease-path-filter

Conversation

@eitsupi

@eitsupi eitsupi commented Nov 13, 2026 •

Copy link
Copy Markdown
Member

Summary

Scheduled Marketplace / Open VSX pre-releases currently publish whenever main has a different SHA from the last published run, so CI-only or test-only changes produce new pre-releases.

This keeps the existing publication-history logic (date reservation, last-published SHA search, unchanged-SHA skip) and adds one step for scheduled runs: list the files changed between the last SHA published to both registries and the current SHA, and skip when every change is development-only.

  • The diff is a two-endpoint tree diff (git fetch --depth=1 origin <base> + git diff --no-renames --name-only -z), so the shallow checkout is enough. Ignored-only changes accumulate against the last published SHA, so nothing is lost across skipped days.
  • Ignored paths: .github/**, src/test/**, sess/tests/**, R/tests/**, benchmark and test scripts under scripts/, and development configs. Anything not listed is relevant.
  • Packaging inputs under .github stay relevant: extension-version.js, main.yml, release.yml.
  • A failed fetch or diff publishes as before (diff-unavailable).
  • workflow_dispatch bypasses the filter, so a manual run can still force a pre-release.
  • Only prerelease-prepare enables the filter (PRERELEASE_PATH_FILTER). The registry rechecks do not repeat it, so a fetch that fails in one registry job and succeeds in the other cannot publish to only one registry.
  • main.yml tests and the GitHub latest release are unchanged.

The path list is admittedly fine-grained; a TODO notes that moving the extension into a dedicated subdirectory would let it shrink.

Compare the files changed since the last SHA published to both registries
and skip scheduled pre-releases when every change is CI, test, or other
development-only. Packaging inputs under .github stay relevant, manual runs
bypass the filter, and a failed fetch or diff publishes as before. Only the
preparation job applies the filter so the two registry rechecks cannot
diverge.
@eitsupi
eitsupi marked this pull request as draft November 13, 2026 14:38
@eitsupi
eitsupi marked this pull request as ready for review November 13, 2026 14:40

This branch has not been deployed

No deployments
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