Procedures for doing a MariaDB release

This page documents the release process for MariaDB.

Release Steps

  1. Commit fixes into the appropriate tree until Buildbot looks OK
  2. The 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)
  3. The release coordinator notifies the following of the tag, the build number (see Note 6, below), and that the tree is ready for release:
    1. The Maria Docs team (maria-docs [at] lists (dot) launchpad (dot) net)
    2. The Maria Dev team (maria-developers [at] lists (dot) launchpad (dot) net)rsync.osuosl.org::mariadb/mariadbrsync.osuosl.org::mariadb/mariadb
    3. The community team (community [at] askmonty (dot) org)
  4. The docs team verifies with the release coordinator that all three merges are done (MariaDB 5.1-5.5; mysql, xtradb)
  5. The Builbot buildslaves build packages and the release coordinator informs the Docs team when they are ready to be copied over
  6. 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.
    • Note: For MariaDB Galera Cluster releases:
      1. Rename the source tar.gz file to have '-galera' in the name prior to uploading it to the mirrors. Don't forget to regenerate the md5sum for the file in md5sums.txt.
      2. If the galera package has been updated, rebuild as per instructions here (Debian/Ubuntu). Add the newly built packages to /home/dbart/galera/ and move the old packages to /home/dbart/galera/old/
  7. Someone on the release team creates the Debian and Ubuntu repositories then uploads them to osuosl. (See note 4)
  8. Someone on the release team creates the YUM repositories and then uploads them to osuosl. (See note 5)
  9. Once all files are uploaded to osuosl, run the trigger script, to push the new files out to the public server:
    ./trigger-mariadb
  10. Packages get uploaded to mirrors (this happens automatically as soon as the above trigger script is run)
  11. The Docs team imports the new release into the MariaDB Download system
  12. The Docs team fills in, edits, and finishes the release notes and changelog pages and removes the unreleased template (if it is there) about the information on the page being about an unreleased version
  13. 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">>
  14. The Docs team preps updates to other documentation as necessary
    • Check with the Release Coordinator to see if there are any new features that should be added to the series pages (links below)
  15. Once all packages have been mirrored, the Docs team activates the new release on the 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.
  16. If this is a MariaDB 5.3 release, copy the CentOS 5 MariaDB-shared-5.3 rpms (x86_64 and i386) over to /media/backup/archive/rpm/ on hasky and update the sym-links in that folder to point at them.
  17. update the MacOS brew file mariadb.rb with the latest version and sha1sum, push it to github, and issue a pull request (this assumes you already have a fork of the brew upstream and have it all set up)
  18. Check the MariaDB Deprecation Policy page to see if this will be the last release for any platforms. Be sure to mention them in the Release Notes and in the Announce emails. Update the page as necessary. After the release is out, edit the buildbot config to turn them off. Do not remove the VMs.
  19. Announce the release
    1. 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).
    2. The Docs team updates (if applicable):
      1. the releases RSS feed (also expire the news entry for the previous release)
      2. If the release is the current stable branch:
        • Mark the Release Notes as featured in the KB admin interface
        • Unmark the previous release's release notes as featured
      3. the banners on the following websites:
      4. the applicable "What is MariaDB x.x" page with the new version
      5. the MariaDB Download Banner
    3. 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">>'):
    4. An IRC op (dbart, etc...) updates the topic in #maria (if release is the current stable)
    5. The community team announces the release on the announce and maria-discuss mailing lists, and via blogs and other methods
    6. For major releases, send the release announcement through PR Newswire (Colin does this now)

Notes:

  1. Tagging releases: Here is an example bzr command line to make the tag:
    bzr tag --revision=3402 --directory=lp:~maria-captains/maria/5.3 mariadb-5.3.4
  2. Creating md5sums: Here are the commands I (Daniel) use to create the md5sums of a release:
    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
  3. Obtaining info for Changelog and Release Notes: A raw log of all changes can be obtained from bzr as follows:
    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 --kb-short --include-merged ../${oldrelease} > /tmp/short.txt
    bzr missing --kb-long --include-merged ../${oldrelease} > /tmp/long.txt
    • Assuming that you have kbchangelog bzr plugin, this will generate a list of changes that uses Wiki Creole syntax and is ready to be pasted into the corresponding Changelog page. It might need a little bit of manual polishing, though.
    • if there is no ${oldrelease} then do the following:
      cd ${newrelease}/
      bzr log --kb-short --include-merged >  /tmp/short.txt
      bzr log --kb-long --include-merged >  /tmp/long.txt
  4. Creating Debian and Ubuntu Repositories: Prior to doing this, branch mariadb-tools from Launchpad:
    bzr branch lp:mariadb-tools/trunk mariadb-tools
    (or update a previously branched copy with "bzr pull").
    1. Copy the build over to a working directory.
    2. Run the following commands:
      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 ../
    3. On the osuosl mirror, move the old repo/5.x dir and upload the new repo to repo/5.x
      scp -r repo osuosl:data/repo/5.2
    4. Clean up your working directory by removing the local repo and build-### directories
  5. Signing RPM Packages and Creating the YUM repositories:
    1. Prior to beginning, ensure that you have a .rpmmacros file with the following contents (replace '<keyname>' with the actual key name):
      %_signature gpg
      %_gpg_path ~/.gnupg
      %_gpg_name <keyname>
      %_gpgbin /usr/bin/gpg
    2. Create a directory for the files based on the major.minor release numbers (for example: 5.5)
    3. cd into the directory
    4. run the mkrepo-yum.sh script:
      path/to/mariadb-tools/buildbot/mkrepo-yum.sh path to build-buildnum
      1. For 5.1, 5.2, 5.3 releases, you will have to temporarily change the script to just process centos5 and rhel5. Fedora, centos6, and rhel6 only support 5.5 and above. Be sure to revert your changes after running the script.
    5. at certain points while the script runs you will be prompted for the signing key password
    6. Upload the files to the primary mirror:
      release="mariadb-5.5.24"
      for dir in $(ls);do
        rsync -avP ${dir} osuosl:data/${release}/
      done
    7. Upload the files to the YUM repo server:
      version="5.5"
      for dir in $(ls);do
        rsync -avP ${dir} yum-repo-server:${version}/
      done
    8. Once uploaded, ssh to the yum repo server and move the files to their proper location, replacing the previous repo ${releasenum} dir.
  6. 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:
    1. Look at the columns here. The headers across the top list the branch (5.2 in this case) and the revision numbers for the last five builds.
    2. 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 Launchpad).
    3. Select one of the builds in the correct column and look for the property "tarbuildnum". This is the build-### directory you want.

Comments

Comments loading...