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).

Before Release Day

Verify release privileges

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.

Ensure you have a trusted code signing key

Prepare and distribute test plan

The test plan should also be ready prior to code freeze.

It should include:

Create release branch and begin final test phase

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

Update online resources

If any online resources have been modified or added to during the release, these must be updated.

Release Day

Merge the release candidate branch into master (if any commits were made)

git checkout fcrepo-4.0.0-beta-01-RC
git pull
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

 

Build and release the final distribution to Maven Central

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 release:clean
mvn release:prepare -DdryRun -DreleaseVersion=X.X.X -DdevelopmentVersion=X.X.Y-SNAPSHOT -DautoVersionSubmodules
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
git push origin --tags
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.

Build GitHub documentation site

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>

Troubleshooting site-deploy

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.

 

Create GitHub release

Under GitHub account/releases, select "Draft new release".

Release related projects

Release other projects that are related to the main codebase, following the same process as outlined above.

Complete the Duraspace wiki documentation updates

Current Fedora Repository Documentation wiki: https://wiki.duraspace.org/display/FEDORA36

At the very minimum, update the following:

Downloads
Release Notes

If this is a new major or minor point release, copy the previous point release documentation to create the current wiki (/FEDORA XY ), 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 (see https://wiki.duraspace.org/display/FEDORA36/Release+Notes for an example).
Otherwise, post the release notes in the Release Notes page (see https://wiki.duraspace.org/display/FEDORA35/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.

Update the Fedora Repository site

This section needs updating - A.Woods 2014-01-02

 

Fedora Repository site (Drupal): http://www.fedorarepository.org/
Sitemap: http://www.fedora-commons.org/sitemap

  1. Copy Software -> Current Release to Software -> Previous Releases -> Release X.Y
    Move Release X.Y to the top of the list of release pages.
    Change state to published in green view tab, state: in green right-hand drop-down menu
    Select Release X.Y as the default page to display for the Previous Releasesfolder:
  2. Edit Software -> Current Release to refer to the new version of the software
  3. Edit the Software page to update the Download link: http://downloads.sourceforge.net/fedora-commons/fcrepo-installer-X.Y.jar
  4. Edit the Homepage:
  5. Edit the Announcementsfolder:

In the Software section:

On the homepage:

Announce release

Let Carol Minton Morris know that the release is complete and can be announced.

Depending on the significance of the release, the announcement will be disseminated in various forms to: