3 Replies Latest reply on Jun 3, 2010 5:20 PM by Jay Balunas

    Release updates merge completed

    Jay Balunas Master

      I have completed a merge into the main svn repo of the changes I have been making to support the RichFaces 4.0 release process.

       

      With this merge comes many changes to pom.xml files.  Some are just to flush out required elements for the release script, and plugin, others are larger more involved.  Some of the most minor are very important because they make it possible to release the modules and maintain independence, and dependency control in the release environment. I would like these changes reviewed by the senior team.
      TODOs
      To complete the release to QE we have the following remaining steps:
      • ui/dist needs to be reviewed because of conflicting changes with the new bom file in it. 
        • I expect this to be fairly minor
        • module variables need to be added
      • cdk/doc has been excluded from the cdk build  
        • Until we get a handle on what is causing the build issues we need to exclude it
        • Once that is resolved we should re-integrate, and make sure it releases
        • Not a blocker for A2
      • /root/pom.xml needs to updated and reviewed 
        • This is likely minor since the major components are the same
      • /archetypes needs to be integrated and release tested
      • /examples needs to be integrated and release tested
      • /docs needs to be integrated and release tested
      • /dist needs to be integrated and release tested
      • /cdk distribution management differences need to be reviewed to make sure they are compatible.
      N.B. I do not expect to complete all of these tonight and so the release to QE will need to be delayed until Thursday.  As is usually the case sometime the simplest changes, or issues can take a surprising amount of time to fix, so I will keep the team updated.

      Release Script

      N.B. That the release script will actually deploy to the the nexus server ( assuming you have theMaven Getting Started - Developers set ).  It will also commit tags to the RichFaces svn repo.
      Here is an example of running the release script:
      <path-to-your-local-co>build/resources/trunk $./release.sh -b <path-to-your-local-co> > ~/release_log.txt
      

       

      Then you can tail the log and have a record of the release to review.

       

      Release Testing

      There are several ways of doing this.  During development of this script, and the initial updates I used a local svn repo on my machine, exported the real richfaces repo, and imported into my local.  Note that if you do this you will need to update the <scm> elements in the pom.xml files like this:

       

      find . -name "pom.xml" -path *trunk/* | xargs perl -pi -e "s/https\:\/\/svn.jboss.org\/repos\/richfaces\/root/file\:\/\/\/<path to you local repo>/"
      
      find . -name "pom.xml" -path *trunk/* | xargs perl -pi -e "s/http\:\/\/anonsvn.jboss.org\/repos\/richfaces\/root/file\:\/\/\/<path to you local repo>/"
      

       

      Note that this assumes you are in the root of your check from the local repo.  Also don't forget to escape characters in the perl snippet.

       

      You can then try test the release script and only update your local repo.  Although you will publish to JBoss stage server. It is very important that you do not promote your test releases from stage

       

      If you have the approval of Jay, Nick, and Alex you can test with the main svn repo, but again be VERY careful, and be sure to follow the steps below on rolling back a release that either is a test, or has failed for some reason.  Note: this will be formalized when possible.

      Rollback A Release (pre promote)

      Whether you use a local svn repo or the main repo it is important to follow the steps below for rolling back a release that has either failed, or is a test.

       

       

      Note: This may be scripted at some point, but it is not at the moment, it is also not 100% guaranteed because some factors change based on where the error occurred.  Just be careful, and review any changes.

       

       

      1. Drop stage artifact from nexus
        1. https://repository.jboss.org/nexus/index.html
        2. You must have the proper credentials to upload, and effect this.
      2. Remove any created tags
        1. In your local repo, or the main repo
        2. Best tool for this is eclipse svn repo perspective
          1. Manually go through each module, and remove any created tags from release
        3. TODO Script this
      3. Replace any RELEASE_VERSION from the directory structures
        1. Example: run from root
          1. find . -name "pom.xml" -path *trunk/* | xargs perl -pi -e "s/4.0.0.Alpha2/4.0.0-SNAPSHOT/"
      4. If this was a failed release
        1. Attempt to do a mvn release:rollback on the modules that failed
          1. Be sure to use your tools like svn status, and others to make sure of you state.
        2. Else
          1. Remove any release properties that are left in the module when it fails to release
            1. TODO get exact name, write simple single line script
          2. Check and update in the module that failed that the pom.xml files (all of them) contain proper <scm>
            1. You can search for "/tags"
            2. Update from "/tags/<module-tag-name>" to "/trunk"
          1. If there are /target/checkout directories these will also contain it, so be aware those do not need to be updated.
            1. Example:

       

       

      find . -name "pom.xml" | xargs perl -pi -e "s/\/tags\/richfaces-ui-misc-4.0.0-SNAPSHOT/\/trunk/"
      find . -name "pom.xml" | xargs perl -pi -e "s/\/tags\/richfaces-cdk-4.0.0-SNAPSHOT\/trunk/\/trunk/"