Steps For a Release of Apache MyFaces Extensions Validator
Myfaces Extensions Validator has a module layout that allows release one or all modules together. In other words, it is possible to:
- Release all modules (synchronous)
- Release some modules (asynchronous)
For do that, extval has a parent pom module that could be released at any time. Take into account that all artifacts must follow release procedure guidelines of the ASF (Voting, signing artifacts, LICENSE and NOTICE...).
Release Procedure All Modules at Once
0. Requirements
- Java 1.5 (for building 1.6)
- Maven 2.0.9 (or 2.0.11)
- Subversion client 1.4.x (not 1.5.x)
- SSH Daemon (sshd)
- Login name of your machine should be the same as the Apache user name
1. Initial steps
- Add the license files to ./java/META-INF in all modules manually (due to a maven bug)
- Check copyright dates...
- Check/update the version numbers in the download site.
2. Create branches for
- Create a tag as base/fallback and branch the tag as base for the release steps.
Comment out example & test modules (for a reduced release)
http://svn.apache.org/repos/asf/myfaces/extensions/validator/trunk/ (http://svn.apache.org/repos/asf/myfaces/extensions/validator/branches/1_2_1prepare/)
- Check that NOTICE.txt and LICENSE.txt is also included in *-sources.jar (if not: create them in */java/META-INF/
3. JIRA Release Management
- Rename the snapshot version to the release version and create the next snapshot.
- Transition of all issues from resolved to closed.
4. Check the Release Notes
5. Preparing myfaces extensions validator <jsf-version>_<extval-version>
- Trying to prepare.
mvn install mvn install -Pgenerate-assembly cd assembly mvn package cd .. mvn release:prepare -DprepareRelease=true -DtagBase=https://svn.apache.org/repos/asf/myfaces/extensions/validator/branches/ -Dusername=[user name] -Dtag="[extval version]" -DdryRun=true
- Prepare it (this step changes version numbers and do other validations)
update all folders (svn update)
mvn release:prepare -DprepareRelease=true -DtagBase=https://svn.apache.org/repos/asf/myfaces/extensions/validator/branches/ -Dusername=[user name] -Dscm.password=[svn password] -Dtag="[extval version]" -Dresume=false
build error occurred
(generally maven release plugin says something about cannot find a dependency that is building)
mvn clean install mvn install -Pgenerate-assembly mvn release:rollback -DprepareRelease=true
update all folders (svn update)
- try again:
mvn release:prepare -DprepareRelease=true -DtagBase=https://svn.apache.org/repos/asf/myfaces/extensions/validator/branches/ -Dusername=[user name] -Dscm.password=[svn password] -Dtag="[extval version]" -Dresume=false
(if just the 3rd (last) commit fails, it's possible to continue - this step just increases version numbers - with a special base branch we have to do it manually at the end.)
6. Sign and copy artifacts
Switch to the prepare directory (the directory used before we switched to the generated tag directory)
cd assembly/target/assembly/out
openssl md5 myfaces-extvalXX-1.X.X-src.tar.gz > myfaces-extvalXX-1.X.X-src.tar.gz.md5 openssl md5 myfaces-extvalXX-1.X.X-src.zip > myfaces-extvalXX-1.X.X-src.zip.md5 openssl sha1 myfaces-extvalXX-1.X.X-src.tar.gz > myfaces-extvalXX-1.X.X-src.tar.gz.sha1 openssl sha1 myfaces-extvalXX-1.X.X-src.zip > myfaces-extvalXX-1.X.X-src.zip.sha1 gpg --armor --output myfaces-extvalXX-1.X.X-src.tar.gz.asc --detach-sig myfaces-extvalXX-1.X.X-src.tar.gz gpg --armor --output myfaces-extvalXX-1.X.X-src.zip.asc --detach-sig myfaces-extvalXX-1.X.X-src.zip openssl md5 myfaces-extvalXX-1.X.X-bin.tar.gz > myfaces-extvalXX-1.X.X-bin.tar.gz.md5 openssl md5 myfaces-extvalXX-1.X.X-bin.zip > myfaces-extvalXX-1.X.X-bin.zip.md5 openssl sha1 myfaces-extvalXX-1.X.X-bin.tar.gz > myfaces-extvalXX-1.X.X-bin.tar.gz.sha1 openssl sha1 myfaces-extvalXX-1.X.X-bin.zip > myfaces-extvalXX-1.X.X-bin.zip.sha1 gpg --armor --output myfaces-extvalXX-1.X.X-bin.tar.gz.asc --detach-sig myfaces-extvalXX-1.X.X-bin.tar.gz gpg --armor --output myfaces-extvalXX-1.X.X-bin.zip.asc --detach-sig myfaces-extvalXX-1.X.X-bin.zip
scp *bin* [user name]@people.apache.org:/home/[user name]/public_html/myfaces/extval/release_candidate/1_1_x/website_downloads/binaries scp *src* [user name]@people.apache.org:/home/[user name]/public_html/myfaces/extval/release_candidate/1_2_x/website_downloads/sources
switch to the project-root
cd examples/assembly/target/assembly/out
openssl md5 myfaces-extval-examples-1.X.X-src.tar.gz > myfaces-extval-examples-1.X.X-src.tar.gz.md5 openssl md5 myfaces-extval-examples-1.X.X-src.zip > myfaces-extval-examples-1.X.X-src.zip.md5 openssl sha1 myfaces-extval-examples-1.X.X-src.tar.gz > myfaces-extval-examples-1.X.X-src.tar.gz.sha1 openssl sha1 myfaces-extval-examples-1.X.X-src.zip > myfaces-extval-examples-1.X.X-src.zip.sha1 gpg --armor --output myfaces-extval-examples-1.X.X-src.tar.gz.asc --detach-sig myfaces-extval-examples-1.X.X-src.tar.gz gpg --armor --output myfaces-extval-examples-1.X.X-src.zip.asc --detach-sig myfaces-extval-examples-1.X.X-src.zip openssl md5 myfaces-extval-examples-1.X.X-bin.tar.gz > myfaces-extval-examples-1.X.X-bin.tar.gz.md5 openssl md5 myfaces-extval-examples-1.X.X-bin.zip > myfaces-extval-examples-1.X.X-bin.zip.md5 openssl sha1 myfaces-extval-examples-1.X.X-bin.tar.gz > myfaces-extval-examples-1.X.X-bin.tar.gz.sha1 openssl sha1 myfaces-extval-examples-1.X.X-bin.zip > myfaces-extval-examples-1.X.X-bin.zip.sha1 gpg --armor --output myfaces-extval-examples-1.X.X-bin.tar.gz.asc --detach-sig myfaces-extval-examples-1.X.X-bin.tar.gz gpg --armor --output myfaces-extval-examples-1.X.X-bin.zip.asc --detach-sig myfaces-extval-examples-1.X.X-bin.zip
scp *bin* [user name]@people.apache.org:/home/[user name]/public_html/myfaces/extval/release_candidate/1_1_x/website_downloads/binaries scp *src* [user name]@people.apache.org:/home/[user name]/public_html/myfaces/extval/release_candidate/1_2_x/website_downloads/sources
7. Deploy on local repo SUCCESS
Delete the current working copy
Checkout the generated tag (name - see: -Dtag="[extval version]")
- Generate artifacts like javadoc and others.
mvn clean install -Pgenerate-assembly
- Deploy on local repo
mvn clean install deploy -DperformRelease=true -DaltDeploymentRepository=myfaces-local-staging::default::scp://localhost/home/youraccount/toyourstagedirectory/somedirectorylikerepoextval1XX -DperformRelease=true
8. Copy on people.apache.org
scp -p -r org [user name]@people.apache.org:/home/[user name]/public_html/myfaces/extval/release_candidate/1_1_x/maven_repository/ scp -p -r org [user name]@people.apache.org:/home/[user name]/public_html/myfaces/extval/release_candidate/1_2_x/maven_repository/
9. Ask for vote
Hi, I was running the needed tasks to get the X.X.X release of Apache MyFaces Extensions Validator out. The artifacts are deployed to my private Apache account ([1]). Please take a look at the "X.X.X" artifacts and vote! Please note: This vote is "majority approval" with a minimum of three +1 votes (see [2]). ------------------------------------------------ [ ] +1 for community members who have reviewed the bits [ ] +0 [ ] -1 for fatal flaws that should cause these bits not to be released, and why.............. ------------------------------------------------ Thanks, [Your name] [1] http://people.apache.org/~gpetracek/myfaces/extval/release_candidate/X_X_X/ [2] http://www.apache.org/foundation/voting.html#ReleaseVotes
10. If vote success, continue with the procedure
11. JIRA Release Managment
- Archive snapshot version (on manage versions)
- Release version
12. Deployment
mvn clean install deploy -DperformRelease=true -DaltDeploymentRepository=myfaces-staging::default::scpexe://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository
(if there are e.g. timeouts perform the deployment module by module)
copy the downloads
ssh [user name]@people.apache.org
cp public_html/myfaces/extval/release_candidate/1_X_X/website_downloads/binaries/* /www/www.apache.org/dist/myfaces/binaries/ cp public_html/myfaces/extval/release_candidate/1_X_X/website_downloads/sources/* /www/www.apache.org/dist/myfaces/source/
check result at
http://repo2.maven.org/maven2/org/apache/myfaces/extensions/validator/myfaces-extval-core/
and
http://www.apache.org/dist/myfaces/binaries/ http://www.apache.org/dist/myfaces/source/
13. Delete old version at www.apache.org/dist
14. ANNOUNCE mail
[ANNOUNCE] Release of Apache MyFaces Extensions Validator 1.x.x
The Apache MyFaces team is pleased to announce the release of Apache MyFaces Extensions Validator 1.x.x (for JSF 1.x). Apache MyFaces Extensions Validator is an extensible framework to validate user input based on annotations. Apache MyFaces Extensions Validator is available in both binary and source distributions: http://myfaces.apache.org/extensions/validator/download.html Apache MyFaces Extensions Validator is available in the central Maven repository under Group ID "org.apache.myfaces.extensions.validator.*". Release Notes: [link] Enjoy! [Your name]
15. Add release news to
http://svn.apache.org/repos/asf/myfaces/site/trunk/src/site/apt/index.apt
16. Check working copies
- Change to new SNAPSHOT version number
- Change scm sections in pom files
Testing
Here's the procedure that anyone can do to help test the distribution.
Release Procedure For Some Module
It is the same procedure described before but point 1 and 2 should be done first on parent module and then on other modules to be released. Assemblies should be numbered against release of parent module.
Additional post site deployment steps
It is possible that we need to manually copy the apidocs for some specific version, to make it available all time on the site. The idea is make this automatically in the future:
cd /www/myfaces.apache.org/extensions/validator11 cp -r ./myfaces-extval-core/apidocs ./myfaces-extval-core/apidocs-1.0.0 cp -r ./component-support-modules-project/myfaces-extval-generic-support/apidocs ./component-support-modules-project/myfaces-extval-generic-support/apidocs-1.0.0 cp -r ./component-support-modules-project/myfaces-extval-trinidad-support/apidocs ./component-support-modules-project/myfaces-extval-trinidad-support/apidocs-1.0.0 cp -r ./validation-modules-project/myfaces-extval-property-validation/apidocs ./validation-modules-project/myfaces-extval-property-validation/apidocs-1.0.0 cd /www/myfaces.apache.org/extensions/validator12 cp -r ./myfaces-extval-core/apidocs ./myfaces-extval-core/apidocs-1.0.0 cp -r ./component-support-modules-project/myfaces-extval-generic-support/apidocs ./component-support-modules-project/myfaces-extval-generic-support/apidocs-1.0.0 cp -r ./component-support-modules-project/myfaces-extval-trinidad-support/apidocs ./component-support-modules-project/myfaces-extval-trinidad-support/apidocs-1.0.0 cp -r ./validation-modules-project/myfaces-extval-property-validation/apidocs ./validation-modules-project/myfaces-extval-property-validation/apidocs-1.0.0