Release updates merge completed
jbalunas Jun 3, 2010 5:18 PMI have completed a merge into the main svn repo of the changes I have been making to support the RichFaces 4.0 release process.
- http://fisheye.jboss.org/changelog/RichFaces/root?cs=17472
- The main release script is here : release.sh
TODOs
ui/dist needs to be reviewed because of conflicting changes with the new bom file in it.I expect this to be fairly minormodule variables need to be added
cdk/doc has been excluded from the cdk buildUntil we get a handle on what is causing the build issues we need to exclude itOnce that is resolved we should re-integrate, and make sure it releases- Not a blocker for A2
- /
root/pom.xml needs to updated and reviewedThis 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 andrelease tested/cdk distribution management differences need to be reviewed to make sure they are compatible.
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.
- Drop stage artifact from nexus
- https://repository.jboss.org/nexus/index.html
- You must have the proper credentials to upload, and effect this.
- Remove any created tags
- In your local repo, or the main repo
- Best tool for this is eclipse svn repo perspective
- Manually go through each module, and remove any created tags from release
- TODO Script this
- Replace any RELEASE_VERSION from the directory structures
- Example: run from root
- find . -name "pom.xml" -path *trunk/* | xargs perl -pi -e "s/4.0.0.Alpha2/4.0.0-SNAPSHOT/"
- Example: run from root
- If this was a failed release
- Attempt to do a mvn release:rollback on the modules that failed
- Be sure to use your tools like svn status, and others to make sure of you state.
- Else
- Remove any release properties that are left in the module when it fails to release
- TODO get exact name, write simple single line script
- Check and update in the module that failed that the pom.xml files (all of them) contain proper <scm>
- You can search for "/tags"
- Update from "/tags/<module-tag-name>" to "/trunk"
- Remove any release properties that are left in the module when it fails to release
- If there are /target/checkout directories these will also contain it, so be aware those do not need to be updated.
- Example:
- Attempt to do a mvn release:rollback on the modules that failed
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/"