This release guide is based on the General guide for releasing Maven-based projects at Apache, so be sure to check it out before continuing and meet all prerequisites.
Prerequisites
To prepare or perform a release you MUST BE at least an Apache Camel committer.
~/.m2/settings.xml
Before you deploy anything to the maven repository using Maven 2, you should configure your ~/.m2/settings.xml file so that the file permissions of the deployed artifacts are group writable. If you do not do this, other developers will not able to overwrite your SNAPSHOT releases with newer versions. The settings follow the guidelines used by the Maven project. Please pay particular attention to the password encryption recommendations.
<settings> ... <servers> <!-- Per http://maven.apache.org/developers/committer-settings.html --> <!-- To publish a snapshot of some part of Maven --> <server> <id>apache.snapshots.https</id> <username> <!-- YOUR APACHE LDAP USERNAME --> </username> <password> <!-- YOUR APACHE LDAP PASSWORD --> </password> </server> <!-- To publish a website of some part of Maven --> <server> <id>apache.website</id> <username> <!-- YOUR APACHE LDAP USERNAME --> </username> <filePermissions>664</filePermissions> <directoryPermissions>775</directoryPermissions> </server> <!-- To stage a release of some part of Maven --> <server> <id>apache.releases.https</id> <username> <!-- YOUR APACHE LDAP USERNAME --> </username> <password> <!-- YOUR APACHE LDAP PASSWORD --> </password> </server> <!-- To stage a website of some part of Maven --> <server> <id>stagingSite</id> <!-- must match hard-coded repository identifier in site:stage-deploy --> <username> <!-- YOUR APACHE LDAP USERNAME --> </username> <filePermissions>664</filePermissions> <directoryPermissions>775</directoryPermissions> </server> </servers> ... <profiles> <profile> <id>apache-release</id> <properties> <gpg.useagent>false</gpg.useagent> <gpg.passphrase><!-- YOUR GPG PASSPHRASE --></gpg.passphrase> <test>false</test> </properties> </profile> </profiles> ... </settings> |
It is also essential that you configure your umask to 2 on people.apache.org for non-interactive login. You can do that by including the snipped below in your .profile
.
umask 002 |
The release plugin will prompt for a release version, tag and next release version. Use a three digit release version of the form: 2.x.x and for the tag use a string of the form: camel-2.x.x. The next version string should use the two digit from: 2.x-SNAPSHOT as this can be consistent for future SNAPSHOT releases.
Grab the latest source from Git
git clone https://git-wip-us.apache.org/repos/asf/camel.git cd camel |
Verify headers with rat
mvn -e org.apache.rat:apache-rat-plugin:check grep -e ' !?????' target/rat.txt -- will show any files without licenses |
Because of MRELEASE-812, you should use the following setting:
|
Do a release dry run to check for problems
mvn release:prepare -DdryRun=true |
Check that you are happy with the results. The poms for the proposed tags will be in pom.xml.tag. Check also the generated signature files:
cmueller$ gpg camel-core/target/camel-core-2.7.5-SNAPSHOT.jar.asc gpg: Signature made Tue Jan 10 20:50:27 2012 CET using RSA key ID 2A239C2C gpg: Good signature from "Christian Mueller (CODE SIGNING KEY) <cmueller@apache.org>" |
When you like the results, clean up:
mvn release:clean |
Prepare the release
mvn release:prepare |
This will create the tag in svn and leave various stuff around locally to direct the perform phase.
Note: If you're located in Europe then release:prepare may fail with 'Unable to tag SCM' and 'svn: No such revision X'. Wait 10 seconds and run
again. |
Perform the release to the staging repo
mvn release:perform |
See the image in the original guide for more info.Login to https://repository.apache.org using your Apache LDAP credentials. Click on "Staging Repositories". Then select "org.apache.camel-xxx" in the list of repositories, where xxx represents your username and ip. Click "Close" on the tool bar above. This will close the repository from future deployments and make it available for others to view. If you are staging multiple releases together, skip this step until you have staged everything. Enter the name and version of the artifact being released in the "Description" field and then click "Close". This will make it easier to identify it later.
If you click on your repository, a tree view will appear below. You can then browse the contents to ensure the artifacts are as you expect them. Pay particular attention to the existence of *.asc (signature) files. If the you don't like the content of the repository, right click your repository and choose "Drop". You can then rollback your release and repeat the process.
Note the repository URL, you will need this in your vote email.
When folks need to test out a release candidate, the jars will not have been uploaded to the central Maven repo. This means that the example programs which use Maven will not automatically work and you need to follow the Testing a release candidate guidelines.
Afterwards send out the VOTE for this release candidate to the dev@ mailing list.
The pom.xml
files in etc
, tests/camel-itest-karaf
, tests/camel-itest-osgi
, tests/camel-itest-performance
and tests/camel-performance
need to be manually updated with the Camel version number in the <parent>
tag.
If the VOTE pass,
Copy the newly deployed distribution to Apache website:
cd ${CAMEL_ROOT_DIR}/etc/scripts release-distro.sh <Camel version> |
Check the console output and finish this step manually after checking the artifacts.
Upload the newly deployed schema and the manual to Apache:
cd ${CAMEL_ROOT_DIR}/etc/scripts release-website.sh <Camel version> |
Check the console output and finish this step manually after checking the artifacts.
Upload the javadocs to Apache, you need to checkout the files from "https://svn.apache.org/repos/infra/websites/production/camel/content/maven/"
To be able to perform a checkout on people.apache.org from svn.apache.org, you have to trust the server certificate:
|
CAMEL_ROOT
/trunk/etc/scripts/release-website.sh to your home directory on people.apache.orgspring.schemas
file located in src/main/resources/META-INF
directory of the following components:This section just for creating a maintenance branch in camel svn repo, it is much easy to create a new branch after camel repo is switched to Git. |
When we finish the major version release, we need to create a maintenance branch to holds the bug fixes. Here are the steps for it.
Create a branch from trunk remotely
svn copy -m "create camel 2.10.x fix branch" https://svn.apache.org/repos/asf/camel/trunk/ https://svn.apache.org/repos/asf/camel/branches/camel-2.10.x |
Check out the remote branch in a new directory
svn checkout https://svn.apache.org/repos/asf/camel/branches/camel-2.10.x |
Initialize merge tracking for the new branch
cd camel-2.10.x svnmerge.py init -f commit.txt https://svn.apache.org/repos/asf/camel/branches/camel-2.10.x svn ci -F commit.txt |
Update the version number for the next patch release
find ./ -name pom.xml |xargs perl -pi -e 's/2.11-SNAPSHOT/2.10.x-SNAPSHOT/g' svn ci -m "Update the pom version for next patch release" |