Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

Release Day (Brief)

Determine which modules will be released.

Create a new tab in the Fedora modules release plan spreadsheet.

Notes: 

  1. Follow the release order of the spreadsheet plan
  2. Some projects need pom.xml dependency version properties to be updated prior to release (e.g. fcrepo-camel-toolbox). This should be documented starting with 4.4.1.

Variables Used

Code Block
ORG=fcrepo4
REPO=fcrepo-module-auth-webac
CURR=4.5.0
NEXT=4.5.1-SNAPSHOT

...

Code Block
git clone git@github.com:$ORG/$REPO.git
cd $REPO
git checkout rc-$CURR
mvn release:clean
# if that fails, do "git revert HEAD" and retry
# if it can't find an old fcrepo4 snapshot, build an old version to populate it locally
mvn release:prepare -DreleaseVersion=$CURR -DdevelopmentVersion=$NEXT \
-DautoVersionSubmodules=true -DpushChanges=false
# resolve dependencies and set main versions to $CURR and dev versions to $NEXT
# n.b., GPG passphrase will not be masked in terminal
rm -rf ~/.m2/repository/org/fcrepo
git checkout $REPO-$CURR # detached head state
mvn clean install
Warning

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. 

Code Block
git push origin rc-$CURR:release-$CURR
git push origin --tags

 

  • Go to https://github.com/fcrepo4/$REPO/releases/tag/$REPO-$CURR

  • Click Edit tag, and update title to "Release $CURR"
  • If appropriate, attach binaries and checksums at the bottom
  • Click Publish Release

...

Code Block
mvn release:perform -DperformRelease -Dgoals=deploy
# as before, GPG passphrase will not be masked in terminal
Warning
titlePoint of no return

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.

  • Go to https://oss.sonatype.org/index.html#nexus-search;gav~org.fcrepo~$REPO and log in
  • Click Staging Repositories in left navigation

  • Search for "fcrepo" in upper right search box (project will not have $REPO in title)

  • Select repository and verify that $REPO is present in the Content tab
  • Click Close, then Refresh, then Release

 This will publish the artifacts to the Sonatype releases repository and start the process of syncing them with Maven Central, which may take several hours. When finished, they'll be available at http://repo1.maven.org/maven2/org/fcrepo.

Github Pages

Code Block
mvn site-deploy -DskipTests
# go to 

The pages will be visible at http://$ORG.github.io/$REPO/site/$CURR/fcrepo/$REPO/

...

.

For fcrepo4/fcrepo4 and fcrepo4-exts/fcrepo-camel, manually add links to the current releases.  The easiest way to do this is to search for an old version number and copy/update for the current release.

Troubleshooting

Expand
Info
titleError creating blob: API rate limit exceeded

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.

Info

If you get the following error:

Error creating blob: You have triggered an abuse detection mechanism and have been temporarily 
blocked from calling the API. Please retry your request again later. (403)

You may consider using the patched version of site-maven-plugin: https://github.com/awoods/maven-plugins/commit/c62c7b168375e3bfaf0dec7de2fa5fc03d8ed173

Merge With Master

Code Block
git checkout master
git merge rc-$CURR
git push origin master

...

Ontologies are released on their own schedule and do not need to be released.  But they should be tagged with the current version when a release is performed, to make it easy to identify the version of the ontology that each release was using.

Code Block
## ontologies
CURR=4.5.0
ORG=fcrepo4
REPO=fcrepo-webac-ontology
git clone git@github.com:$ORG/$REPO
cd $REPO
git tag -a "$REPO-$CURR" -m "$REPO-$CURR" # except fcrepo4/ontology should be fcrepo-ontology-$CURR
git push --tags

 

Release Day (Notes and Explanations)

Determine which modules will be released.

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.

Based on the modules to be released, create a new tab in the release process spreadsheet:

Notes: 

  1. Follow the release order of the spreadsheet plan
  2. Some projects need pom.xml dependency version properties to be updated prior to release (e.g. fcrepo-camel-toolbox). This should be documented starting with 4.4.1.

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

Code Block
git checkout release-4.0.0
git pull origin release-4.0.0
git checkout master
git merge release-4.0.0
git push origin master
git branch -d release-4.0.0
git push origin :release-4.0.0

Build and release the final distribution to Maven Central

Tip

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:

  • you have a working PGP installation with your code signing key as the default key

Run the following commands to generate and upload all built artifacts to the Sonatype staging repository (for example, X.X.X = 4.3.0 and X.X.Y = 4.3.1-SNAPSHOT) :

No Format
git checkout -b local-release [or] git checkout <rc-branch>
mvn release:clean
mvn release:prepare -DreleaseVersion=X.X.X -DdevelopmentVersion=X.X.Y-SNAPSHOT -DautoVersionSubmodules=true -DpushChanges=false
Note: If there are javadoc failures, use the following, then file a JIRA ticket for the next development cycle
mvn release:prepare -DreleaseVersion=X.X.X -DdevelopmentVersion=X.X.Y-SNAPSHOT -DautoVersionSubmodules=true -DpushChanges=false -Darguments="-Dmaven.javadoc.failOnError=false"
  • Review the local commits for correctness (`git diff HEAD~1`, and `git diff HEAD~2`)

  • Remove/or move local Maven repository
No Format
rm -rf ~/.m2/repository/org/fcrepo
  • Checkout tag
  • Build/Test release tag
No Format
git checkout <release-tag>
mvn clean install
  • Push tags and commits to GitHub
Warning

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.

No Format
git push origin local-release:master
git push origin --tags
  • return to the release tag
Code Block
git checkout <release-tag>

 

  • Deploy to Sonatype
No Format
mvn release:perform -DperformRelease -Dgoals=deploy

Login to https://oss.sonatype.org

Warning
titlePoint of no return

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

No Format
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, and fcrepo-camel-toolbox

Troubleshooting site-deploy

Info
titleError creating blob: API rate limit exceeded

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.

Info

If you get the following error:

Error creating blob: You have triggered an abuse detection mechanism and have been temporarily 
blocked from calling the API. Please retry your request again later. (403)

You may consider using the patched version of site-maven-plugin: https://github.com/awoods/maven-plugins/commit/c62c7b168375e3bfaf0dec7de2fa5fc03d8ed173

Create GitHub release

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

...

Create MD5 and SHA1 files for each of the release artifacts

Code Block
titlecompute-checksums.sh
for x in `ls *.war`; do echo $x; md5sum $x > ${x}.md5; sha1sum $x > ${x}.sha1; done

...

Complete the Duraspace wiki documentation updates

...