ci: WordPress.org SVN auto-deploy on v* tags#24
Merged
Conversation
Plugin Check flagged the previous 6.9 value as outdated against current WP. No code changes — header metadata only.
Adds a GitHub Actions workflow that pushes tagged releases to the WordPress.org SVN repo using 10up/action-wordpress-plugin-deploy. Triggered on v* tags; expects WPORG_SVN_USERNAME / WPORG_SVN_PASSWORD repo secrets. Also rewrites .distignore to cover dev artifacts that were missing (.lla-* indexer files, .venv, phpstan.neon, phpunit.xml, SUBMISSION.md, *.zip build artifacts), creates a .wordpress-org/ folder with a README documenting the expected banner/icon/screenshot filenames, and adds a CLAUDE.md with the release flow and the compliance constraint on backup file locations (so we don't regress on the .backups/ rejection).
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.
Summary
Wires the GitHub repo to auto-publish to the newly-approved WordPress.org plugin directory entry (https://wordpress.org/plugins/odr-image-optimizer/), so future releases are a tag-push instead of a manual SVN dance.
.github/workflows/deploy-to-wp-org.yml— triggers onv*tags (matches the existingrelease.ymltrigger). Uses10up/action-wordpress-plugin-deploy@stableto syncmain→ SVNtrunk/, create the matching SVN tag, and sync.wordpress-org/→ SVN's siblingassets/. The action reads the SVN tag name fromStable tag:inreadme.txt, so the gitvprefix stays git-only..distignorerewrite — adds the dev artifacts the old version missed:.lla-*indexer files,.venv/,phpstan.neon,phpunit.xml,SUBMISSION.md,*.zipbuild artifacts. These previously had to be excluded by hand when building the manual upload zip..wordpress-org/README.md— documents the required banner/icon/screenshot filenames so the listing page can be populated later by dropping files into that folder.CLAUDE.md— repo-local context for future sessions: release flow, compliance constraints (backups must live underwp_upload_dir()/odr-image-optimizer/backups/, not.backups/— the cause of the April rejection), local-dev quirks.Action items before the next release
The workflow needs two repo secrets before it can do anything:
WPORG_SVN_USERNAME=odanreeWPORG_SVN_PASSWORD= generated under https://wordpress.org/.../account-security (this is a separate password from your wp.org login)Set them under Settings → Secrets and variables → Actions → New repository secret.
Releasing 1.0.8 once SVN access is live
After this PR is merged and the secrets are set:
```bash
git checkout main && git pull
git tag v1.0.8 && git push origin v1.0.8
```
Both
release.yml(GitHub Release) anddeploy-to-wp-org.yml(SVN push) will run. WP.org's directory note says it can take up to 72h for search results to update after the first commit.Test plan
ghworkflow run yet — will fire on firstv*tag push)..distignoreincludes every dev file currently in the repo root that shouldn't ship; verified againstls -Aoutput.CLAUDE.mdhighlights the backup-path compliance rule so future edits don't reintroduce the.backups/regression.