Skip to content

ci: switch plugin releases from changesets to release-please - #820

Merged
josephfusco merged 5 commits into
mainfrom
ci/release-please
Oct 22, 2026
Merged

josephfusco merged 5 commits into
mainfrom
ci/release-please

Conversation

@josephfusco

Copy link
Copy Markdown
Member

Replaces the changesets release flow with release-please, matching faustjs and wp-graphql-content-blocks. Closes #668.

Why

The changesets workflow named each release branch with a timestamp, so every push to main that touched plugins/ opened a new release PR. On 2026-06-22 that produced #687–#696, most of them closed as duplicates. Lock-file-only changes from Dependabot also triggered it. release-please keeps one release PR per plugin and updates it in place.

What changes

  • release-please-config.json / .release-please-manifest.json: config is copied from faustjs (same changelog sections, node release type). The four released plugins are components; examples/ is excluded so example and Dependabot changes don't trigger releases. separate-pull-requests: true gives one release PR per plugin, the same as today.
  • Tag format is unchanged: @wpengine/<name>-wordpress-plugin-<version>, via tag-separator: "-" and no v. release-please picks up the existing GitHub Releases as history, and the download URLs in plugins/composer-packages.json keep the same shape.
  • release-please.yml: runs on push to main. It has three jobs:
    • run release-please
    • sync version files onto each release PR branch
    • build and attach the zip when a release is created
  • .github/scripts/sync_plugin_release_files.sh: the version-file logic moved out of the old workflow. It runs each plugin's npm run version (plugin header, readme.txt Stable tag, composer.json) and update_composer_package.sh.
  • release-plugin.yml: replaces pre-release-tag.yml. It builds the zip with composer archive and uploads it to the release that release-please created, marking 0.x versions as pre-releases as before. It can also be run by hand with a tag to rebuild a release's zip.
  • Removed: .changeset/, create-release-branch.yml, pre-release-tag.yml, and the @changesets/* dev dependencies.
  • lint-pr.yml: adds the deps type, which release-please lists under Dependencies.

Behavior changes to review

  • Release PRs are no longer auto-approved or auto-merged. Merging a release PR is now the decision to release, as in faustjs. The RELEASE_PAT approval step is gone. If we want to keep auto-merge, it can be added back.
  • Changelogs are now built from squash-merged PR titles (Conventional Commits), not changeset files. feat and fix drive minor and patch bumps.
  • The webhooks manifest is set to 0.0.7, the last tagged release. package.json already says 0.0.8, but 0.0.8 was never tagged or released, so the next release should come out as 0.0.8.
  • The bot opens release PRs with GITHUB_TOKEN, so CI doesn't run on them automatically, same as faustjs.

Testing

  • Ran sync_plugin_release_files.sh wpgraphql-webhooks locally after bumping its package.json to 0.0.9. It updated the plugin header, readme.txt, composer.json, and composer-packages.json, with the expected release URL.
  • The workflows haven't run yet. The first push to main after merge will be the real test.
Use of AI Tools

AI assistance: Yes
Tool(s): Claude Code
Model(s): Claude Opus 5.5
Used for: Assisting with porting the release-please setup from faustjs, writing the workflows, and testing the version sync script.

@changeset-bot

changeset-bot Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 709a344

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@josephfusco
josephfusco marked this pull request as ready for review October 22, 2026 19:58
@josephfusco
josephfusco marked this pull request as draft October 22, 2026 19:58
@josephfusco
josephfusco marked this pull request as ready for review October 22, 2026 20:04
@josephfusco
josephfusco enabled auto-merge October 22, 2026 20:06
@josephfusco
josephfusco disabled auto-merge October 22, 2026 20:06
@josephfusco
josephfusco merged commit e992794 into main Oct 22, 2026
3 checks passed
@josephfusco
josephfusco deleted the ci/release-please branch October 22, 2026 20:08
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.

ci: Release workflow creates a new PR each time

1 participant