Skip to content

6. Release Work Flow

Greg Ross edited this page Jun 29, 2016 · 11 revisions

GlotPress Release Process

This document will provide detailed instructions on how to release a new version of GlotPress.

There are four types of releases:

  1. Beta release
  2. Release Candidate release
  3. Full release
  4. Hotfix release

Access Required

You will need the following access rights to complete a release:

  • GitHub GlotPress\GlotPress-WP repo: Write
  • WordPress.org SVN Plugin repo: Write
  • GlotPress.org: Editor
  • Slack: User
  • Scrutinizer: User (you may need to restart a job if it fails for some reason)

Tools Required

You will need the following tools:

Steps for a Beta Release

  1. Pull the current develop branch of GlotPress-WP from GitHub.

  2. Create a new branch of develop and name it "release-x.y.z.beta.#". This will be referred to as the "release" branch from here on in.

  3. Update the version number in glotpress.php, composer.json and /tests/phpunit/data/translation.po in the release branch of the GitHub repo to "x.y.z-beta.#".

  4. Update the CHANGELOG.md in the release branch of the GitHub repo.

  5. Create a pull request and merge it from the release branch to the develop branch.

  6. Delete any older hotfix branches from GitHub.

  7. On GitHub, create a new release on the develop branch, the title of the release will be of the format "x.y.z Beta #", the body of the message should include a list of PR's (use the same format as below in the post message) since the last beta release or if this is the first beta, the last major/hotfix release.

  8. Update the version number in glotpress.php in the develop branch of the GitHub repo to "x.y.z-beta.#+1".

  9. Create a post on glotpress.org, the title of the post will be of the format "GlotPress x.y.z Beta #", the body will be of the following format:

     The [first/second/etc.] beta of GlotPress x.y.z is now available!
     
     This software is still in development. Consider setting up a test site just to play with the new version.
     
     The beta can be downloaded from GitHub (https://github.com/GlotPress/GlotPress-WP/releases/tag/x.y.z-beta.#).
     
     Bugs fixed in this release:
     	- List of bug fixes since the last release.
     	- The format should be as follows:
     	- Short description. (#PRNumberLink)
     
     Features in this release:
     	- List of new features since the last release.
     	- The format should be as follows:
     	- Short description. (#PRNumberLink)
     
     In this version [X] issues were solved and [X] Pull Requests were merged, a total of [X] commits.
    
     Contributors of this release: [List of Contributors].
    
     If you think you’ve found a bug, you can post to the issue tracker on GitHub (https://github.com/GlotPress/GlotPress-WP/issues).
     
     The next release is targeted for [Date].
    
     Happy testing!
    
     Tags: #development, #wordpress-plugin
    

Steps for a Release Candidate Release

  1. Pull the current develop branch of GlotPress-WP from GitHub.

  2. Create a new branch of develop and name it "release-x.y.z.rc.#". This will be referred to as the "release" branch from here on in.

  3. Update the version number in glotpress.php, composer.json and /tests/phpunit/data/translation.po in the release branch of the GitHub repo to "x.y.z-rc.#".

  4. Update the CHANGELOG.md in the release branch of the GitHub repo.

  5. Create a pull request and merge it from the release branch to the develop branch.

  6. Delete any older hotfix branches from GitHub.

  7. On GitHub, create a new release on the develop branch, the title of the release will be of the format "x.y.z Release Candidate #", the body of the message should include a list of PR's (use the same format as below in the post message) since the last release candidate.

  8. Update the version number in glotpress.php, composer.json and /tests/phpunit/data/translation.po in the develop branch of the GitHub repo to "x.y.z-beta.#+1".

  9. Create a post on glotpress.org, the title of the post will be of the format "GlotPress x.y.z Release Candidate #", the body will be of the following format:

     The [first/second/etc.] release candidate of GlotPress x.y.z is now available!
     
     This software is still in development. Consider setting up a test site just to play with the new version.
     
     The release candidate can be downloaded from GitHub (https://github.com/GlotPress/GlotPress-WP/releases/tag/x.y.z-rc.#).
     
     Bugs fixed in this release:
     	- List of bug fixes since the last release.
     	- The format should be as follows:
     	- Short description. (#PRNumberLink)
     
     Features in this release:
     	- List of new features since the last release.
     	- The format should be as follows:
     	- Short description. (#PRNumberLink)
     
     In this version [X] issues were solved and [X] Pull Requests were merged, a total of [X] commits.
    
     Contributors of this release: [List of Contributors].
     
     If you think you’ve found a bug, you can post to the issue tracker on GitHub (https://github.com/GlotPress/GlotPress-WP/issues).
     
     The next release is targeted for [Date].
    
     Happy testing!
    
     Tags: #development, #wordpress-plugin
    

Steps for a Full Release

  1. Pull the current master and develop branches of GlotPress-WP from GitHub.

  2. Create a new branch of develop and name it "release-x.y.z". This will be referred to as the "release" branch from here on in.

  3. Update the version number in glotpress.php, composer.json and /tests/phpunit/data/translation.po in the release branch of the GitHub repo to "x.y.z".

  4. Update the CHANGELOG.md in the release branch of the GitHub repo.

  5. Update the bin/release.ini's "[Delete]" section if required in the release branch. Also double check the bin/readme.template file in the release branch in case there are any updates since the last release. Make sure to commit any changes to the GitHub repo before continuing.

  6. Create a pull request from release to master and merge it.

  7. Create a pull request from release to develop and merge it.

  8. Delete any older hotfix branches from GitHub.

  9. On GitHub, create a new release for the master branch, the title of the release will be of the format 'x.y.z "CodeName"', the body of the message should include a list of PR's (use the same format as below in the post message) since the last full release.

  10. From a shell, change to the release script repo and execute the following command: "php release.php /path/to/glotpress-wp x.y.z". This will push the current branch to wordpress.org and create a tag for it. It will also create a readme.txt file and exclude any of the other git specific files. If you need to use a different username then the currently logged in user, see the release script readme for how to configure it. You may be prompted for your SVN password one or more times. Just before the commit to SVN happens, you will have an opportunity to review the files, please do so.

  11. Update the version number in glotpress.php, composer.json and /tests/phpunit/data/translation.po in the develop branch of the GitHub repo to "x.y.z-alpha".

  12. Create a post on glotpress.org, the title of the post will be of the format "GlotPress x.y.z", the body will be of the following format:

    GlotPress x.y.z is now available!
    
    The release can be downloaded from the WordPress plugin directory.
    
    Bugs fixed in this release:
    	- List of bug fixes since the last release.
    	- The format should be as follows:
    	- Short description. (#PRNumberLink)
    
    Features in this release:
    	- List of new features since the last release.
    	- The format should be as follows:
    	- Short description. (#PRNumberLink)
    
    In this version [X] issues were solved and [X] Pull Requests were merged, a total of [X] commits.
    
    Contributors of this release: [List of Contributors].
    
    If you think you’ve found a bug, you can post to the issue tracker on GitHub (https://github.com/GlotPress/GlotPress-WP/issues).
    
    Tags: #wordpress-plugin
    
  13. Create a message on the GlotPress channel on slack pointing to the post on glotpress.org.

Steps for a Hotfix Release

  1. Pull the current master and develop branches of GlotPress-WP from GitHub.

  2. Create a new branch of master and name it "hotfix-x.y.z".

  3. Apply the hotfix changes to the new hotfix branch, including updating the version number in glotpress.php, composer.json and /tests/phpunit/data/translation.po.

  4. Update the CHANGELOG.md in the hotfix branch of the GitHub repo.

  5. Create a pull request and merge it from the hotfix branch to the master branch.

  6. Create a pull request and merge it from the hotfix branch to the develop branch. Note: Since develop will have moved on from master there may be conflicts that need to be resolved and a rebase may be required. Pay special attention to the version number in glotpress.php & composer.json and keep the develop branch version numbers when you resolve the conflicts.

  7. If required update the version number in glotpress.php in the develop branch of the GitHub repo to "x.y.z-alpha" (note if the beta/rc cycle has already started, replace alpha with the appropriate tag).

  8. Delete any older hotfix branches from GitHub.

  9. On GitHub, create a new release for the master branch, the title of the release will be of the format "x.y.z", the body of the message should include a list of PR's since the last full or hotfix release.

  10. From a shell, change to the release script repo and execute the following command: "php release.php /path/to/glotpress-wp x.y.z". This will push the current branch to wordpress.org and create a tag for it. It will also create a readme.txt file and exclude any of the other git specific files. If you need to use a different username then the currently logged in user, see the release script readme for how to configure it. You may be prompted for your SVN password one or more times. Just before the commit to SVN happens, you will have an opportunity to review the files, please do so.

  11. Create a post on glotpress.org, the title of the post will be of the format "GlotPress x.y.z Maintenance Release", the body will be of the following format:

    GlotPress x.y.z is now available!
    
    The release can be downloaded from the WordPress plugin directory.
    
    Bugs fixed in this release:
    	- List of bug fixes since the last release.
    	- The format should be as follows:
    	- Short description. (#PRNumberLink)
    
    Features in this release:
    	- List of new features since the last release.
    	- The format should be as follows:
    	- Short description. (#PRNumberLink)
    
    In this version [X] issues were solved and [X] Pull Requests were merged, a total of [X] commits.
    
    Contributors of this release: [List of Contributors].
    
    If you think you’ve found a bug, you can post to the issue tracker on GitHub (https://github.com/GlotPress/GlotPress-WP/issues).
    
    Thanks to everyone who reported bugs and provided code or other help, including ...
    
    Tags: #wordpress-plugin