Developer Area/Release Instructions/Template:The Release

From Mahara Wiki

< Developer Area‎ | Release Instructions
Revision as of 15:59, 6 May 2022 by Dianne.tennent (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision β†’ (diff)

Template:Developer Area/Release Instructions/Template:Final Checks

πŸ““ Changelog and release notes

Use the templates below to structure your changelog and release notes.

(Release candidate) Skip the changelog and release notes

Do not populate the changelog. For the release notes put something like 'First release candidate for 1.4'.

Changelog template

Note: You can copy the list of bugs from the milestone page ( and re-format the list.

Changelog template.png

Release notes templates

See paste: release notes template for major releases.

Major release release notes 21.10.png

See paste: release notes template for minor point releases.

Minor point release release notes.png

⚑ The release script

  • A git repo will be created at /tmp/mahara.####/mahara/ cloned from .
  • It builds Mahara archives based on the given _DEV branch and puts thme into your current folder. ( .zip, .tar.gz.asc, and .tar.bz2.asc)
  • You will get a script to run later.
  • (Major releases .0) A new _STABLE branch is created off the _DEV branch.

Run the script

  1. Go into mahara-scripts and git pull the latest version.
  2. Run ./release.php X.Y.Z X.Y_DEV.
    • X.Y.Z is the new branch that will be made. This is also used in the archive file names.
    • X.Y_DEV is the existing branch we will create the new release from.
    • If the Z in X.Y.Z is "0" this will also create a new _STABLE branch.
  3. When prompted, insert your changelog.

Any data you enter for the prompts will go into the Launchpad release page. You can enter it here, or leave it empty here and enter it directly into the Launchpad webpage.

Check the terminal output in case there are GPG errors

E.g. Tag new version bump commit as 'X.YRC2_RELEASE' error: gpg failed to sign the data error: unable to sign the tag

So this is what I did to fix it, all commands are on command line:

  1. Update the gpg program with: git config --global gpg.program gpg2
  2. Test if it is working with: echo "test" | gpg2 --clearsign

It wasn't so I had to do: export GPG_TTY=$(tty)

then run again echo "test" | gpg2 --clearsign

Run release.php command again and check if it still gives the error.

Do not reboot your machine in the middle of doing a release or you will have to run through the release script again.

Note: For release candidates the commit message should be empty.

βœ… Testing

With continuous Behat testing throughout development, we only need to some basic manual testing.

Extract the build and prep the database

Test that we can install Mahara with the pre-built packages.

  1. Extract the build (.tar or .zip) of your pre-built Mahara and make sure you can connect to it via web installer.
  2. Drop the database and create a new blank one.

Test case #1: Install the site with the web interface

  1. Go to your Mahara site and click 'Install'.
  2. Reset your database and repeat with MySQL/PostgreSQL.

Note: If we are doing a .0 release the install will complain about missing $versions->$currentmajorversion->latest release number but don't panic this is because the local copy of the release has the series version that doesn't exist upstream yet so we can ignore this warningΒ·

Test case #2: Manual upgrade with the CLI and the web interface

Web interface

  1. Install a fresh site on version X.Y.Z(-1), i.e. (an earlier version).
  2. Create a portfolio, a blog with a blogpost, a group with a forum and forum post.
  3. Switch the code to your current release.
  4. Check that everything still works.
  5. Go to the site and click 'Upgrade' to get the site version to X.Y.Z .
  6. Repeat with PostgreSQL/MySQL.


  1. Install a fresh site on version X.Y.Z(-1), i.e. (an earlier version).
  2. Create a portfolio, a blog with a blogpost, a group with a forum and forum post.
  3. Switch the code to your current release.
  4. Upgrade to X.Y.Z with the CLI script htdocs/admin/cli/upgrade.php
  5. Check that everything still works.
  6. Repeat with PostgreSQL/MySQL.

πŸš€ Sign and upload the tarballs

Run ./ to upload the release and clean up any temporary files.

Note I: If running this file stops before completion for any reason you will need to edit it and comment out the bits that did finish so that you don't run those buts twice then try the script again. For example the script does the bit where it pushes the tag to the git remote and signs the zipped files but doesn't upload them - you would need to comment out the 'git push' lines and the 'gpg --armor' lines.

Note II: If the zipped files fail to upload to Launchpad via the script then you will need to manually upload the zipped files and their corresponding .asc files. To do this go to the milestone page in Launchpad and click the 'Add download file' link. Set the description to: release tarball and choose the matching zipped and .asc file to upload. You will need to do this for all the three types: .zip, .tar.bz2, .tar.gz

πŸ› Update bugs statuses

Go to Launchpad and click on all of the bugs targeted for that milestone and move them from 'Fix committed' to 'Fix released'.


In Firefox, go to the milestone page and open all the bugs in new tabs at once by pasting the following into the browser console.

var result = document.evaluate("//tbody//tr[contains(., 'Committed')]//a[contains(@href, 'bugs')]", document, null, XPathResult.ANY_TYPE,null ); var mycount=0; while(node = result.iterateNext()) {, '_blank'); mycount++; if (mycount == 50) { break; } }

You will ned to allow popups for the site for this to work and it will open up to 50 bugs where the status is 'Committed'. If you have more than 50 to do - mark the first ones 'released' - refresh the list and do again.

Now is also a good time to create the next release number in the series. Any remaining bugs that were not fixed for this release may be transferred to the next one, if they're still on the roadmap but were simply delayed.

πŸ“” Update your milestone

  1. Paste your release notes into the 'Release notes' area.
  2. Check that the milestone is inactive now that it has a release.

Screenshot showing the status for a milestone for it is 'inactive'.

πŸ“— Update releases page

  1. Go to the releases page's section 'Current and upcoming releases.'
  2. Update the text: "The latest stable version of Mahara is MAJOR_VERSION , released on DATE"
  3. Add a new row for the major release. (If you edit the area, there is a template available to copy)
  4. Add the release date and release notes for the minor point releases.
  5. Update the major version where 18 months has passed since its release to be 'unsupported'.

Updating current and upcoming releases.png

🌏 Update the language packs

Create a new translation branch on and update the language scripts for the new release so that they appear on

Check that the language packs have updated:

  1. Install a site on the released version.
  2. Install the Japanese language pack (a fully translated lang pack is easier to check with)

Note: The number of language packs we support can be more than the supported Mahara versions as some people want to update old lang packs.

πŸ“£ Announcements

General announcements

  1. Publish your prepared security forum and news forum posts.
  2. (RC only) Publish news forum posts to get people to test the release.
  3. (Major release only) Publish news forum posts to announce the major release.

πŸ”’ Update MITRE about release for CVE number publication

🟑 Kristina

If the release included security updates for which CVE numbers had been issued, request an update to the CVE number so it can be published.