Releasing BuddyPress to the world is a big deal, and takes quite a few manual steps to ensure safe & comfortable updates & upgrades are had by all. Below are the steps release leads go through with each & every release.
Note: These steps vary slightly depending on major/minor/urgency of the deployment to WordPress.org. For questions, or if something is not clear, please ping @johnjamesjacoby, @boone, or @djpaul, who are mad enough to comprehend how & why all this works the way it does. (We keep planning to automate this, but until then, please enjoy this extremely long and intimidating list of responsibilities.)
There are two code repositories, and you’ll be tasked with compiling the BuddyPress codebase from the development repo to the deployment repo. They are separate because BuddyPress is deployed to almost all end-users from the public WordPress.org plugin repository in a way that requires some development assets to be pre-compiled (it’s not a literal 1-to-1 copy) and because BuddyPress is lucky enough to have its own Trac instance on WordPress.org.
We’ll refer to these two repositories like this for the duration of these steps:
[dev] = buddypress.svn.wordpress.org
[wporg] = plugins.svn.wordpress.org/buddypress/
Now that you’re familiar, sit back, relax, put on your headgear, and get ready for a trip to the atmosphere…
- Create release version page on codex (
- Create version page to codex Releases page (
- Review recent rockstars, change as needed
- For major releases (2.7.0), switch to:
svn switch https://buddypress.svn.wordpress.org/trunk/
- For minor releases (2.7.1), switch to relative branch:
svn switch https://buddypress.svn.wordpress.org/branches/2.7/
- Change version in
- Change version in
$this->version(setup_globals())) in class-buddypress.php (bp-loader.php prior to 2.8)
- Change version
- Change stable-tag
- Change tested-up-to
- Change version in
- Add “Upgrade Notice” & “Changelog” entries for this version in
- Commit changes
svn ci ..
- For major releases (2.7.0), branch from trunk, then tag from new branch.
svn cp https://buddypress.svn.wordpress.org/trunk/ https://buddypress.svn.wordpress.org/branches/2.7 svn cp https://buddypress.svn.wordpress.org/branches/2.7 https://buddypress.svn.wordpress.org/tags/2.7.0
- For minor releases (2.7.1), tag from relevant branch.
svn cp https://buddypress.svn.wordpress.org/branches/2.7 https://buddypress.svn.wordpress.org/tags/2.7.0
You’ll probably want to checkout the entire BuddyPress repository from WordPress.org. This way you can navigate the entire
trunk/branches/tags structure, and more easily make changes as necessary.
svn co https://plugins.svn.wordpress.org/buddypress/
Omit externals – that will save you lots of time. Checkout into a temporary directory…
- Export the development version of BuddyPress you intend to deploy to users:
svn co https://buddypress.svn.wordpress.org/tags/2.7.1/ . --force --ignore-externals.
grunt build. (You may need to globally update npm, or other such fun stuff. Your mileage may vary.)
- Copy the contents of the
builddirectory to a new
tagsdirectory in a [wporg] checkout.
- Add the new tag folder to SVN:
svn add tags/2.7.1
/bp-forums/bbpress/externals on the new tag. The correct syntax is:
svn propset svn:externals 'bbpress https://bbpress.svn.wordpress.org/tags/1.2.1/' tags/2.7.1/bp-forums/
- Commit the contents of the new build folder to a new tag on [wporg].
- Copy the contents of the build directory to a
trunkdirectory in a [wporg] checkout.
- If it’s not a beta or a release candidate, Update
plugins.svn.wordpress.org/buddypress/trunk/readme.txtwith the new stable tag. The release is now live.
- Ask Paul Gibbs to update https://github.com/buddypress/BuddyPress-build (via git-svn he has locally).
- Ask Paul Gibbs to go to https://packagist.org/packages/buddypress/buddypress and click “Update”.
- Write a blog post on buddypress.org
- Update version number in the Downloads page on the buddypress.org.
- Write a blog post on bpdevel.wordpress.com
- Forum announcement in buddypress.org/support
- Send tweets from the BP twitter accounts.
- If a major x.y release, bump trunk version numbers to alpha in bp-loader.php (2.1-alpha).
- Bump relevant branch version numbers to alpha in bp-loader.php (2.1-alpha).
- If a major x.y release, sync [dev] trunk and [wporg] trunk.
- Development strings are here: https://translate.wordpress.org/projects/wp-plugins/buddypress/dev
- The source of the
- Regular updates by running:
grunt releaseand pushing to https://plugins.svn.wordpress.org/browser/buddypress/trunk/ will make #Polyglots translators happy
- This also allows for relatively easy “string freezes” as new releases near