Skip to content

Release Guide

jacobd edited this page Jun 9, 2026 · 3 revisions

Releasing Post and Page Builder

This plugin is released to two channels:

  1. WordPress.org — the public plugin repository (SVN).
  2. GitHub Releases — a tagged release with the built .zip attached.

Both are driven by Travis CI when you push a git tag. There are no GitHub Actions workflows in this repo — Travis is the only CI/release engine.

A third, manual step finalizes delivery on the BoldGrid Central update channel (separate from WordPress.org), via an internal management portal owned by the BoldGrid/release team.


TL;DR

# 1. Make sure the version bump + changelog are merged to master and master is green.
# 2. Tag the release commit with the BARE version number (no "v" prefix):
git tag -a 1.27.11 -m "Release 1.27.11"
git push origin 1.27.11
# 3. Watch the Travis build for the tag.
# 4. Verify on WordPress.org and edit the GitHub release notes.
# 5. Finalize on the BoldGrid Central portal (release team).

The tag name must equal the version in readme.txtStable tag: and the plugin header Version: (e.g. 1.27.11). WordPress.org serves whatever Stable tag: points to.


Prerequisites (one-time / verify)

  • Travis CI is active for BoldGrid/post-and-page-builder.
  • These secrets exist as encrypted Travis environment variables:
    • WP_USERNAME / WP_PASSWORD — WordPress.org SVN credentials.
    • GITHUB_TOKEN — used to create the GitHub release and upload the zip.
    • WP_SVN_REPO — the WordPress.org SVN URL for this plugin.

If any of these are rotated/expired, the deploy fails (often silently from the author's point of view) — always confirm the result on WordPress.org.


Step 1 — Bump the version (before tagging)

All of these must agree on the new X.Y.Z:

File What to change
post-and-page-builder.php Version: header (this also feeds BOLDGRID_EDITOR_VERSION)
readme.txt Stable tag:
readme.txt Add a new = X.Y.Z = entry under == Changelog ==
package.json version — cosmetic only (stripped before SVN), but keep it in sync

Notes:

  • WordPress.org determines the served version from readme.txtStable tag:. The header Version: should match it.
  • You can ship multiple changelog entries under one tag. If 1.27.10 and 1.27.11 were both merged but only 1.27.11 is tagged, both changelog entries ship and the served version is 1.27.11.

Merge the bump + changelog to master before tagging.


Step 2 — Tag and push

git tag -a X.Y.Z -m "Release X.Y.Z"
git push origin X.Y.Z
  • Bare semver, no v prefix — the deploy script uses the tag name verbatim as the SVN tag directory name (tags/X.Y.Z). Existing tags: 1.27.9, 1.27.10, …
  • Pre-release / RC tags have been used too (e.g. 1.27.1-rc.1).
  • Pushing the tag is what triggers everything. It starts a live public release.

Step 3 — What Travis does automatically

From .travis.yml, the deploy: block runs only on tag builds and only on PHP 7.4. It has two steps:

  1. provider: script → WordPress.org SVN push. Runs @boldgrid/wordpress-tag-sync/release.sh, which:
    • derives VERSION from the git tag (git describe --exact-match --tags),
    • svn cp trunk → tags/VERSION, then replaces it with the current repo files,
    • strips dev files (see below),
    • svn commits to WordPress.org using WP_USERNAME / WP_PASSWORD,
    • builds post-and-page-builder.zip.
  2. provider: releases → GitHub Release. Uploads post-and-page-builder.zip to the GitHub release for the tag, using GITHUB_TOKEN.

Files stripped before the SVN commit (not shipped to WordPress.org): node_modules, .git, .github, tests, bin, tools, bower_components, .travis.yml, release.sh, gulpfile.js, webpack.config.js, karma.config.js, yarn.lock, package.json, composer.json, composer.lock, phpunit.xml, README.md, CHANGELOG.txt, CONTRIBUTING.md, and various dotfiles. (Note: this strip list lives in the @boldgrid/wordpress-tag-sync package, not in this repo.)


Step 4 — Verify the release

  • WordPress.org SVN tag exists: https://plugins.svn.wordpress.org/post-and-page-builder/tags/X.Y.Z/
  • Plugin page shows the new version: https://wordpress.org/plugins/post-and-page-builder/ (the public page can take a few minutes to update).
  • GitHub release created with post-and-page-builder.zip attached: https://github.com/BoldGrid/post-and-page-builder/releases/tag/X.Y.Z — edit/clean up the release notes here (the body is not auto-generated).

Step 5 — Finalize on BoldGrid Central

The plugin is also delivered to Connect-key users through the BoldGrid Central update channel, which is separate from WordPress.org. Finalizing that release is a manual step in an internal management portal owned by the BoldGrid/release team.

TODO: document the exact portal URL and steps, and who has access.


Security releases

For vulnerability fixes, keep the tag message, GitHub release notes, and readme.txt changelog vague — e.g. Security Update: Patched a stored XSS in …. Full technical detail (finding IDs, exploit specifics) goes in the ENG/Jira ticket, not in any public-facing text.


Troubleshooting

Symptom Likely cause
Deploy step never ran Tag build wasn't on PHP 7.4, or the ref wasn't a tag (on: tags: true).
SVN commit failed / auth error WP_USERNAME / WP_PASSWORD invalid or rotated.
No GitHub release / zip GITHUB_TOKEN invalid or missing scopes.
WordPress.org still shows old version readme.txtStable tag: doesn't match the pushed tag, or the tags/X.Y.Z dir wasn't created.
Wrong files shipped Strip list is in @boldgrid/wordpress-tag-sync/release.sh, not this repo.

Clone this wiki locally