h1. How to create and announce a Camel release.
|
This release guide is based on [General guide for releasing Maven-based project at Apache | http://maven.apache.org/developers/release/apache-release.html], so be sure to check it out before continuing and meet all prerequisites.
|
*Note*: Make sure that you are using *JDK 6* as several camel components (like the [Web Console] for example) now require JDK 6 h2. Maven 2 Setup
|
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 | http://maven.apache.org/developers/committer-settings.html] used by the Maven project. Please pay particular attention to the [password encryption recommendations | http://maven.apache.org/guides/mini/guide-encryption.html].
|
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.
|
|
{code:xml} <settings> ... <servers>
|
<!-- Per http://maven.apache.org/developers/committer-settings.html -->
|
|
<!-- To publish a snapshot of some part of Maven -->
|
<server>
|
<id>apache-repo</id> <id>apache.snapshots.https</id>
|
<username>chirino</username> <directoryPermissions>775</directoryPermissions> <filePermissions>664</filePermissions>
|
<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-snapshots</id> <id>apache.website</id>
|
<username>chirino</username> <directoryPermissions>775</directoryPermissions>
|
<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-website</id> <id>apache.releases.https</id>
|
<username> <!-- YOUR APACHE LDAP USERNAME --> </username> <password> <!-- YOUR APACHE LDAP PASSWORD --> </password>
|
<username>chirino</username> </server>
|
<!-- To stage a website of some part of Maven -->
|
<directoryPermissions>775</directoryPermissions> <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>
|
...
|
{code}
|
h3. Creating the Camel Release * Prepare env and directory structure
|
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}}.
|
{code}
|
export PROJ=apache-camel export PROJVER=<x.y.z> mkdir $HOME/$PROJ-$PROJVER mkdir $HOME/$PROJ-$PROJVER/maven2 mkdir $HOME/$PROJ-$PROJVER/maven mkdir $HOME/$PROJ-$PROJVER/site
|
umask 002
|
{code}
|
h3. Creating the Camel Release 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 SVN
|
{code} svn co https://svn.apache.org/repos/asf/camel/trunk camel cd camel {code}
|
* Change the version number in: # pom.xml - in the project root *and* all sub-projects # the value of <camel-version> property in the root pom.xml # Note: The command below will do the trick on Linux (replace for the appropriate version).
|
# Verify headers with [rat|http://incubator.apache.org/rat/apache-rat-plugin/usage.html]
|
{code}
|
find . -name pom.xml | grep -v .svn | xargs sed -i -e s/x.y-SNAPSHOT/$PROJVER/g
|
mvn -e apache-rat:check grep -e ' !?????' target/rat.txt -- will show any files without licenses
|
{code}
|
If you do this on MacOSX, you will need to:
|
# Do a release dry run to check for problems
|
{code}
|
find . -name pom.xml | grep -v .svn | xargs sed -i "" -e s/x.y-SNAPSHOT/$PROJVER/g
|
mvn release:prepare -DdryRun=true
|
{code}
|
* Let Maven build, test, package, and deploy the binaries
|
Check that you are happy with the results. The poms for the proposed tags will be in pom.xml.tag. When you like the results, clean up:
|
{code}
|
mvn clean source:jar deploy -Drelease-repo-url="" -Dm1-repo-url="" -Prelease,enable-schemagen
|
mvn release:clean
|
{code}
|
* Tag the release using your local workspace to a new CAMEL_X_Y label
|
# Prepare the release
|
{code}
|
svn copy ../camel https://svn.apache.org/repos/asf/camel/tags/camel-x.y.z -m "Camel x.y.z Release"
|
mvn release:prepare
|
{code}
|
This will create the tag in svn and leave various stuff around locally to direct the perform phase. # Perform the release to the staging repo {code} mvn release:perform {code} # Close the staging repository Quote from the [Maven release guide for Apache projects|http://maven.apache.org/developers/release/apache-release.html] {quote} Login to https://repository.apache.org using your Apache LDAP credentials. Click on "Staging". Then click on "camel" in the list of repositories. In the panel below you should see an open repository that is linked to your username and ip. Right click on this repository and select "Close". 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.{quote} See the image in the original guide for more info. # Verify staged artifacts Quote from the [original guide|http://maven.apache.org/developers/release/apache-release.html] {quote} 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. {quote}
|
|
* Check that the binaries look fine.
|
h2. Testing the Camel Release Candidate
|
When folks need to test out a release candidate, the jars will not have been uploaded to the Maven repo. This means that the example programs which use Maven will not automatically work.
|
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.
|
|
So whenever running the [Examples] you need to append the following command line argument... {code} mvn camel:run -DremoteRepo=http://people.apache.org/~chirino/apache-camel-1.2.0-RC1/maven2 {code} Assuming that the release candidate is deployed to *[http://people.apache.org/~chirino/apache-camel-1.2.0-RC1/maven2]
|
h2. Announcing the Camel Release
|
...
|