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

Push the new version

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.
  • For an Ivy release:
    The new ivy bundle have to be placed in the plugins directory of the updatesite. So you should do something like:
    cp ..../ivy.jar dist/plugins/org.apache.ivy_$VERSION.jar
    Then Eclipse needs a feature, which will be generated at the right place with an ant target:
    ant generate-ivy-feature -Divy.version=$VERSION
  • For an IvyDE release:
    The zip distribution needs to be unpacked into the updatesite directory:
    cd dist
    unzip ..../org.apache.ivyde.feature-$VERSION.zip
Then the deprecated versions of the plugins and the features should be removed.

Update the site.xml

The site.xml file in the dist directory should be edited so it will reference the new artifacts. You should just change the version number accordingly to the release.

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.

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:
    ./signIvyArtifacts.sh
  • For an IvyDE release:
    ./signIvyDEArtifacts.sh
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.

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

The release is accepted, so 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.

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

Deprecated updatesite

The updatesite needs to be also deployed in its deprecated location, in the IvyDE website.

In your local svn working copy do:
cp updatesite/trunk/dist/digest.zip* site/ivyde/updatesite
cp updatesite/trunk/dist/site.xml site/ivyde/updatesite
And commit the changes of the website.
Next is the usual IvyDE website deployment:
ant generate-site-ivyde
svn ci target/ivyde/updatesite
And on people.apache.org:
svn up /www/ant.apache.org/ivy/ivyde/updatesite