JBoss Eclipse IDE Release Process
Prereqs for using this build
Have write access to download.jboss.org/jbosside
ANT 1.6.5 is required. Set your ant home to the appropriate location.
This build requires SCP ability to download.jboss.com. All QA users have been setup, by default the build script uses the correct login. The private key which is accessed by the build must be in openssh format.
Ensure that the latest version of jsch.jar is installed in your ANT_HOME/lib directory
Each component's repository must be tagged for release. Generally, here are the current tag naming conventions we have for each component:
JBossIDE Core: IDE_CORE_RELEASENAME
JBossAOP Developer: IDE_AOP_DEVELOPER_RELEASENAME
EJB3 Tools: IDE_EJB3_TOOLS_RELEASENAME
Hibernate Tools: TOOLS_RELEASENAME
jBPM Designer: jbpm_gpd_releasename
After tagging is complete, an integration build is made on those tags.
Checkout the build system for JBossIDE
cvs co jbosside/releng/org.jboss.ide.eclipse.releng
From directory releng/org.jboss.ide.eclipse.releng execute the following:
ant -f customizeBuild.xml
This will launch a gui
Create temp dirs for the appropriate locations
You may need to execute 'ant -f customizeBuild.xml customize' to create a build.properties file.
Create a tags file, RELEASENAME.tag in the folder builders/product/versionTags
You can see an example tags file from the 1.5.1.GA release here
You will need to know the sub version for each component.
The integration build is ran using this command in the builders directory of JBossIDE releng:
./build-integration.sh product -tags Tagsfile
See more info at the [JBossIDE Releng System
example: ./build-integration.sh product -tags product/versionTags/1.5.2.GA.tags
You will need to expand the eclipse-SDK which is downloaded into a an additional dir which you specify
Also, may need to modify global.properties updating as follows:
If the integration build breaks on compilation, the component lead responsible is notified and they re-tag their repository. We then re-initiate the integration build
Once the integration build is complete, each component lead is notified of the build and is responsible for doing any tests to their satisfaction on that build. (Note that this is usually outside the scope of unit tests).
If there are any fatal bugs / problems in the integration build, we give the responsible component leader time to fix those bugs, and re-start the process.
Once we receive the "thumbs-up" from all component leads, it's time to make a release build.
At this point, the tags file should be committed to Releng cvs.
If the release is "stable" (i.e. non beta/RC/etc) then you will run this command in the builders directory:
./build-release.sh product stable RELEASENAME
Otherwise if the release is "development" (beta/RC/etc) then you will run this command:
./build-release.sh product development RELEASENAME
The component leads are given a final chance to go over the release build before it will be published.
If there are any complaints, restart the process with the integration build
If all component leads give "thumbs-up", then it's time to upload and announce.
I first start by uploading all of the release files to sourceforge. Depending on the connection this can easily take a few hours. I have an ant script that automates this process for me that I've attached to this wiki. It's syntax is ./sf_upload.sh RELEASENAME (it probably needs to be changed to work on other systems)
While the files are uploading, I create the release in Sourceforge, and call it JBossIDE RELEASENAME.
I collect and enter the Changelog/ReleaseNotes from JIRA and various notes given to me from component leads.
After the files are done uploading, I add all of the appropriate files into the release, and describe them correctly using SF's interface (MD5 files get "Other", zips get ".zip", .tar.gz gets ".gz")
Now the only thing left to do is update the product download page and announce on the forums.
The "old" newest release is removed and replaced by the "new" newest release, including links to Sourceforge etc.
After the announcement is made, all of the people watching on Sourceforge are notified.