Preparations on trunk
- Verify addition of version axis to hudson job jbpm4-upgrade
- Verify all jbpm4 hudson jobs run ok
- Update release notes: Add release notes to the modules/distro/src/main/resources/readme.html for both JIRA projects
- Synchronize with team on date-time for creating release branch
- Verify that GPD and Console released they're versions
- Verify all jira issues are resolved
- Verify example image files
- Verify version related stuff
Work on the release branch and tagging
Create release branch
This should be done after codefreeze.
- Optionally you can switch your local working copy to that branch with
svn switch https://svn.jboss.org/repos/jbpm/jbpm4/branches/jbpm-4.2
- On the release branch, update <version>4-SNAPSHOT</version> in all pom.xml files to the exact version like <version>4.0.Alpha2</version> or <version>4.3</version> and commit. Make sure that you don't accidently mess with the referenced versions of the designer, console or parser. Double check that public static final String JBPM_LIBRARY_VERSION = "4.2-SNAPSHOT"; in ProcessEngineImpl is updated to represent the correct library version.
- Verify that GPD and Console point to the right version in the root pom.xml
svn -m "creating release branch for jbpm-4.2" copy https://svn.jboss.org/repos/jbpm/jbpm4/trunk https://svn.jboss.org/repos/jbpm/jbpm4/branches/jbpm-4.2
Switch CI to the branch
For all hudson jbpm4 jobs (except for jbpm4-base) http://hudson.qa.jboss.com/hudson/view/JBPM4/ switch the svn url to the branch.
Build the distribution
Before building the distribution, check the configuration of your local jboss maven repo. The property jboss.maven.repository is referenced from the root level pom:
<distributionManagement> <repository> <id>repository.jboss.org</id> <name>JBoss Maven Repository</name> <url>file://${jboss.maven.repository}</url> </repository>
To customize the value on your machine, create a ${user.home}/.m2/settings.xml like this
<settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <profiles> <profile> <id>publish</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <jboss.maven.repository>c/MyLocalRepo</jboss.maven.repository> </properties> </profile> </profiles> </settings>
Then build the distribution like this.
mvn -Pdistro,docs clean deploy
That will create the distribution file in modules/distro/target and it will create publishable artifacts in your local jboss maven repository. Then also deploy the test-upgrade module like this
cd modules/test-upgrade mvn -DskipTests clean deploy
Manual testing
The purpose of manual testing is by using only a distribution in ways that our users use it as well.
If you use the qa/demo.setup.jboss.bat or qa/demo.setup.tomcat.bat script, it automates most of the tedious work below: builds the distro (but does not deploy), installs jboss, installs jbpm into jboss, starts jboss, creates the db schema, deploys the examples, installs eclipse and starts eclipse. If you use this script, you still need to build the distro as shown above up to the deploy. The test demo setup only does a distro build with install
- Install the distribution
- Install jBPM using the installer
- Start JBoss AS
- Start eclipse
- Install designer plugin from the distribution
- Import the examples
- Define the jBPM Libraries
- Add the jPDL xsd to the catalog
- Run all the examples (right click on the src root, run as JUnit test)
- Deploy the examples with the ant script
Scenarios
The following scenarios should be build manually and are ideal excercises to blog about.
Manual test 1: Task forms
- Create and deploy a minimal process with a task form
- Start the task forms example and run through the complete execution with the console.
Manual test 2: Timer
- Create and deploy a minimal process with a timer or a task reminder
- Run this on jboss and tomcat
Manual test 3: Enterprise
- Create and deploy a minimal ejb app using jBPM
- Run this on jboss
- Validates different forms of classloading
- Deploy a user code class on the jboss-wide classpath (in the lib directory)
- Deploy a user code class in the enterprise application or ejb that calls jBPM
- Deploy a user code class inside of the business archive
- Validates different forms of transactions
- Make sure you invoke jBPM without a JTA transaction
- Make sure you invoke jBPM with an existing JTA transaction
- Make sure you validate proper rollback behaviour
Manual test 4: Reporting
- Create a couple of executions and look at the reports
Create the tag
Once the QA runs successfully, a tag must be created for the release and the branch can be deleted.
Uploads
Upload distribution to sourceforge
- Create release http://sourceforge.net/projects/jbpm
- Upload using sftp
- See http://sourceforge.net/apps/trac/sourceforge/wiki/Release%20files%20for%20download#SFTP
- See http://apps.sourceforge.net/trac/sitedocs/wiki/File%20management%20service
Upload the maven artifacts to the public
Make sure that the build producing the maven repository artifacts activated the distro profile. As that profile includes the generation of the source jars.
The artifacts from your local jboss maven repository then need to be committed with svn to
https://svn.jboss.org/repos/repository.jboss.org/maven2/org/jbpm/jbpm4
Update documentation
- Upload full doc contents of the doc directory in the installed distribution
- to ftp.jboss.com directory v4
- Don't forget to update/upload the XSD !
Postprocessing
Make noise
- Send note to the core
- Blog about it
Release the release in JIRA
Update version references in codebase
- search and replace 4.x-SNAPSHOT
- search namespace http://jbpm.org/4.x/jpdl and update where necessary. note that some tests actually need to run against a specific jpdl parser version so the namespace declaration might be intended!
- create new schema file in modules/api/src/main/resources/jpdl-4.x.xsd + update JpdlParser to work with new schema file
- update JpdlParser version references
- if you don't do it straight away, make jira issue for this so that it is not forgotten
Update hudson jobs
Add the new version to following job configurations:
Comments