This document is intended to be used and kept up to date by the Fedora Release Manager. It details the steps necessary to perform an official release of Fedora.
The release version in the documentation below is identified as
X.Y
, replace this in the instructions with the current release (eg 4.0.1).
X is the major point version, Y is the minor point version, and Z is the maintenance point.
The previous release version (snapshot previous documentation) is identified as
A.B
, replace this with the previous release (eg 4.0).
To make sure release day goes smoothly, you should ensure that:
<settings> ... <servers> ... <server> <id>sonatype-nexus-snapshots</id> <username>your-jira-id</username> <password>your-jira-pwd</password> </server> <server> <id>sonatype-nexus-staging</id> <username>your-jira-id</username> <password>your-jira-pwd</password> </server> <server> <id>github</id> <username>your-github-id</username> <password>your-github-pwd</password> </server> </servers> ... </settings> |
Encrypted passwords works for the plugin that references the sonatype-nexus passwords, but NOT the one that uses github. To avoid a cryptic error, enter your github password in plaintext. |
The test plan should also be ready prior to code freeze.
It should include:
Create a release candidate branch, release testing wiki page and notify developers to test.
git checkout -b fcrepo-4.0.0-beta-01-RC git push origin fcrepo-4.0.0-beta-01-RC |
If any online resources have been modified or added to during the release, these must be updated.
Of the projects in https://github.com/fcrepo4. which should be released. Typically we keep the release versions in sync for those that have had a formal release.
Due to dependency chains, the following release order is required. Furthermore, the artifacts of dependencies must be propagated to maven central before the next one can be released.
git checkout fcrepo-4.0.0-beta-01-RC git pull origin fcrepo-4.0.0-beta-01-RC git checkout master git merge fcrepo-4.0.0-beta-01-RC git push origin master git branch -d fcrepo-4.0.0-beta-01-RC git push origin :fcrepo-4.0.0-beta-01-RC |
It may be best to create fresh clones of the to-be-released projects, perhaps in well-named release folder. Leaving these directories pristine may help in the event that you wish to roll back or otherwise deal with an unexpected error. |
In order to build the release make sure that:
Run the following commands to generate and upload all built artifacts to the Sonatype staging repository:
mvn checkout -b local-release mvn release:clean mvn release:prepare -DdryRun -DreleaseVersion=X.X.X -DdevelopmentVersion=X.X.Y-SNAPSHOT -DautoVersionSubmodules -DpushChanges=false mvn release:clean && mvn release:prepare -DreleaseVersion=X.X.X -DdevelopmentVersion=X.X.Y-SNAPSHOT -DautoVersionSubmodules -DpushChanges=false |
mv ~/.m2/repository ~/.m2/repository-yyyy-mm-dd |
git checkout <release-tag> mvn clean install |
Up until this point, all of the changes made are strictly in your local repository and working directory. From this point on, the changes you make will be visible to the world and in some cases difficult to back-out of. |
git push origin local-release:master git push origin --tags |
git checkout <release-tag> |
mvn release:perform -DperformRelease -Dgoals=deploy |
Login to https://oss.sonatype.org
The following steps, once completed are final. They cannot be undone, revoked or altered. Only proceed if you've completed all the above steps and are absolutely certain the release is ready for publication. |
Find the staging repository, check that it looks good, and "Close" it. Then "Release" it. This will publish the artifacts to the Sonatype releases repository and start the process of syncing them with central. The artifacts may take several hours to reach central. When finished, they'll be available at http://repo1.maven.org/maven2/org/fcrepo.
Checkout release tag for publishing the release documentation
mvn site-deploy -DskipTests ** Resume from a given module, if necessary mvn site-deploy -DskipTests -rf <module> |
Update index.html pages in branch "gh-pages" for releases projects: fcrepo4, fcrepo-message-consumer, fcrepo-module-auth-xacml, etc
Github only allows a certain number of requests per hour. Once that number is hit you'll have to wait an hour before resuming your operation. The site documentation may exhaust this limit several times. |
Under GitHub account/releases, select "Draft new release".
Create MD5 and SHA1 files for each of the release artifacts
for x in `ls *.war`; do echo $x; md5sum $x > ${x}.md5; sha1sum $x > ${x}.sha1; done |
Current, in-progress Fedora Repository Documentation wiki: https://wiki.duraspace.org/display/FEDORA4x
At the very minimum, update the following:
This section needs updating - A.Woods 2014-01-02 |
If this is a new major or minor point release, copy the current, in-progress documentation to create the release wiki, then update accordingly. Mark the new pages as current, and update the pages in the previous documentation to indicate they are out-of-date.
If this is a maintenance point release, create separate child release note pages for each release covered by the documentation.
Otherwise, post the release notes in the Release Notes page (see Fedora 4.0.0 Release Notes for an example).
Update any other documentation as needed, per changes/features added with this release.
Make sure the license and copyright information is up-to-date with this release.
Fedora Repository site (Drupal): http://www.fedorarepository.org/
Sitemap: http://www.fedora-commons.org/sitemap
Let Carol Minton Morris know that the release is complete and can be announced.