Repository navigation
fix(ci): ship plugin content whenever it changes, and only when it changes - #430
Merged
Merged
Conversation
…anges Plugin users got updates backwards. A `docs:` fix to a skill never cut a release, so it never reached plugin-dist; meanwhile every gallery or site `fix:` release rebuilt plugin-dist with identical content and a new version, prompting every user to update for nothing (v0.143.2 was site-only; this session alone cut a dozen such releases). - release.yml cuts a patch release when skills/, claude/, rules/, snippets/ or templates/ changed since the last tag, even with no feat/fix subject (.github/scripts/plugin-content-changed.sh, tested). - build_plugin_dist.py --fingerprint hashes a built tree with manifest versions blanked and line endings normalized. The publish step compares the new build with the published plugin-dist and skips the force-push when they match, so the plugin version only moves with its content. Checked against the live branch: today's build matches v0.143.13 exactly, so a site-only release now would not republish. Closes #350 Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
Author
|
CI evidence before merge: all checks pass ( 13 pass ). Blender Smoke on PR head: Blender 5.2.2 LTS / Blender 4.5.14 LTS. Summaries (happy path; falsifiers) per leg: 141 passed, 3 skipped, 0 failed;136 passed, 7 skipped, 0 failed;143 passed, 1 skipped, 0 failed;143 passed, 0 skipped, 0 failed; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #350.
Problem
Plugin updates ran backwards:
docs:fix to a skill never cut a release, so it never reachedplugin-dist. Examples:bce71a94,c9bb9988.fix:release rebuiltplugin-distwith identical content and a new version, prompting every user to update. v0.143.2 was site-only, and this session cut about a dozen more.Change
.github/scripts/plugin-content-changed.sh BASE: exits 0 whenskills/ claude/ rules/ snippets/ templates/differ between BASE and HEAD.release.ymlcuts a patch release when this says yes and no commit subject is feat/fix.build_plugin_dist.py --fingerprint DIR: sha256 over every file, with manifest"version"values blanked and CRLF normalized.release.ymlpublish step: builds, fingerprints, fetches the publishedplugin-dist, and skips the force-push when the fingerprints match. The plugin version now moves only with its content.tests/test_plugin_content_changed.py(temp git repo, 4 cases), wired into Validate.Evidence (local)
"version"keeps them equal;skills/operators/SKILL.mdmakes them differ.plugin-dist(plugin build v0.143.13). The rawdiff -rshows differences, butdiff -r --strip-trailing-crleaves 0 differences outside"version"lines. So under this change, a site-only release would not republish.test_plugin_content_changed.py4/4 OK. README anddocs/gallerychanges are not content; skill and snippet edits are.test_bump_kind.pyandtest_build_plugin_dist.pyOK. Both workflow files parse.Not exercisable locally: a real release run. The two new steps are plain shell around the tested script and CLI. The first release after merge will log
plugin-dist fingerprint: built=… published=…as the observable check.🤖 Generated with Claude Code