== Procedures for doing a MariaDB release
This page documents the release process for MariaDB.
=== Release Steps
# Commit fixes into the appropriate tree until
[[https://buildbot.askmonty.org/buildbot/waterfall|Buildbot]] looks OK
** [[http://buildbot.askmonty.org/buildbot/grid?branch=5.1&category=package|branch=5.1]]
([[http://buildbot.askmonty.org/buildbot/grid?branch=5.1-release&category=package|5.1-release]])
** [[http://buildbot.askmonty.org/buildbot/grid?branch=5.2&category=package|branch=5.2]]
([[http://buildbot.askmonty.org/buildbot/grid?branch=5.2-release&category=package|5.2-release]])
** [[http://buildbot.askmonty.org/buildbot/grid?branch=5.3&category=package|branch=5.3]]
** [[http://buildbot.askmonty.org/buildbot/grid?branch=5.5&category=package|branch=5.5]]
([[http://buildbot.askmonty.org/buildbot/grid?branch=5.5-release&category=package|5.5-release]])
# The **[[release-coordinator|Release Coordinator]]** adds a release tag to the release tree (e.g.
tag:mariadb-5.2.5 for the 5.2.5 release, see note 1 below for sample
command line)
# The release coordinator notifies the following of the tag, the build number
(see Note 6, below), and that the tree is ready for release:
## The Maria Docs team
(<<code>>maria-docs [at] lists (dot) launchpad (dot) net<</code>>)
## The Maria Dev team
(<<code>>maria-developers [at] lists (dot) launchpad (dot) net<</code>>)
## The community team (<<code>>community [at] askmonty (dot) org<</code>>)
# The Builbot buildslaves build packages and the release coordinator informs
the Docs team when they are ready to be copied over
# Someone with the proper access logs in to the osuosl mirror and updates the
get.sh script with the correct values and then runs the script. This script
uploads the source tarball, the generic Linux binaries, and the windows
builds.
# Someone on the release team creates the Debian and Ubuntu repositories then
uploads them to osuosl. (See note 4)
# Someone on the release team signs the RPM packages and then uploads them to
osuosl. (See note 5)
# Once all files are uploaded to osuosl, run the trigger script, to push the
new files out to the public server:<<code lang=bash inline=false>>./trigger-mariadb<</code>>
# Packages get uploaded to mirrors (this happens automatically as soon as the
above trigger script is run)
# The Docs team imports the new release into the
[[http://downloads.askmonty.org|MariaDB Download system]]
# The Docs team fills in, edits, and finishes the release notes and changelog
pages and removes the <<code>>unreleased<</code>> template (if it is there)
about the information on the page being about an unreleased version
# The Docs team creates release notes and changelog pages for the next release
(so that the developers can fill them in as they work on the release)
** The [[unreleased]] banner should be placed on these pages to let users know
that the information on the page is about an unreleased version. The creole
syntax for including the template is: {{{<<include slug="unreleased">>}}}
# The Docs team preps updates to other documentation as necessary
# The [[release-coordinator|Release Coordinator]] updates the status of all bugs fixed in the release to "Fix Released" in [[https://bugs.launchpad.net/maria|launchpad]]
# Once all packages have been mirrored, the Docs team activates the new release
on the [[http://downloads.askmonty.org|MariaDB Downloads]] page and activates
any other documentation changes/additions
** Use the "Check Mirrors" feature of the downloads system to check if the files are fully mirrored.
# Announce the release
##lower-alpha Consolidate release announcements when possible (e.g. one release
email for a set of 5.1/5.2/5.3 releases in a single week).
## The Docs team updates (if applicable):
### the [[http://askmonty.org/downloads/feeds/releases/|releases RSS feed]] (also expire the news entry for the previous release)
### the banners on the following websites:
**** http://mariadb.org
**** http://askmonty.org
**** http://kb.askmonty.org
### the [[http://askmonty.org/wiki/Template:MariaDB_Download_Banner|MariaDB Download Banner]]
## Update the 'latest' template for the release, and include it at the top of the previous release's release notes page (e.g. with '{{{<<include slug="latest-55">>}}}'):
**** [[latest-55]]
**** [[latest-53]]
**** [[latest-52]]
**** [[latest-51]]
## An IRC op (Daniel, etc...) updates the topic in #maria
## The community team announces the release on the
[[http://mariadb.org|announce]] and
[[http://launchpad.net/~maria-discuss|maria-discuss]]
mailing lists, and via
[[http://askmonty.org/blog|blogs]] and other methods
## For major releases, send the release announcement through PR Newswire (Colin does this now)
<<style style="font-size:0.8em;">>
== Notes:
# **Tagging releases:** Here is an example bzr command line to make the tag:<<code lang=bash inline=false>>bzr tag --revision=3402 --directory=lp:~maria-captains/maria/5.3 mariadb-5.3.4<</code>>
# **Creating md5sums:** Here are the commands I (Daniel) use to create the md5sums of a release:<<code lang=bash inline=false>>cd /path/to/dir/with/releases/
release='mariadb-5.2.1-beta'
for dir in $(find ${PWD}/${release} -type d); do echo; echo ${dir};cd ${dir};md5sum *;echo;echo;done
<</code>>
# **Obtaining info for Changelog and Release Notes:** A raw log of all changes can be obtained from bzr as follows:<<code lang=bash inline=false>>sourcedir="5.1"
oldrelease="mariadb-5.1.44b"
newrelease="mariadb-5.1.47"
bzr branch --no-tree -rtag:${oldrelease} ${sourcedir} ${oldrelease}
bzr branch --no-tree -rtag:${newrelease} ${sourcedir} ${newrelease}
cd ${newrelease}/
bzr missing --line --include-merges ../${oldrelease} > /tmp/short.txt
bzr missing --include-merges ../${oldrelease} > /tmp/long.txt
<</code>>
It is then a manual process to read through this and convert it into some kind
of human-readable release notes...
# **Creating Debian and Ubuntu Repositories:** Prior to doing this, branch mariadb-tools from Launchpad:<<code lang=bash inline=false>>bzr branch lp:mariadb-tools/trunk mariadb-tools<</code>>(or update a previously branched copy with "bzr pull").
##lower-alpha.1 Copy the build over to a working directory.
## Run the following commands:<<code lang=bash inline=false>>mkdir repo
cd repo
eval $(gpg-agent --daemon)
path/to/mariadb-tools/buildbot/mkrepo-debian.sh debian path/to/build-buildnum
path/to/mariadb-tools/buildbot/mkrepo-ubuntu.sh ubuntu path/to/build-buildnum
cd ../
<</code>>
## On the osuosl mirror, move the old repo/5.x dir and upload the new repo to repo/5.x<<code lang=bash inline=false>>scp -r repo osuosl:data/repo/5.2<</code>>
## Clean up your working directory by removing the local repo and build-{{{###}}} directories
# **Signing RPM Packages:**
##lower-alpha.1 Prior to beginning, ensure that you have a .rpmmacros file with the following contents (replace '<keyname>' with the actual key name):<<code lang=bash inline=false>>%_signature gpg
%_gpg_path ~/.gnupg
%_gpg_name <keyname>
%_gpgbin /usr/bin/gpg
<</code>>
## Copy the {{{build-###}}} directory over to a working directory.
## Sign the files:<<code lang=bash inline=false>>rpm --addsign $(find build-### -name '*.rpm')<</code>>
## cd into the build dir and regenerate the md5sums: <<code lang=bash inline=false>>for dir in $(ls -d *rpm*);do
cd ${dir};
pwd;
rm -v md5sums.txt;
md5sum $(find . -name '*.rpm') >> md5sums.txt;
md5sum -c md5sums.txt;
cd ../;
done
<</code>>
## Upload the files to the primary mirror:<<code lang=bash inline=false>>release="mariadb-5.2.7"
for dir in $(ls -d *rpm*);do
scp -r ${dir} osuosl:data/${release}/
done
<</code>>
# **Determining build numbers for releases:** Build numbers come from
Buildbot. To get the build number for a specific buid, e.g. for MariaDB 5.2
builds:
##lower-alpha.1 Look at the columns
[[https://buildbot.askmonty.org/buildbot/grid?branch=5.2&category=package|here]].
The headers across the top list the branch (5.2 in this case) and the
revision numbers for the last five builds.
## Pick the column that corresponds to the revision number with the with the
correct release tag (you can view the tags and revision numbers on
[[http://bazaar.launchpad.net/~maria-captains/maria/5.2/changes/|Launchpad]]).
## Select one of the builds in the correct column and look for the property
"tarbuildnum". This is the {{{build-###}}} directory you want.
<</style>>