jBPM 4 Release Procedure

Version 36

    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.

      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
    1. 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
    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.
    3. Verify that GPD and Console point to the right version in the root pom.xml

    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

    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: