You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

Deploying snapshots

To deploy a snapshot (Apache committers only), run

mvn -Pdeploy deploy

That will deploy the latest snapshot along with the javadoc and source jar bundles to apaches snapshot repository. After deploying the snapshot, you need to login to people.apache.org and fix the permissions. cd to /www/people.apache.org/repo/m2-snapshot-repository and run the fix-permissions.sh script.

You can speed up the process by doing a couple things:

  1. Run with extra flags to skip the code checks and running of the tests
    mvn -Pdeploy,nochecks deploy -Dmaven.test.skip.exec=true
    
  2. HIGHLY RECOMMENDED: use a "Master Mode" ssh connection to people.apache.org for the scp commands to use. This requires a fairly recent version of ssh. Basically, in your ~/.ssh/config, make sure you have "ControlPath /tmp/%h-%p-%r" set. Then, in one window, run "ssh -Mv people.apache.org". Then run the deploy in another. The -v on the ssh connection will print things for each connection so you'll know it working. This is MUCH faster as SCP doesn't need to negotiate encryption stuff for every single file, doesn't need to open up lots of connections, etc....

If your user name on people.apache.org is not the same as your user name on your home system, you will need to add some configuration to your ~/.m2/settings.xml. The following works on the assumption that you've published your ssh
public key to people.apache.org.

<settings>
  <servers>
    <server>
      <id>apache.releases</id>
      <username>bimargulies</username>
    </server>
    <server>
      <id>apache.snapshots</id>
      <username>bimargulies</username>
    </server>
  </servers>
<settings>

Maintaining a fixes branch

dkulp: I'm adding this section to document what worked for ME when maintaining the 2.0.x-fixes branch for the 2.0.x releases. Each Release Manager may have their own style or tools or whatever. This is not a "set in stone" type thing.

Basically, almost all development and fixes and such are usually done by the various developers right on trunk. Thus, the main job of the fixes branch maintainer is to triage the commits on trunk and merge pure fixes to the fixes branch, resolve conflicts, run the tests, and periodically deploy snapshots. For the most part, when things go well, it doesn't take too much time or effort. An hour or two every couple days is about it.

To set up, you'll want to:

  1. use svn cp to make a branch. Use URLs for the pathnames or it will take forever.
  2. use bin/pom-version.pl to change the version in the branch
  3. use svnmerge.py init to set up svnmerge. You may want to run this in both the trunk and the new branch in case you are contemplating bidirectional merges.

These steps work for individual developers who want to go off into a branch in the sandbox to work through something complex.

In trunk/bin, there is a DoMerges.java program that wraps svnmerge.py to assist in the merging. If the branch is setup with snvmerge.py, if you run it from you checkout directory, it will prompt for every commit on trunk to see if you want to "Merge" it, "Block" it, or "Ignore" it. It displays the commit log first so you can see what was involved. You can also check the cxf-commits archive to see the full details of the commit to help decide what action to take. If you select "Merge", it will merge the change and then prompt before committing. That will allow you to look at the merge and resolve any conflicts. (or even revert it if you didn't mean to hit Merge)

Performing a release

For the most part, we now follow the same instructions that the maven team uses.
http://maven.apache.org/developers/release/releasing.html

There is one piece of poor wording or flat-out error on that page. At one point, it says, 'make sure that there are no SNAPSHOTS in your POM.' In fact, the situation is the opposite. The release plugin requires all the POM versions to be SNAPSHOTS, and proceeds to create and tag a revision in which the snapshot version is replaced by the actual release version.

One other caveat: if you use a Mac, you are prone to run into MRELEASE-355, a feud between Apple and Subversion. Whoever hits this first on CXF will have to modify the pom to ask for version 2.0-beta-8 of the maven-release-plugin, which seems to be the only way around it.

Basically, setup your settings.xml file as they described except for your gpg key. The version of the gpg plugin we use will ask for it. The deploy.altRepository should be set to something similar to:

apache.releases::default::scp://people.apache.org/home/dkulp/public_html/maven_staging

After that is setup, you need to update the release_notes.txt in the distribution/src/main/release, and run the below commands.

mvn release:prepare -Peverything
mvn release:perform

That will tag the release, update the poms, etc... Then build it (off the tag) and deploy everything (including source jars and javadoc jars) to the deploy.altRepository location and gpg signs everything. Once there, call the vote(s) based on that.

After the vote passes, you'll need to "merge" that staging location to the main location. The maven "stage" plugin is used to do this. Just run:

mvn stage:copy \
   -Dsource="http://people.apache.org/~dkulp/stage_cxf/2.1/maven" \
   -Dtarget="scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository" \
   -Dversion=2.1
   -DtargetRepositoryId=apache.releases

One note: according to the Maven folks, the stage:copy stuff apparently doesn't work on Windows. Don't bother trying. Use Linux or OSX.

One other note: The current version (as of 10 December 2008) of the stage plugin explodes
on contact with Maven 2.0.9. Use 2.0.8 until further notice.

Also, don't forget to copy the actual distributions to people.apache.org:/www/www.apache.org/dist/cxf.

Unpack the javadocs. Create a new directory in /www/cxf.apache.org/javadoc to match the version number and then unpack the cxf-bundle/$version/*-javadoc.jar from the maven repo into that new directory. Update the Navigation page in confluence to point to the new javadoc dir.

Finally, update the download pages and the news page.

  • No labels