ERP/2.50/Release Process
Contents |
Introduction
This document describes the different phases of the release engineering process leading up to the actual build and publication of a 2.50 release, both the Community Edition and the Professional Subscription.
Deliverables
Community Edition
Every Community release is delivered in four flavors:
- SCM tag (Mercurial, code.openbravo.com).
- Source code tarball.
- Updatable OBX file, to be used from the Module Management Console.
- Virtual appliances (QEMU/Parallels, VirtualBox, VMware, Xen), x86.
Professional Edition
Every Professional Edition release is delivered in many flavors:
- SCM tag (Mercurial, code.openbravo.com).
- Source code tarball.
- Updatable OBX file, to be used from the Module Management Console.
- Update of the Core module in the Central Repository.
- Appliances (DVD-ISO, Amazon EC2, QEMU/Parallels, VirtualBox, VMware ESX, VMware, Xen), x86 and x86_64.
- Subsequent updates also include updates of the 2.50 appliance (stack) using the Conary packager manager and rBuilder.
General process workflow
- Schedule the release: there is a 2.50 release calendar and as it is the latest 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.
- Promote changesets from erp/devel/pi to erp/devel/main: QA gives the green light for this in the release-management mailing list (RM ML). And RM performs the merge. Ideally, our continuous integration framework should be in charge of the process of moving changesets from one repository to the other. But this automation is not ready yet.
- Announce this to the RM ML, so that QA can start their work. This step will be eliminated at the moment we automate the merge/promotion process based on tests.
- Tag and sign (GPG) the release in erp/devel/main.
- Build and package the appliance.
- Announce it to the RM ML QA, so that QA can test the appliance.
- Generate source code deliverables: tarball and OBX.
- Upload to SourceForge.net.
- Publish the appliance, tarball and OBX file.
- Update the Release Notes.
- Announcements.
Previous steps
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.50MPX in the text box and click on Add and Edit Version.
- Enter an appropriate date so that it gets ordered alphabetically in the list.
Update the names of the appliances
- In on.openbravo.com go to the project.
- In product version, select 2.50.
- In the list of three images that appear, click on the pencil at the right of each appliances and change the maintenance pack version.
- Submit.
Promote changesets from pi to main
The Openbravo builds farm takes care of continuously testing and merging the code from erp/devel/pi to erp/devel/main. Once the initial requirements have been satisfied and with QA's green light, RM verifies what changeset is the last promoted one and disables the erp_promote_pi_to_main job to stop further merging during the release process.
| Once the changesets are promoted to main either manually are automatic, remember to disable erp_promote_pi_to_main job to stop further commits to main |
Update API changes wiki
Update the API changes list, as follows:
- Rename PI to MPX, e.g. MP10.
- Create a new empty section for PI.
Generate Release News for Review
- Create the wiki document ERP/2.50/Release_Notes/2.50MPX and copy the structure of the template.
- Add at the top of the page the {{WorkInProgress}} wiki label
- Announce to product's owners in openbravo-development mailing list to write the "What's new" and "Fixed issues" sections with meaningful messages.
- Three days before the end of the release process send a remember email that is the last day to edit the releases notes.
- Two days before the end of the release process send a email to get Paolo's <paolo dot juvara at openbravo dot com> final approval before publishing it in forge.openbravo.
- Remove the {{WorkInProgress}} label.
Complete list of fixed issues in the MP
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/devel/main main
hg log -r 2.50MP11:tip --template '{desc}\n' > /tmp/issues
grep -iE 'fix(es|ed)? (issue|bug)?( )?[0-9]+' /tmp/issues > /tmp/fixes
Check if only one issue_id per line if not split the line, you can ignore related to issue_id. Also, review if the backout word exists, and if that changeset was fixed later on or not.
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
Execute this select to obtain the defects:
select id, summary from mantis_bug_table where bugtype='10' and id in (comma_seperated_issue_ids);
copy paste the result table in /tmp/issues_summary
Execute this select to obtain the features request:
select id, summary from mantis_bug_table where bugtype='20' and id in (comma_seperated_issue_ids);
copy paste the result table in /tmp/features_summary
echo "=== Features ===" > /tmp/issues_wiki
sed -e 's/|//g' -e 's/^ //' -e 's/ / /g' /tmp/features_summary | awk '{print "* {{IssueReference|issuenum="$1"}}: "substr($0, 1+length($1)+1)}' >> /tmp/issues_wiki
echo "=== Defects ===" >> /tmp/issues_wiki
sed -e 's/|//g' -e 's/^ //' -e 's/ / /g' /tmp/issues_summary | awk '{print "* {{IssueReference|issuenum="$1"}}: "substr($0, 1+length($1)+1)}' >> /tmp/issues_wiki
The sum of defects and features are stored in /tmp/issues_wiki.
Update release documents
Update with the complete list of bug fixed in the release the release changelog.
Update all the links and dates of releases in the http://wiki.openbravo.com/wiki/ERP/2.50/Release_Notes/2.50MPx.
Packaging
Package
$ ssh tde2-32 $ screen -AmdS release $ screen -r release $ su packager (enter password) $ oberp-2.50-package 2.50MPX
Explanation of the process
- Freeze the API-check repository, to avoid API updates in the release process.
- Create a temp repository clone of main, edit the AD_MODULE version, creates the tag and sign it.
- From this temp repository creates the obx and tarball.
- Copy to tecnicia14/releases/2.50MPX
- Create the virtual appliances from this temporary repository, for do that executes the oberp-2.50-appliances script, this script do an update of the Openbravo ERP package and the appliance group.
- Create the professional appliances in qa status.
- Copy all the appliances to tecnicia14 and then to irc.openbravo.com, doing this we reduce the time between the qa approval and the publish.
Update the Openbravo ERP package and the appliance group
The Community Appliance is mainly used for evaluation. So with this purpose in mind, we package both sources and binaries. Shipping the binaries makes the boot process a lot faster. And including the binaries enabled the user to customize the ERP or install modules. We have a script that automatically updates, builds and cooks the Openbravo ERP package, as well as cook the appliance group recipe and launch the images generation. That is:
- Updates the openbravo package to include the latest version binaries and database dump.
- Cooks openbravo package using rMake and commits it to rBuilder.
- Cooks the appliance group package using cvc.
- Triggers the image creation process in rBuilder (Raw FS image, Raw HDD Image and VMware).
Publish the obx in stage
Go to http://stage.openbravo.essentiaforge.com/projects/core/module and publish a new version with the obx from http://192.168.102.114/releases/2.50MPX/obx
| Don't forget to change the name of the obx to org.openbravo-2.50.<version>.obx before uploading to stage else the process will fail. |
Announcement
Send an e-mail to the RM ML with Subject: 2.50MPX, notifying about:
An update of Core is available in Stage. The OBX, tarball and Community Appliances are available in http://192.168.102.114/releases/2.50MPXY , ready for the QA testing.
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 will review the issue tracker to make sure there are no major or critical issues.
QA finds a show stopper
If QA finds an important issue that should be included in the MP, these are the steps:
- Wait till the bug is fix in pi.
- QA will transplant to main the changeset that solves the issue, or tell RM to do it.
- RM will run all the test in http://builds.openbravo.com/view/devel-main/
- If all are green, RM should start from packaging step.
- Also is need to generate again or update the release notes.
- This changeset (as all transplanted changesets) will also appear also in the hg log of the next release. So, please add this changeset to a google doc, in order that in the next version can be removed from the list of fixed issues.
After QA testing
Once QA accepts to release and no critical or major issues in tracker, the rest is work of release management team.
Confirm
Create SourceForge directories
Create directories by a script is not working currently in SourceForge, so this has to be done manually.
From the web interface of SourceForge as admin user, create the 2.50MPX folder in appliances and sources.
Run the confirm script
Then connect to tde2-32 and execute the packaging script as packager user:
ssh tde2-32 su packager oberp-2.50-confirm-packaging 2.50MPX
Explanation of the process
- Executes oberp-2.50-promote-qa and oberp-2.50-promote-release. This promotes from dev to release the community appliances. This means that the appliances are published in dev state, but this is not a problem because the community appliances don't have updates.
- Promote to release and build in release state the professional appliances
- Upload the community appliances to SourceForge.
- Generate and upload symlinks for the current version of community files in SourceForge.
- The download wizard use these links, so it's not necessary to update this page.
- Upload the professional to the partners portal in s3.
- The partner portal download page is dynamic, so once the appliances are uploaded to s3 it's links will be updated automatically.
- Generates and register the AMIs for the community and the professional appliances in eprojects account.
- Push from the temp repository to main repository in code.openbravo.com.
- The wiki home and the installation manual are updated automatically with the current version.
API docs
This step is fully automated. There is a job that polls daily for new tags in the erp/devel/main repository, generates the Javadoc documentation, uploads it to code.openbravo.com/docs and updates its index page.
API check
There is a job that polls daily for new tags in the erp/devel/main repository, generates the new API and push it to api-checks.
Upload the obx to the Central Repository
- Download the obx of core prepared to be uploaded to the central repository (It's a obx with only module, dependencies and db_prefix information). It can be found in http://tecnicia14/releases/2.50MPX/obx
- Upload the org.openbravo obx here: http://forge.openbravo.com/plugins/module/index.php?title=mPublish&group_id=435
Sync the updates to rmirror
- Login to http://on.openbravo.com/rAA/
- Schedule Outbound Mirroring -> (click on) Mirror Now
Release notes
Add in 2.50 release notes the new MP released.
Announcements
Create the following release announcements:
Forge
Identified as your user (you need admin privileges OpenbravoERP Core project), go to http://forge.openbravo.com/plugins/espnews/index.php?group_id=100 and create a new:
Headline: Openbravo ERP: 2.50MPX available
Use Local News: Yes
Date: today_date
News text: (click on HTML Source button, to see the HTML code):
<p> </p> <p>Openbravo ERP 2.50MPX is available!</p> <p> </p> <p>Check the <a href="http://wiki.openbravo.com/wiki/ERP/2.50/Release_Notes/2.50MPX">release notes</a> for more information.</p>
Click Save.
Identified with a Forge admin account go to http://forge.openbravo.com/plugins/admin/sitehome_content.php?cmsid=11 and change the text to the last MPX the 2 occurrences. (eg MP6 to MP7).
Community announce
Send an email to openbravo-development and release management mailing lists. Example of text:
Subject: Openbravo ERP 2.50MPX available Openbravo ERP 2.50MPX is available! Check the release notes for more information: http://wiki.openbravo.com/wiki/ERP/2.50/Release_Notes/2.50MPX Your name
Change the topics of the IRC channels: #openbravo and #openbravo-es.
/msg chanserv op #openbravo <your nick> /topic Openbravo ERP | Latest: 2.50MPx | http://wiki.openbravo.com | POS support in forums: http://ln-s.net/3ZIf /msg chanserv op #openbravo -<your nick>
Professional list announce
- In the on-update-announce mailing list for Professional Subscription users. And if the update fixes a security issue, announce it to on-security-announce as well.
Subject: OBUA-<yyyy-mm-dd> Openbravo ERP Professional Subscription 2.50MPx Openbravo Update Advisory: <yyyy-mm-dd> Release Date: <Month Date, Year> Product: Openbravo ERP Professional Subscription 2.50 Openbravo ERP 2.50MPx is available! Download a source code tarball, a Core OBX module (update) or an updated Cloud Appliance in the Partner Restricted Area: http://www.openbravo.com/partners/restricted-area/downloads/ You can also use the Module Management Console to update to this version: http://wiki.openbravo.com/wiki/ERP/2.50/Openbravo_ERP_Installation#Online Openbravo ERP 2.50MPx release notes: http://wiki.openbravo.com/wiki/ERP/2.50/Release_Notes/2.50MPx Copyright 2008-2010 Openbravo, S.L.
Note: Reference the release notes in all the announcements (except IRC).
Promotion job
| Once the maintenance pack is released and published, remember to enable erp_promote_pi_to_main job to start stable code promotion from pi to main |
Category: Release Process

