Skip to content

ci: add sync-plugin-version workflow - #14

Merged
intel352 merged 1 commit into
mainfrom
chore/install-version-sync-workflow
May 14, 2026
Merged

intel352 merged 1 commit into
mainfrom
chore/install-version-sync-workflow

Conversation

@intel352

Copy link
Copy Markdown
Contributor

Installs .github/workflows/sync-plugin-version.yml which auto-bumps plugin.json version to match the git tag on every v* tag push. Prevents plugin.json/tag drift. Closes GoCodeAlone/workflow-registry#37.

Copilot AI review requested due to automatic review settings May 14, 2026 02:55
@intel352
intel352 merged commit a91eb07 into main May 14, 2026
9 checks passed
@intel352
intel352 deleted the chore/install-version-sync-workflow branch May 14, 2026 02:58

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a GitHub Actions workflow to create a PR syncing plugin.json’s version with pushed v* tags, intended to reduce manifest/tag drift.

Changes:

  • Adds a tag-triggered workflow that checks out main.
  • Computes the target version from the tag name.
  • Updates plugin.json, pushes a branch, and opens a sync PR.
Comments suppressed due to low confidence (3)

.github/workflows/sync-plugin-version.yml:46

  • The tag-derived output is interpolated directly into this shell assignment, which lets shell metacharacters in a crafted tag name be evaluated during the workflow. Use an environment variable or otherwise quote/escape the event data before using it in run scripts.
          BRANCH="chore/sync-plugin-version-${{ steps.ver.outputs.tag }}"

.github/workflows/sync-plugin-version.yml:51

  • This command embeds the tag-derived output directly in a quoted shell argument, so command substitutions or quotes in a crafted tag name can alter the command that runs. Keep the tag in an environment variable (or sanitize it) and pass it as data rather than templating it into the script.
          git commit -m "chore: sync plugin.json version to ${{ steps.ver.outputs.tag }}"

.github/workflows/sync-plugin-version.yml:57

  • The PR title/body template embeds the tag-derived output directly into the shell script. A crafted tag can break out of the quoted argument or trigger command substitution here; pass the tag via env or otherwise escape it before constructing the gh pr create arguments.
            --title "chore: sync plugin.json version to ${{ steps.ver.outputs.tag }}" \
            --body "Triggered by release ${{ steps.ver.outputs.tag }}. Auto-sync to prevent drift. Closes workflow-registry#37."

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +35 to +36
p = json.load(open('plugin.json'))
p['version'] = '$TARGET'
Comment on lines +33 to +39
python3 -c "
import json
p = json.load(open('plugin.json'))
p['version'] = '$TARGET'
json.dump(p, open('plugin.json', 'w'), indent=2)
open('plugin.json', 'a').write('\n')
"
Comment on lines +49 to +52
git checkout -b "$BRANCH"
git add plugin.json
git commit -m "chore: sync plugin.json version to ${{ steps.ver.outputs.tag }}"
git push origin "$BRANCH"
--base main \
--head "$BRANCH" \
--title "chore: sync plugin.json version to ${{ steps.ver.outputs.tag }}" \
--body "Triggered by release ${{ steps.ver.outputs.tag }}. Auto-sync to prevent drift. Closes workflow-registry#37."
run: |
if [ ! -f plugin.json ]; then echo "no plugin.json; skipping"; exit 0; fi
CURRENT=$(python3 -c "import json; print(json.load(open('plugin.json')).get('version',''))")
TARGET="${{ steps.ver.outputs.version }}"
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.

Add release-automation to keep plugin.json + registry manifests in sync with git tags

2 participants