Latest Release‎ > ‎Developer HowTos‎ > ‎

Making Releases

Introduction

This document describes how to produce a release and distribution of the GridShib-CA. Steps are meant to be sequentially (with some parallelism possible as noted).

It is assume you can build the code. As with building the code, you must have configured your local working copy of the code with '--enable-build'.

Needed Accounts and Prererequsites

In addition to what you need to build the code, you will need the following to make a release:

  • A PGP/GPG key for signing the release.
  • An account on sourceforge and be a member of the cilogon project in order to upload the distribution.
  • An account on the cilogon.org website to update documentation.
  • An account and sudo access on shibber.ncsa.uiuc.edu to deploy and test.
    • To test Shibboleth functionality, an account with a Shibboleth identity provider. NCSA staff can use U. of Illinois' provider. ProtectNetwork is alternative for those whose home organization doesn't offer one.
    • To test OpenId functionality, an account with an OpenID identity provider. myOpenID is an alternative for those whose home organization doesn't offer one.
  • The ability to send email to gridshib-announce.

Update version in configure.ac

Set the version number by editing configure.ac and modifying two values, the first is the version number itself which is specified as the second argument to AC_INIT() - e.g. the following shows a version of 2.0.0:

AC_INIT(gridshib-ca, 2.0.0)

Second, specify the qualifier on the distribution to be made, e.g. 'alpha', 'beta', 'rc1', 'preview' by setting the value of PACKAGE_RELEASE_STATUS:

PACKAGE_RELEASE_STATUS="preview"

This value has no semantic meaning, but will appear concatenated with a dash to the version string on the distribution tarball and in version strings in the code. Typically values are "preview" which is used to mark a version as being non-complete, or rc1, rc2, etc. for release candidates that are made public. Usually I leave the value at "preview" unless I'm going to make a tarball public or I'm cutting a final release; for the latter I set it to the empty string, i.e.:

PACKAGE_RELEASE_STATUS=""

Test locally by running 'make test'

The most basic test is 'make test' - this will check all the perl syntax and run some simple tests on the back end CA code. Hopefully since you thought you were ready for release this will run without a hitch, but this will catch some problems early.

Create distribution by running 'make dist'

This will generate a tarball from the code in the current working directory (i.e. it doesn't go into CVS). As a result of running this command, you should end up with a file such as "gridshib-ca-2-0-0-preview.tar.gz", where 2-0-0 and preview are based on the values you set in configure.ac in the first step above.

Test distribution by running 'make test-dist'

This will unpack and install and test the newly created tarball in /tmp. It's not comprehensive, but it will catch a number of simple errors.

Behind the scenes it's running test/test-dist.sh which is installing the code and then running 'make test-post-install'.

Deploy and test manually

The automated tests cover a lot of the back end functionality, but don't cover the user interface through the web front end. First step is to deploy on shibber.ncsa.uiuc.edu by running the following:

make deploy-test

This should result in a working URL similar to the following: https://shibber.ncsa.uiuc.edu/gridshib-ca-test-2.0.0-preview2/ . Note that you will need to update your Apache Configuration in order to have the script execute properly.

Then you can use your Shibboleth and OpenID accounts to verify you can create a session and download credentials.

Commit updated version and any fixes to CVS

Now that you are certain you have good solid code to release, go ahead and check ALL your changes from the current working checkout into CVS. The distribution is made from your current checked-out repository so it needs to be in synch with what is in CVS or the subsequent tag step will not do what you want.

TODO: Building a distribution from a tag in CVS would be better in that it would forbid the possibility of a out-of-synch release.

CVS tag the release code

Now tag cvs the release. The tag name convention is "v2_0_0", i.e. replace the dots in the version string with underscores and prepend a 'v'. E.g.:

% cvs tag v2_0_0

Make the official distribution with 'make dist' / 'make dist-sign'

If you made any changes that you had to check in, refresh the tarball by running 'make dist'.

Run 'make dist-sign' to sign the release using your PGP/GPG key.

Upload distribution to cilogon.sourceforge.net

Run 'make publish-dist' to upload the distribution and signature to cilogon.sourceforge.net

This should result in the distribution being available at http://sourceforge.net/projects/cilogon/files/gridshib-ca/

Update Links on gridshibca.cilogon.org

Visit the download page on gridshibca.cilogon.org and update the links for the latest version.

Upload documentation with 'make publish-doc'

Upload the documentation to the cilogon.sourceforge.net website by running 'make publish-doc'. You should then be able to point a web browser at cilogon.sourceforge.net and view the documentation.

Update links on cilogon.sourceforge.net

Log onto shell.sourceforge.net (via the sourceforge shell service) and change the symlink for the current gridshib-ca documentation:

$ ssh -t USER,cilogon@shell.sourceforge.net create
$ cd /home/groups/c/ci/cilogon/htdocs/gridshib-ca/docs
$ rm -f current
$ ln -s gridshib-ca-2.0.0 current

Pointer your web browser at the URL below and check your changes.

http://cilogon.sourceforge.net/gridshib-ca/docs/current/

Deploy latest version on shibber.ncsa.uiuc.edu

Run make deploy-test again to push any changes you've made to shibber.ncsa.uiuc.edu.

On shibber, edit /var/www/html/index.html and update the version number in the paths for the latest deployment.

Announce

Send email to gridshib-announce announcing the release.  Also, post a news announcement to the www.cilogon.org News page. Note that you need to be signed in to be able to post a new announcement.

Close any open bugs in bugzilla

Go to the Globus bugzilla and close any bugs resolved by the new release.

Fini

That's it.
Comments