Project Documentation

Release Checklist (Developer Info)

Checklist of tasks to perform for each release. For general information about Apache releases you may also consult Publishing Maven Artifacts.

Preparation

  • Ensure that all open bugs have been either fixed or moved to an other release version.
  • Ensure that all examples are working with the release candidate.
  • Post a note on the list and ask for problems with the release candidate.
  • Install a jdk 1.4 and a jdk 1.5 on your computer (only for Tobago 1.0.x).
  • Please switch to a jdk depending of the version to build:
    • for Tobago 1.0.x use jdk 1.5.
    • for Tobago 1.5.x use jdk 1.6 or 1.7.
    • for Tobago 2.0.x use jdk 1.6, 1.7 or 1.8.
    • for Tobago 3.0.x use jdk 1.7 or 1.8.
  • Perform basic checks on an unmodified checkout for all modules:
    # for Tobago 1.0.x
    mvn checkstyle:check rat:check -Pall-modules
    
    # for Tobago 1.5.x and higher
    mvn clean install -Pall-modules && mvn checkstyle:check apache-rat:check animal-sniffer:check -Pall-modules
  • You need to add your GPG keys in Subversion and the Apache site before a release.

Building the Release

  • Prepare the release with:
    mvn release:prepare -Pall-modules
  • Check out a fresh copy of the svn tag:
    cd ..
    svn co https://svn.apache.org/repos/asf/myfaces/tobago/tags/tobago-<version>
    cd tobago-<version>
  • Deploy the fresh copy to the Nexus repository with the apache-release profile (we are not using release:perform here, because of some different options):
    # for Tobago 1.0.x
    mvn deploy -Papache-release,jdk14retro,generate-assembly --no-plugin-updates -Dnon-default-modules -Djava14.home=${java14.jre}
    
    # for Tobago 1.5.x and higher
    mvn deploy -Papache-release,generate-assembly --no-plugin-updates -Dnon-default-modules

    For more information please consult the pom.xml files.

  • Close the repository on the Nexus instance for stating (you will receive a mail with the staging location).

Voting

  • Propose a vote on the dev list with the staging location.
  • For a positive result wait at least 72 hours.
  • Once a vote is successful, post the result to the dev list.

Publishing

  • Close all resolved jira issuse for the release.
  • Release the staging repository on the Nexus instance.
  • Copy the download artifacts from the repository to the site (see script below)
  • Building the site
    • Note: The site can only be build correctly on file systems that supports to differ upper-/lower-case. This is not the default on Windows and Mac OS X machines. On Mac OS X you can mount a virtual filesystem (sparse bundle) that supports upper-/lower-case with the Disk Utility.
      cd /Volumes/tobago-site
      svn co https://svn.apache.org/repos/asf/myfaces/tobago/trunk tobago
      svn co https://svn.apache.org/repos/asf/myfaces/site/publish/tobago tobago-publish
      cd tobago
      export MAVEN_OPTS="-Xmx1500m -XX:MaxPermSize=512m ${MAVEN_OPTS}"
      mvn package
      mvn site:site
      mvn site:stage -DstagingDirectory=/Volumes/tobago-site/tobago-publish
  • Update the site after the distribution is on the Apache mirrors available.
  • Unpack and commit the API Docs of the release with the update-1.0.sh, update-1.5.sh or update-2.0.sh script in /Volumes/tobago-site/tobago-publish (set correct version first).
  • Delete old assemblies in /www/www.apache.org/dist/myfaces/binaries on people.apache.org. Older releases are automatic available in the archive.
  • Delete old snapshots in /www/people.apache.org/builds/myfaces/nightly/ on people.apache.org.
  • Create and send announcement.

Vote template

Subject: [VOTE] Release Tobago <version>

Hello,

I would like to release Tobago <version>,

This release contains over 70 changes.
For a detail list please consult the release notes:

http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=<versionidfromjira>

The version is available at the staging location and the
revision number of the release is 487980 and tagged as tobago-<version>.

Staging distribution:

http://people.apache.org/

Staging repository:

http://people.apache.org/


The vote is open for 72h.

[ ] +1
[ ] +0
[ ] -1

Announcement template

Subject: [ANNOUNCE] Apache Tobago <version>

 The Apache MyFaces team is pleased to announce the release of Apache Tobago <v>.
 Apache Tobago is a component library for JSF.

 Main new features
 -----------------

 [add main new features here or remove this section]

 Changes
 -------

 Please check the release notes at
 http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=<versionidfromjira>
 for a full list of the changes in version <v>.

 Known limitations and bugs:
 ---------------------------

 [add main limitations and known bugs here or remove this section]

 For more information about Apache Tobago, please visit
 http://myfaces.apache.org/tobago/.

 Have fun,
 -The MyFaces team

Copy the download artifacts from the repository to the site (release-tobago.sh)

#!/bin/sh
set -e

VERSION=2.0.2
REPOSITORY=https://repository.apache.org/content/repositories/releases

# download file and hashes/signatures
function download() {
  DIR="$1"
  FILE_ON_REPO="$2"
  FILE="$3"

  curl --fail "${REPOSITORY}/${DIR}/${VERSION}/${FILE_ON_REPO}"      -o ${FILE}
  curl --fail "${REPOSITORY}/${DIR}/${VERSION}/${FILE_ON_REPO}.asc"  -o ${FILE}.asc
  curl --fail "${REPOSITORY}/${DIR}/${VERSION}/${FILE_ON_REPO}.md5"  -o ${FILE}.md5
  curl --fail "${REPOSITORY}/${DIR}/${VERSION}/${FILE_ON_REPO}.sha1" -o ${FILE}.sha1
}

# this performs check of the hashes (if this fails, something might went wrong absolutely)
function check() {
  FILE="$1"

  echo "Checking file ${FILE}: "

  md5 -q "${FILE}" > "${FILE}.md5.temp"
  if ! diff --ignore-all-space "${FILE}.md5" "${FILE}.md5.temp" ; then
    echo "Error: MD5 check failed!"
    exit -1
  fi
  echo "  MD5 hash okay"

  shasum "${FILE}" | cut "-d " -f1 > "${FILE}.sha1.temp"
  if ! diff --ignore-all-space "${FILE}.sha1" "${FILE}.sha1.temp" ; then
    echo "Error: SHA1 check failed!"
    exit -1
  fi
  echo "  SHA1 hash okay"

  if ! gpg --verify "${FILE}.asc" ; then
    echo "Error: GPG check failed!"
    exit -1
  fi
  echo "  GPG signature okay"
}

# commands

download "org/apache/myfaces/tobago/tobago-assembly"         "tobago-assembly-${VERSION}-dist.tar.gz"            "myfaces-tobago-${VERSION}-dist.tar.gz"
download "org/apache/myfaces/tobago/tobago-assembly"         "tobago-assembly-${VERSION}-dist.zip"               "myfaces-tobago-${VERSION}-dist.zip"
download "org/apache/myfaces/tobago/tobago-example-assembly" "tobago-example-assembly-${VERSION}-example.tar.gz" "myfaces-tobago-${VERSION}-example.tar.gz"
download "org/apache/myfaces/tobago/tobago-example-assembly" "tobago-example-assembly-${VERSION}-example.zip"    "myfaces-tobago-${VERSION}-example.zip"
download "org/apache/myfaces/tobago/tobago"                  "tobago-${VERSION}-source-release.zip"              "myfaces-tobago-${VERSION}-source-release.zip"

check "myfaces-tobago-${VERSION}-dist.tar.gz"
check "myfaces-tobago-${VERSION}-dist.zip"
check "myfaces-tobago-${VERSION}-example.tar.gz"
check "myfaces-tobago-${VERSION}-example.zip"
check "myfaces-tobago-${VERSION}-source-release.zip"

rm *.temp

scp myfaces-tobago-${VERSION}-dist.*           people.apache.org:/www/www.apache.org/dist/myfaces/binaries
scp myfaces-tobago-${VERSION}-example.*        people.apache.org:/www/www.apache.org/dist/myfaces/binaries
scp myfaces-tobago-${VERSION}-source-release.* people.apache.org:/www/www.apache.org/dist/myfaces/source