wiki:Dev_ReleaseManagement

Version 8 (modified by thomasb, 4 years ago) (diff)

--

How do we release a new version of RoundCube? This document aims to provide an answer.

Creating a new release

Versioning

Syntax: x.y.z

  • x = major
  • y = minor
  • z = fix (0 can be omitted)

1. Creating a release branch

  • Copy current trunk into a release branch
    svn cp -m "new x.y release branch" https://svn.roundcube.net/trunk/roundcubemail https://svn.roundcube.net/branches/release-x.y
    
  • Check out the release branch and remove development stuff:
    svn co https://svn.roundcube.net/branches/release-x.y
    cd ./release-x.y
    svn del bin/dumpschema.php
    svn del bin/makedoc.sh
    svn del tests
    
  • edit CHANGELOG: only keep the changes since last release
  • edit README: remove SVN disclaimer
  • bump up version in index.php
  • bump up version in program/include/iniset.php
  • bump up version in config/main.inc.php.dist ('useragent')
  • commit the changes
    svn ci -m "Remove development stuff and update versions"
    

2. Create Package

Major Relase

svn export https://svn.roundcube.net/branches/release-x.y ./roundcubemail-x.y
  • the version naming should obviously match the branch/tag
  • the folder name should include the version
  • compress the JavaScript files using Shrinksafe
    cd roundcubemail-x.y/program/js/
    for fn in {app,common,googiespell,list}; do mv $fn.js $fn.js.src && java -jar shrinksafe.jar $fn.js.src > $fn.js; done
    
  • create package archive
    tar czf roundcubemail-x.y.tar.gz ./roundcubemail-x.y
    md5_file roundcubemail-x.y.tar.gz
    
  • distribute the release package on SourceForge

Minor Release/Hotfix?

  • commit changes to the existing release branch
  • repeat the packaging and distribution process
  • adjust naming in case of a hotfix or patch
  • supply a patch in addition:
svn diff https://svn.roundcube.net/tags/roundcubemail/vx.y https://svn.roundcube.net/branches/release-x.y > ./roundcubemail-patch-x.y.z.patch
gzip ./roundcubemail-patch-x.y.z.patch
  • distribute patch on SourceForge

2.1 Create GPL package

TBD.

3. Tagging released files

svn cp -m "Tagging files for x.y.z" https://svn.roundcube.net/branches/release-x.y https://svn.roundcube.net/tags/roundcubemail/vx.y.z

The differences between branches and tags are the following:

  • branch may be "patched" or "hotfixed"
  • a tag is just a snapshot and may not be altered
  • in case you apply a fix to a branch, please create a new tag from it

4. Announcements

  • update downloads page on roundcube.net
  • write news entry on SourceForge
  • post notification to announce@, dev@ and users@
  • update project page on freshmeat.net
  • post on Twitter (Till)

TBD

  • encourage maintainers to subscribe to announce@
  • separately ping distributors
  • maybe a PEAR package with replacement tasks? (@package_version@)

Snapshots

...