This document is intended to be kept up to date by the DSpace Release Managers. It details the steps necessary to perform snapshot and official releases of DSpace and supporting Modules.
To perform a release, you must have:
DSpace's root pom.xml already has the correct staging and snapshot repositories listed in the OSS parents distributionManagement section. In order to deploy, you will need to add your Sonatype OSS username and password to your local ~/.m2/settings.xml file:
<settings> <servers> <server> <id>sonatype-nexus-snapshots</id> <username>YourUsername</username> <password>YourPassword</password> </server> <server> <id>sonatype-nexus-staging</id> <username>YourUsername</username> <password>YourPassword</password> </server> </servers> </settings> |
Make sure you're using a recent version of Maven. As of this writing, the latest was 2.2.1, and it worked fine. In particular, avoid version 2.2.0: it has a serious bug that affects deployments: MNG-4235.
From a clean, up-to-date copy of trunk, run the following command:
mvn clean javadoc:jar source:jar deploy
The snapshot will be immediately available in the public Sonatype repository: http://oss.sonatype.org/content/groups/public
Make sure the KEYS file at the root of the source tree has your up to date public code signing key and signatures listed. If you don't yet have a code signing key, see Creating a Code Signing Key. When you are ready, append your key with the following command:
(gpg --list-sigs YourKeyId && gpg -a --export YourKeyId) >> KEYS
This step is not required, but performs a useful sanity check without committing any changes. From a clean, up-to-date copy of trunk, run the following command:
mvn release:prepare -DdryRun=true
This step will set the version declared in the project's pom.xml files, commit the changes to trunk, tag the release, and finally, check in another trunk change that increments the next development version (e.g. x.y-SNAPSHOT) in the pom.xml files.
mvn release:prepare -Dresume=false -Dusername=YourSVNUsername -Dpassword=YourSVNPassword
Note: This may fail to compile part way through the process, complaining that an internal project dependency is not met. If this occurs, don't worry. Just run the following:
mvn install
mvn release:prepare -Dusername=YourSVNUsername -Dpassword=YourSVNPassword
If backing out of this step is needed for any reason, the following will restore the subversion repository and your working copy to the state it was previously in:
mvn release:rollback -Dusername=YourSVNUsername -Dpassword=YourSVNPassword
svn rm
https://scm.dspace.org/svn/repo/dspace/tags/dspace-x.y
This step will sign, checksum, and push all release artifacts (including javadocs and sources) to the staging repository.
mvn release:perform -Darguments="-Dgpg.keyname=YourKeyId -Dgpg.passphrase=YourKeyPassword"
If anything is incorrect, right click the staged repository and select "Drop". After the problem is resolved, you can re-deploy the artifacts to staging and verify them again. To re-deploy an already-tagged release:
mvn release:perform -Dtag=dspace-x.y -DconnectionUrl=scm:svn:
https://scm.dspace.org/svn/repo/dspace
-Darguments="-Dgpg.keyname=YourKeyId -Dgpg.passphrase=YourKeyPassword"
If everything looks good, right click on the repository and select "Promote". The artifacts should be synced to central within an hour.
(acknowledge this shameless copy and paste from Akubra Release Process)