Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Apache OFBiz Release Plan

NOTE DEJ20060909: This document is still being created and is not a final draft, but should contain most of the operations needed to create a release. We may want to add more sections on preparing for a release such as more on testing, and stuff on the NOTICE, LICENSE, KEYS, etc files.

General Goals, Policies and Process 

Info
titleRepositoy structure

After the svn tag "beforeSvnRestructuring" the repository strcture has changed please refer to history for information before this tag

The What, Why and How of Apache OFBiz

...

  • Release branches will be created approximately once per year. We have decided recently (February 2009) to use the same release numbering scheme than Ubuntu (for instance, 9.4 means released in 2009 in April). This information is used in backend footer to know wich Release.revision is used...
  • The trunk will never go into a feature-freeze state but rather development will continue and contributions will be accepted both immediately before and after the cutoff revision for a release branchAn initial pre-built package will be created and made available to help get people started with the branch
  • Once a release branch stabilizes an initial a "stable" release tag and pre-built release package will be issued
  • Patches on the release branch can be created and applied whenever users desire
  • Follow on release tags and pre-built release packages will be issued when major problems are discovered and fixed, and periodically to represent a significant number of fixes and updates
  • Each new release tag and pre-built release package will be represented by a third position version number change (since February 2009 seems that we will prefer to use the revision number for that)
  • Because it needs too much work, at some point older releases will not be supported by the community (trunk patches not backported)

How to do OFBiz Release-Related Tasks

Steps for testing a revision or branch before a release:

  1. For revision: svn export -r ${revision-number} https://svn.apache.org/repos/asf/ofbiz/trunk ofbiz
  2. For branch: svn export https://svn.apache.org/repos/asf/ofbiz/branches/$\{branch-name} ofbiz
  3. $ cd ofbiz
  4. $ ant run-tests
  5. Check results... (search for [JUNIT])
  6. $ cd ..
  7. $ rm -Rf ofbiz/

Steps for a test snapshot type "release":

  1. Example file-base-name: apache-ofbiz-4.0.0.TS1
  2. $ svn export https://svn.apache.org/repos/asf/ofbiz/trunk ${file-base-name}
  3. $ cd ${file-base-name}
  4. $ echo ${revision-number} > REVISION
  5. "ant load-demo" on Windows or "./ant load-demo" on Linux/Unix/OSX ("ant run-install" or "./ant run-install" for versions prior to R12.04).
  6. $ cd ..
  7. $ zip -r ${file-base-name}.zip ${file-base-name}/
  8. $ tar -czvf ${file-base-name}.tgz ${file-base-name}/*
  9. $ gpg --output ${file-base-name}.zip.asc --detach-sig --armor ${file-base-name}.zip
  10. $ gpg --output ${file-base-name}.tgz.asc --detach-sig --armor ${file-base-name}.tgz
  11. $ openssl md5 ${file-base-name}.zip > ${file-base-name}.zip.md5
  12. $ openssl md5 ${file-base-name}.tgz > ${file-base-name}.tgz.md5

Steps for creating a branch in preparation for a real release:

NOTE: these steps all start with an svn co command though it is not intended that this would be done each time such an operation is done, rather it is to show context with an expectation that those doing these operations would already have a checkout somewhere to start from.

  1. Exaple branch-name: release4.0 (for a series of releases using 4.0.0, 4.0.1, 4.0.2, etc)
  2. $ svn co https://svn.apache.org/repos/asf/ofbiz ofbizroot
  3. $ cd ofbizroot
  4. $ svn copy trunk branches/${branch-name}
  5. $ svn commit -m "Created new branch: ${branch-name}"

Steps for applying a fix from the trunk to a branch as part of maintenance:

Steps for back-porting a fix from the trunk to a release branch:

  1. cd into the checked out release branch folder
  2. $ svn co https://svn.apache.org/repos/asf/ofbiz/branches/$\{branch-name} ofbiz
  3. $ cd ofbiz
  4. $ svn merge -r ${revision-1}:${revison} https http://svn.apache.org/repos/asf/ofbiz/ofbiz-framework/trunk
  5. $ svn commit -m "Applied fix from trunk for revision: ${revision}"

Steps for creating a release from a branch:

  1. Example file-base-name: apache-ofbiz-4.0.0, or for framework only: apache-ofbiz-framework-4.0.0
  2. Example branch-name: release4.0
  3. $ svn co https://svn.apache.org/repos/asf/ofbiz ofbizroot
  4. $ cd ofbizroot
  5. $ svn copy branches/${branch-name} tags/${file-base-name}
  6. $ cd ..
  7. $ svn export https://svn.apache.org/repos/asf/ofbiz/tags/$\{file-base-name}
  8. $ cd ${file-base-name}
  9. For framework only release: rm -Rf applications/
  10. $ "ant load-demo" on Windows or "./ant load-demo" on Linux/Unix/OSX ("ant run-install" or "./ant run-install" for versions prior to R12.04).
  11. $ cd ..
  12. $ zip -r ${file-base-name}.zip ${file-base-name}/
  13. $ tar -czvf ${file-base-name}.tgz ${file-base-name}/*
  14. $ gpg --output ${file-base-name}.zip.asc --detach-sig --armor ${file-base-name}.zip
  15. $ gpg --output ${file-base-name}.tgz.asc --detach-sig --armor ${file-base-name}.tgz
  16. $ gpg --print-md MD5 ${file-base-name}.zip > ${file-base-name}.zip.md5
  17. $ gpg --print-md MD5 ${file-base-name}.tgz > ${file-base-name}.tgz.md5
  18. $ gpg --print-md SHA512 ${file-base-name}.zip > ${file-base-name}.zip.sha
  19. $ gpg --print-md SHA512 ${file-base-name}.tgz > ${file-base-name}.tgz.sha

Release Management Guide

Some references to ASF official pages:

http://www.apache.org/dev/release

http://www.apache.org/dev/release-publishing.html

http://www.apache.org/dev/mirrors

New Release Workflow

The workflow for a new release has four phases: preparing a candidate release, voting, publishing the release, announcing the release

Preparing a Candidate Release

  1. create a release tag
  2. export the release branch in a folder named apache-ofbiz-<YY.MM.NN>
  3. add a file named revision.txt containing the revision number of the exported codebase
  4. zip the exported folder as apache-ofbiz-<YY.MM.NN>.zip
  5. create an OpenPGP Compatible ASCII Armored Detached Signature named apache-ofbiz-<YY.MM.NN>.zip.asc
  6. create an MD5 Checksum named apache-ofbiz-<YY.MM.NN>.zip.md5
  7. create an SHA512 Checksum named apache-ofbiz-<YY.MM.NN>.zip.sha
  8. commit the 4 release files to https://dist.apache.org/repos/dist/dev/ofbiz/

Publishing the Release

After a successful vote, the Candidate Release becomes an official Release and can be published:

  1. move the release files from https://dist.apache.org/repos/dist/dev/ofbiz/ to https://dist.apache.org/repos/dist/release/ofbiz/

Announcing the Release

These steps must be done after at least 24 hours after the release has been published (time required for the propagation of the release files in the mirrors network):

  1. Add a news item to the main page of the OFBiz website: http://ofbiz.apache.org/index.html
  2. Add the information about the release to the OFBiz download page: http://ofbiz.apache.org/download.html
  3. Add the information about the release to the release history page: http://www.apache.org/dist/ofbiz/
  4. Send an announcement to the user, dev and announce@apache.org lists; if the release contains vulnerability fixes send also to security@apache.org

 Alternatively you can use the ./tools/mergefromtrunk.sh (or .\tools\mergefromtrunk.bat) tool.