Document of steps needed to make a Grouper release

Changes in SVN

Merge all SVN folders with previous branches

Edit all the pom.xmls <version> tags

Edit all the README.txt files

Grouper client

Grouper API

Grouper installer

Grouper UI

Grouper WS

Search for the old version (e.g. 2.1.2 or 2_1_2 or 2_1_002) in all the files

Tag all (API, UI, WS, QS, client, etc)

For a major release, do a branch for all (API, UI, WS, QS, client) as e.g. GROUPER_1_4_BRANCH

For the final build, replace all the pom.xml <version>x.y.z-SNAPSHOT</version> with the <version>x.y.z</version>, then tag, and then branch or change to <version>x.y.(z+1)-SNAPSHOT</version>

See which config files / jar files / ddl changed since last release, make sure there are entries in the change log.

Run the copyright wizard on the entire branch for java files.  Note, only new files should have diffs...  this is the custom copyright:

Copyright 2012 Internet2

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Misc

Security review

Review UI / WS code changes* from the previous version with respect to Open Web Application Security Project (OWASP) top 10 web application security vulnerabilities.

If possible run a security scan against a test instance - University of Pennsylvania via Chris?

*We have not carried out a thorough security review of the existing code base for any version of Grouper. We should do that in order for the incremental reviews to be adequate.

Testing

Run API (SuiteDefault) junit tests (set true in all junit test includes in grouper.properties).  Also run the Grouper Installer, it should end in success for the client connecting to the WS and you should be able to use the UI.

API JUnit Tests

Database

Linux

OS X (10.6)

Solaris

Windows

HSQLDB

 

 

 

 

MySQL

 

 

 

 

Oracle

 

 

 

 

PostgreSQL

 

 

 

 

MsSQL

 

 

 

 

ps -ef | grep java   --- kill hsql
wget http://www.internet2.edu/grouper/release/x.y.z/grouper.apiBinary-x.y.z.tar.gz
cd grouper.apiBinary-2.0.0
cd bin
java -cp ../lib/jdbcSamples/hsqldb.jar org.hsqldb.Server -port 9001 -database.0 file:grouper -dbname.0 grouper &
./gsh.sh -registry -runscript
./gsh.sh -test -all

Try checkConfig tests.

Upgrade from x.y-1 to x.y (e.g. 2.0 to 2.1).

Install the grouper installer

Database

Linux

OS X (10.6)

Solaris

Windows

HSQLDB

 

 

 

 

MySQL

 

 

 

 

Oracle

 

 

 

 

PostgreSQL

 

 

 

 

MsSQL

 

 

 

 

Web Service JUnit Tests (Grouper WS and Grouper Client)

WS samples

WS javadoc (generate, commit, test).  Make sure new operations / args / etc are documented in the WS doc page

Packaging and releasing

Resulting .tar.gz's are in ~mchyzer/tmp/grouperAll/build_<username>. There are both source and binary tarballs for the API and Client packages.

sftp webprod0.internet2.edu
lcd /home/mchyzer/tmp/grouperAll/build_username
mkdir /home/htdocs/www.internet2.edu/grouper/release/1.2.12
cd /home/htdocs/www.internet2.edu/grouper/release/1.2.12
mput *.tar.gz

\[appadmin@i2midev1 2.0.0\]$ pwd
/opt/grouper/2.0.0
\[appadmin@i2midev1 2.0.0\]$ ./upgrade_2.0.0.sh

Packaging and releasing : provisioning

After tagging, publish to maven central by following the instructions on v2.1.0 Grouper Development Environment Using Maven.

Copy grouper.psp-version.tar.gz to the release URL.

Archive the current release

Update vN.N+Release+Notes page

Generally roll notes from the oldest release off and add notes for the new release. Keep previous release notes in there, so that we always have current + previous.

Update Software+Download page

Swap in release-specific pages

Feature releases tend to have a fair number of pages with info that's new for the new version, and that doc is kept in pages named vN.N-Some+Page+Name so that current pages always document the current release. Further, these pages may contain a custom replacement for the top- and bottom-of-page nav info, so that new release doc is linked together by the nav, separate from current release doc. And of course they may contain links to other v.Next-specific pages, or be linked to from such.

To swap a v.Next page in for the one it replaces, open both old and new for edit, copy the wiki text for the new, omitting the top and bottom nav includes, paste into the old page, leaving the top and bottom nav stuff in place, remove the old wiki text. Then go through and update any outbound links referring to v.Next pages to omit the v.Next part of their name.

When this is all done, double-check on the status of links within all pages by going to Browser -> Pages -> Alphabetical -> V, and for each v.Next page

Review product pages

Update GrouperWG/Home

Just update the "NEW!!" message on this page. Maybe review the Background section to see if it could use some freshening.  Maybe add a news item

Review Training Videos

Update Grouper Wiki Documentation

Release Numbering and Testing Period

As of Feb. 2012, these procedures were adopted regarding release numbering and testing:

- The X.X.0 release will be considered a pre-release, like a Release Candidate
- That will be the testing release
- The X.X.1 release will be the actual release, presumably after any initial bugs identified have been fixed.

Notify about the release