ERP/2.40/Release Process
Introduction
This document describes the different phases of the release engineering process leading up to the actual build and publication of a 2.40 release.
Deliverables
Every Professional Subscription release is delivered in many flavors, depending on if it's the initial release or not:
- First time:
- Appliances (DVD-ISO, VMware, Xen), x86_64.
- SCM tag (Subversion, Mercurial)
- Subsequent updates:
- SCM tag (mercurial and Subversion).
- Updates of the 2.40 appliance (stack) using the Conary packager manager and rBuilder.
General process workflow
- Schedule the release: there is a 2.40 release calendar and as it is a major release, the maintenance packs are scheduled to be released the last ten days of every month.
- Create the new release in the issue tracker.
- Freeze the Hg repository and announce it to openbravo-develoment mailing list (ob-devel ML), so that QA can start working on it.
- Create a temporary tag in SVN: QA gives the green light for this in the release-management mailing list (RM ML). After tagging QA is again notified but this time in RM ML to start the upgrade test.
- Once QA gives a green signal in RM ML, tag and sign (GPG) the release in erp/stable/2.40.
- Replicate the tag to Subversion.
- Unfreeze the repository and announce it in the ob-devel ML.
- Update the Release Notes.
- Announcements.
Initial requirements
Once the decision has been made to create a new release, the release management team should check the following:
- Make sure the taken revision has passed the continuous builds and tests in erp/stable/2.40
Issue tracker release addition
To add the new release to the issue tracker:
- Log in into issues.openbravo.com. You require Administrator or Manager privileges. Talk to the RM team to receive this roles.
- Click on Manage, then Manage Projects and finally on Openbravo ERP.
- Scroll down to the Versions section, enter 2.40MPX in the text box and click on Add and Edit Version.
- Enter an appropriate date so that it gets ordered alphabetically in the list.
Freeze the Hg repository
Once every thing is set we are ready to freeze the repository so that no more commits can be pushed.
Freezing Howto
Either keep it in the freezer or just follow these simple steps:
- SSH into code.openbravo.com.
- Edit file /scm/hg/config/.hgrc
- Edit lines under [web erp/stable/2.40].
- Comment the allow_push lines which gives these access to large number of users and uncomment the allow_push line with only access to RM and QA people.
- Reload Apache (/etc/init.d/apache2 reload).
Change Version string in Template
This is to change the version in config/Openbravo.properties.template file
- clone => change => push
hg clone https://code.openbravo.com/erp/stable/2.40 2.40
- Edit version to be released version.
- Push the changes back.
hg ci -m "Update to version 2.40MP7" hg push
Announcement
Send an e-mail notifying about the freeze of the repository.
- To: release.management@openbravo.com, openbravo-development@lists.sourceforge.net
- Subject: erp/stable/2.40 frozen
- Text: As per the process of Maintenance Pack release, erp/stable/2.40 has been frozen.
Monitor the QA testing
The QA team starts a heavy set of tests over this release. This is an iterative process repeated until the QA team accepts the release.
Once they accepts it, they'll notify it to the RM ML and the RM Team reviews the issue tracker to make sure there are no immediate or critical issues. For query this bugs it's needing to include in the search criteria of issues: the "target version" equal to the MP that is released and "type" equal to defect. If the are results for this query RM should ask for this issues to QA.
Create a temporary tag
This tag (we usually call this tag as r2.40mpx-test) is created in the Subversion repository so that QA can perform the upgrade test from version 2.35MPX.
And the steps related to this process are.
- SSH into dev.openbravo.com as openbravo user..
- Run tags-hg2svn.sh script, this script creates a tag from mercurial to svn.
eg. tags-hg2svn.sh https://code.openbravo.com/erp/stable/2.40 tip https://dev.openbravo.com/svn/openbravo/tags/r2.40mp7-test
Announcement
This time we send a mail to RM ML and notify that tag has been created and QA can perform upgrade test.
Tagging
Once QA accepts to release and no critical or immediate issues in tracker with target version the current 2.40 MP version, now the tested changeset is ready to be tagged.
Mercurial Tag
Clone erp/stable/2.40
Before cloning make sure your ~/.hgrc is configured properly. (Check Here)
Now if ever thing is set we are ready to clone erp/stable/2.40.
eg. hg clone https://code.openbravo.com/erp/stable/2.40 2.40
Create the Tag
General command:
hg tag 2.40MPX
eg. hg tag 2.40MP7
Check the result by running:
hg tags
Sign it
The RM teams signs the official tags with GPG keys. If you don't have a key, create one.
Then, configure your mercurial to use this GPG key. In $HOME/.hgrc:
[extensions] gpg = [gpg] key = KEYID
- Note: You will get KEYID as the resultant of creating the GPG key.
- eg. pub 1024D/CAEE046C 2009-07-16 (In this value after '/' is the KEYID)
Also, make sure you export GPG_TTY=`tty` in your current shell:
export GPG_TTY=`tty`
Finally, sign the release:
hg sign
And check that the commit has succeeded:
hg log -l1
Push
Firstly, check that the commits to be pushed are sane:
hg outgoing -p
And finally push the result:
hg push
Subversion Tag
This is similar to what we did for creating temp. tag but this time it will be r2.40mp7 (not r2.40mp7-test as earlier)
- Log in to dev.openbravo.com as openbravo user.
- Run tags-hg2svn.sh script, this script creates a tag from mercurial to svn.
eg. tags-hg2svn.sh https://code.openbravo.com/erp/stable/2.40 tip https://dev.openbravo.com/svn/openbravo/tags/r2.40mp7
Unfreeze the repository
Just reversing the freeze steps will make your repository to unfreeze. i.e. You again give read/push permissions to all the listed user.
Announcement
To announce this we mail to RM ML and notify that the repository has been unfreezed
Release notes
Follow these steps to generate the release notes:
- Collect all the fixes done in this release. To get the issue numbers one way is as follows:
hg clone https://code.openbravo.com/erp/stable/2.40 2.40
hg log -r 2.40MP6:2.40MP7 --template '{desc}\n' > /tmp/issues
grep -i fix /tmp/issues > /tmp/fixes
Check if only one issue_id per line if not split the line, you can ignore related to issue_id
sed 's/[^0-9]*\([0-9]*\).*/\1/' /tmp/fixes | sed 's/^0*//' | sort | uniq > /tmp/ids cat /tmp/ids | tr '\n' ',' | sed 's/^,//' | sed 's/,$/\n/'
- Note: this will give you a comma separated list of all the issues numbers.
- Query to the issues.openbravo.com database:
ssh username@issues.openbravo.com
mysql -u mantisdbuser -p issuetrackercas --password=user_pass \
--execute="select id, summary from mantis_bug_table where id in (comma_seperated_issue_ids);" > /tmp/issues_summary
sed 's/[+|-]//g' /tmp/issues_summary | awk '{print "* {{IssueReference|issuenum="$1"}}:"$0}' | awk '{$3="";print $0}' > /tmp/issues_wiki
- Create/Update the release notes for this release, for example refer to the document.
- And update the Release history page
Monitor the QA testing
The QA team test the upgrade process from the administration console.
This test should be passed before the Final Announcement.
Final Announcements
This consists of sending four mails.
- Two separate mails to on-update-announce@openbravo.com
- with subject and body containing OBUA-<yyyy-mm-dd> Openbravo Basic Network 2.40MPx.
- with subject and body containing OBUA-<yyyy-mm-dd> Openbravo SMB Network One 2.40MPx. (please refer to the mail template below)
Openbravo Update Advisory: <yyyy-mm-dd> Release Date: <month dd, year> (eg:July 22, 2009) Product: Openbravo Basic Network (or Openbravo SMB Network One) Description: An updated Openbravo ERP 2.40MPx package is available as a SVN tag. Openbravo ERP 2.40MPx changelog: http://wiki.openbravo.com/wiki/ERP_Network/2.40/ReleaseNotes#2.40MPx Copyright 2008-2010 Openbravo, S.L.U.
- To RM ML notifying the release of the MP .
- To openbravo.development ML notifying the release of the MP .
* Note: the subject of mail to openbravo.development ML should be something like this 2.40MP7 package is now available to Openbravo Network susbcribers
Integration with builds.openbravo.com
Work Flow
- Set up builds.openbravo.com to take a revision that has passed all our tests (build, incremental, consistency, smoke tests).
- Create a tag for those revisions in https://code.openbravo.com/erp/stable/2.40
- Nightly replicate them to https://dev.openbravo.com/svn/openbravo/tags/ as a tag.
Job specification
| Job titile | Sequence | Tied to | Pull changes from | Update repo | Estimate (hh.mm.ss) |
| erp_stable_2.40-inc-oracle | 1 | master | https://code.openbravo.com/erp/stable/2.40 | 2.40-int-1 | 00.15.00 |
| erp_stable_2.40-inc-pgsql | 2 | master | 2.40-int-1 | 2.40-int-2 | 00.15.00 |
| erp_stable_2.40-full-oracle | 3 | master | 2.40-int-2 | 2.40-int-3 | 00.25.00 |
| erp_stable_2.40-full-pgsql | 4 | master | 2.40-int-3 | None (next job will take of updating next local repo) | 00.25.00 |
| erp_stable_2.40-db-customrange-test | 5 | master | Workspace of erp_stable_2.40-full-pgsql | 2.40-int-3 to 2.40-int-4 | 00.00.10 |
| erp_stable_2.40-pgsql-db-full-consistency-test | 6 | master | 2.40-int-4 | 2.40-int-5 | 00.30.00 |
| erp_stable_2.40-oracle-smoke-test | 7 | slave-1 | 2.40-int-5 | 2.40-int-6 | 03.00.00 |
| erp_stable_2.40-pgsql-smoke-test | 8 | slave-1 | 2.40-int-6 | 2.40-int-7 | 03.00.00 |
| erp_stable_2.40-tag-mps | 9 | master | 2.40-int-7 | https://code.openbravo.com/erp/stable/2.40 https://dev.openbravo.com/svn/openbravo/tags | 00.10.00 |
Above jobs that trigger test/build with respect to pi main 2.40-integration can be seen here
Category: Release Process

