Updating the updatesite

Once a release have been build for Ivy or IvyDE, they should be pushed to the Eclipse updatesite so that Eclipse users will be able to update automatically their installed version of Ivy or IvyDE.

This doc is in two parts, the setup of the updatesite which will be the candidate for the vote of the Ivy or IvyDE release, and the final deployment once the release is accepted.

Important note: in this doc, the released version is denoted as $VERSION (and have to be replaced accordingly in every commands), but this is the OSGi one, not the usually shown one, in particular for release candidate versions. For instance an Ivy version can be 2.0.0-RC1 but the OSGi one, and the one to use here is 2.0.0.cr1.

Build the updatesite

The update site svn location is there: https://svn.apache.org/repos/asf/ant/ivy/updatesite/trunk . You will update it so it will contain the new artifacts.

Remove deprecated versions

Before installing the new version, you probably want to remove some deprecated version. For instance is the new release is a RC2, then the RC1 should be removed. But do keep old final release; some users might not want use to the exact same version of Ivy they use in Ant, which might not be the latest one. To do so just svn rm the jars, checksums and signatures of the features and plugins to remove.

Push the new version

  • For an Ivy release:
    As you have a build jar for Ivy, just do:
    ant install-ivy -Divy.jar=...../path/to/ivy.jar
  • For an IvyDE release:
    The zip distribution needs to be unpacked into the updatesite directory:
    ant install-ivyde -Divyde.zip=...../path/to/org.apache.ivyde.feature-${VERSION}.zip

Prepare the update site

The update site is optimized: the metadata of the features are aggregated into the digest.zip, and the jar of the plugins are compressed with a better algorithm.

Important note: the following optimize tasks need to be run in java 5 jre. The pack200 didn't existed before java 5 and the jar compressed with java 6 can not be uncompressed by some java 5 jre (at least the IBM one).

To accomplish this task, just run at the root of your working copy of the updatesite:
  • For an Ivy release:
    ant optimize-ivy
  • For an IvyDE release:
    ant optimize-ivyde
The binary files then need to be signed and their checksum computed. For the checksums, run:
ant checksum
And sign the binaries:
  • For an Ivy release:
  • For an IvyDE release:
Note: these previous targets may optimize, checksum and sign already released artifacts. Just so a svn status to check the modified artifacts; the only modified files should be the digest.zip (with its signature and checksum) and the site.xml; then there should be the added files of the release. Then do some svn revert file to revert the unexpected changes.

And finally commit your changes.

As soon as you ar happy with the committed artifacts, we can tag the updatesite:
svn cp https://svn.apache.org/repos/asf/ant/ivy/updatesite/trunk https://svn.apache.org/repos/asf/ant/ivy/updatesite/tags/$TAGNAME
with $TAGNAME the name of the release, so it would be either ivy-$VERSION or ivyde-$VERSION.

Test the updatesite

The updatesite is ready to be tested. You can deploy it where ever you want with the command:
svn export https://svn.apache.org/repos/asf/ant/ivy/updatesite/trunk/dist updatesite
For both local and remote testing, as the new jars are not yet deployed on Apache mirrors, the updatesite mirroring have to be disable.
Basically it is just about modifying the site.xml and remove the reference to the eclipse-update--xml files: remove the attribute mirrorsURL.

To let the developper community test the updatesite, you can setup a staging updatesite in your public_html directory on people.apache.org. So if you deploy it on people.apache.org, in the directory ~/public_html/staging, then the developpers should setup the updatesite with the URL http://people.apache.org/~LOGIN/staging/updatesite .

Deployment of a release

Then backup and deploy. On people.apache.org:
cd /www/www.apache.org/dist/ant/ivyde/
mv updatesite ~/updatesite.backup
svn export https://svn.apache.org/repos/asf/ant/ivy/updatesite/tags/$TAGNAME/dist updatesite