UIMA project logo
Signing Eclipse Plugins - release process
Apache UIMA

Search the site

 Overview

All released Apache artifacts are normally signed. Eclipse jar signing is in addition to the Apache release signing. This additional signing (with a recognized authority certificate) allows the plugin installer to avoid saying it is installing unsigned artifacts and needs permission to continue.

Both the feature jars and the plugin jars are signed. Feature Jars might not need signing - but it doesn't hurt.

Process Flow

We use a 2 step process, to reduce costs to Apache for signing release candidates which subsequently fail. After the release vote passes, feature and plugin Jar files (but not the pack.gz files) are manually uploaded and signed, and then a subsequent maven task is run to rebuild just the site packaging artifacts using the signed Jars.

The first step is to do a normal build of the update site, using mvn release:prepare. This produces the artifacts for voting on, without jar-signing the new Jars, and writes the "tag" for this into SVN for record keeping.

After the vote passes the release manager, using their special credentials, logs onto the signing portal, and makes a signing set consisting of all of the Jars in target/eus-work (not the *.pack.gz files), and signs them. The signed Jars are down-loaded and unzipped, and replaced into the same directories.

The update site is rebuilt using the signed Jars by running mvn antrun:run. This does the remaining steps, including packing (regenerating the .pack.gz files in the /plugins) and adding the various signatures and checksums to these. These are then re-published, merging with any previous contents of the update site.

Please try installing the result to confirm nothing went wrong in this re-build process.

Changes to Normal Build

To support signing, the normal build needs some small changes.

  1. (actually a bug fix) The existing build after running the JarProcessor, copies the original (unprocessed) Jars into the eus-work/plugins - accidentally overwriting the repacked/conditioned Jars. This step must be deleted; in order to have the processed/conditioned Jars available for signing.
  2. When doing the subsite build, any previous versions are combined with the new version. This is done by downloading the previous versions into a new instance of the subsite. Because this packaging step needs to be redone, the original contents.jar and artifacts.jar files need to be saved so they can be restored before the rebuild with signed artifacts.

Additionally, to aid in reproducing things, the pre-signed, conditioned JARs are saved; in case of need, they can be restored without rebuilding them again. This step might be removed in the future - it is not essential.

 Release Manager needs to have a valid code signing certificate

For the UIMA project, contact the PMC chair for aid in obtaining a code signing certificate if you need one.

 Release only if 1 or more changed Eclipse plugins

If the release does not have any updates to Eclipse Plugin JARs, save Apache money by reusing previously released versions. If the release has 1 or more JARs, these will be signed in 1 signing event. so it doesn't matter how many Jars there are.

 Links to Apache resources for codesigning

See https://reference.apache.org/pmc/codesigning for general information.

See https://wiki.eclipse.org/JAR_Signing#What_gets_signed.3F for background on signing Eclipse Plugins.

 Release Flow

To be done...