Skip to content

Add a WordPress.org release workflow#328

Open
adamziel wants to merge 1 commit intotrunkfrom
adamziel/release-workflow
Open

Add a WordPress.org release workflow#328
adamziel wants to merge 1 commit intotrunkfrom
adamziel/release-workflow

Conversation

@adamziel
Copy link
Copy Markdown
Collaborator

Summary

  • add a GitHub Actions workflow that deploys tagged releases from this repo to the sqlite-database-integration WordPress.org SVN repo
  • validate plugin release metadata across load.php, version.php, and readme.txt before deploying
  • require a readme changelog entry for the current plugin version

Testing

  • bash ./.github/scripts/verify-release-metadata.sh

@JanJakes
Copy link
Copy Markdown
Member

JanJakes commented Mar 30, 2026

@adamziel This was superseded by and partly integrated into #334, so I guess we can close it.

JanJakes added a commit that referenced this pull request Mar 31, 2026
## Summary
This PR restructures the repository into a **monorepo** with separate
packages and adds **release automation**.

### Monorepo structure
```
packages/
├── mysql-on-sqlite/                    # MySQL-on-SQLite driver
├── mysql-proxy/                        # MySQL binary protocol proxy
└── plugin-sqlite-database-integration/ # WordPress plugin
```

The plugin package links to the driver through a `wp-includes/database`
symlink. The release build script (`composer run build`) resolves this
symlink into a real copy, producing a self-contained plugin zip.

WordPress setup for WP tests remains at the repository root for now. The
tests for the legacy driver remain there as well (to be deleted soon).

We eventually split it even further (`mysql-parser`, ...) and handle the
grammar tools, but that can be addressed separately.

### Automated release workflow
Release is automated with GitHub Actions. It requires only two manual
steps:

1. **Create a draft release with a new tag and changelog.**
  The `release-prepare` workflow will automatically:
- Use the draft tag to bump versions in `version.php`, `load.php`, and
`readme.txt`.
    - Add the draft release changelog entry to `readme.txt`.
    - Build the plugin ZIP and attach it to the draft release.
- Create a PR (`release/<version>` → `trunk`) and link it in the draft
release body.
2. **Review and merge the PR.**
  The `release-publish` workflow will automatically:
    - Publish the draft release.
    - Publish the release artifact to WordPress.org.

Closes
#83,
#200, and
#328.

Note that currently, the release workflow is aimed at releasing the
SQLite plugin, which goes hand-in-hand with the driver changes. If we
need to decouple the releases at some point (e.g., release a new driver
version, but not plugin, or release the plugin only), then we'll need to
address that.

### Testing
I will test and fine-tune the release workflow on `trunk` using a
temporary nonsense tag (`0.0.1-test1`, etc.). The WordPress.org part
requires SVN credentials, and I will test and fine-tune it with the next
plugin release.

### Next steps
- Update Playground plugin-refresh logic once this is merged.
- Update Studio to use the new release artifacts starting from the next
release.
- Further split the components (`mysql-parser`, ...).
- Improve the monorepo setup tooling (do we need anything like NX?).
- Set up Composer packages.
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.

2 participants