BuildingAOP2Release

Version 25

    To build the aop 2.0.x release

    This asssumes that you have checked out https://svn.jboss.org/repos/jbossas/projects/aop/branches/Branch_2_0 to jboss-aop.

     

    Preparation for build

    • JDK 5 needs to be your main JDK

    • Make sure that the jboss-aop/pom.xml contains no snapshot releases, and use the latest versions of things (apart from jboss-test which is fixed at 1.0.3.GA), and commit the change.

    • Wait until the commited changes have been replicated across to the anonymous svn repo (about 10 minutes), and start this Hudson build. On success this will trigger the runs against different app server versions. Make sure that the Hudson builds completed without failures.

     

    JIRA preparation

    • Move all unresolved issues to the next version

    • From the Roadmap page, generate the release notes, copy into jboss-aop/build/RELEASE_NOTES.html, and commit.

    • Go to the admistration page, and under Manage versions release the project using the current date.

     

    Try building the release

     

     

    • Build the release, it will end up under jboss-aop/build/output/lib/jboss-aop-VERSION.zip

    $export MAVEN_OPTS=-Xmx512m
    $cd jboss-aop
    $mvn clean install
    $cd jrockit-pluggable-instrumentor
    $mvn clean install -Djrockit.home=/Users/kabir/Java/libs/jrockit/
    $cd ../build
    $./build.sh release
    
    • Open the zip and make sure that:

      • The version is correct in the aop jars

      • The release notes are up to date

      • The structure is similar to previous releases (Just to make sure that we're not missing anything obvious). Especially make sure that there is a lib-50/jrockit-pluggable-instrumentor.jar.

      • It is possible to run a few of the examples

    The maven release process

     

     

    • First we "prepare" the relase. This performs the following tasks
      • Create the tag in subversion under https://svn.jboss.org/repos/jbossas/projects/aop/tags (the "What is SCM release tag or label..." question)
      • Updates the aop version in all the pom.xml's (the "What is the release version..." question) and commits those to the tag
      • Updates the aop version in all the pom.xml's (the "What is the new development..." question) and commits those to the original branch
    • If you get any of the questons wrong or if the build fails for whatever reason, you can Ctrl-C and run 'mvn release:clean'.
    $export MAVEN_OPTS=-Xmx512m
    $mvn release:prepare
    [INFO] Checking dependencies and plugins for snapshots ...
    What is the release version for "JBoss AOP Parent POM"? (org.jboss.aop:jboss-aop-parent) 2.0.0: : 2.0.0.GA
    What is SCM release tag or label for "JBoss AOP Parent POM"? (org.jboss.aop:jboss-aop-parent) jboss-aop-parent-2.0.0.GA: : JBoss_AOP_2_0_0_GA 
    What is the new development version for "JBoss AOP Parent POM"? (org.jboss.aop:jboss-aop-parent) 2.0.1-SNAPSHOT: : 
    
    
      • If something does wrong in the steps above you can always access svn to revert the pom.xml's or delete the created tag
        • If it complains about not finding artifacts for the version you are trying to build, do a proper maven install and then restart the release:prepare:
      • $mvn install
        $mvn release:prepare
        
                [INFO] BUILD SUCCESSFUL
                [INFO] ------------------------------------------------------------------------
                [INFO] Total time: 2 minutes 27 seconds
                [INFO] Finished at: Tue Mar 17 16:35:36 GMT 2009
                [INFO] Final Memory: 38M/105M
                [INFO] ------------------------------------------------------------------------
                [INFO] Checking in modified POMs...
        [INFO] Executing: svn --non-interactive commit --file /tmp/maven-scm-732258756.commit --targets /tmp/maven-scm-19366-targets
        [INFO] Working directory: /Users/kabir/sourcecontrol/jboss-aop/branches/Branch_2_1/subversion
        [INFO] Tagging release with the label JBoss_AOP_2_1_0_CR1...
        [INFO] Executing: svn --non-interactive copy --file /tmp/maven-scm-557112640.commit . https://svn.jboss.org/repos/jbossas/projects/aop/tags/JBoss_AOP_2_1_0_CR1
        [INFO] Working directory: /Users/kabir/sourcecontrol/jboss-aop/branches/Branch_2_1/subversion
        [INFO] ------------------------------------------------------------------------
        [ERROR] BUILD FAILURE
        [INFO] ------------------------------------------------------------------------
        [INFO] Unable to tag SCM
        Provider message:
        The svn tag command failed.
        Command output:
        svn: Commit failed (details follow):
        svn: File '/repos/jbossas/projects/aop/tags/JBoss_AOP_2_1_0_CR1/aop/pom.xml' already exists
        
          • do this
        $svn up -r HEAD
        $mvn  release:prepare -Dresume
        
        • Next we "perform" the release. This
          • Checks out the contents of the created tag to target/checkout and builds that from the fresh checkout
          • Deploys the freshly built artifacts for the release to the local checkout of the maven repository
            • NOTE: Your local settings.xml needs to have a reference to maven.repository.root. In mine it is part of the "jboss" profile:

           

          <profile>
           <id>jboss</id>
           <properties>
            <maven.repository.root>/Users/kabir/sourcecontrol/thirdparty/maven2/</maven.repository.root>
           </properties>
          </profile>
          
          • We then tell the release:perform to use the "jboss" profile

           

          $export MAVEN_OPTS=-Xmx512m
          $mvn release:perform -Pjboss
          • Then go to the maven repository checkout and add+commit the new and modified files. This will deploy them to the jboss maven repository.

          Release the standalone release

          • Go to the jboss-aop/target/checkout/build folder (This gets created by the 'mvn release:perform' and contains a checkout of the tag you created as part of the 'mvn release:perform'):
          $cd target/checkout/build
          $./build.sh release
          • The release should be in jboss-aop/target/checkout/build/output/lib/jboss-aop-2.0.0.GA.zip
            • Do the same sanity checks as mentioned in the "Try building the release section" above.
          • Check out the aop labs stuff (contact help@jboss.org or helpdesk@redhat.com for access)
          $ svn co https://cms.labs.jboss.com/prod/forge/portal-content/default/members/jbossaop jbossaop
          
          • Copy the jboss-aop/build/output/lib/jboss-aop-2.0.0.zip to jbossaop/downloads and commit it

          • Add the download under the jbossaop/project.xml downloads section and commit it

          • Update the version on the jbossaop/freezone/index.html and commit it