Steps needed to make a Grouper release

Changes in SVN

Check git to make sure all commits in 2.2 are in master (DONE from Aug 2, 2015 - April 5, 2016)

Edit all the pom.xmls <version> tags (DONE for 2.3)

Edit all the README.txt files (DONE for 2.3)

Edit all misc/version.properties (DONE for 2.3)

Grouper client (DONE for 2.3)

Look for other occurrences of grouper.client*.properties and refresh them (should only be grouper API, wsSourceAdapter, subject) (DONE for 2.3)

Look for grouperClient.jar in SVN, and update it after build and copy to release server (should only be grouper API)

Grouper API

Grouper installer (DONE for 2.3)

Grouper UI

Grouper WS (DONE for 2.3)

Search for the old version (e.g. 2.2.2 or 2_2_2 or 2_2_002) in all the files (DONE for 2.3)

Tag all (API, UI, WS, QS, client, etc) (DONE for 2.3)

For a major release, do a branch for all (API, UI, WS, QS, client) as e.g. GROUPER_1_4_BRANCH (won't do until we start work on 2.4.0)

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> (done for 2.3.0)

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

If its a minor release, change the release version policy page (DONE for 2.3)

Handle Copyright According to Policy

Run the copyright wizard on the entire branch for java files.  Or you can diff in version control and go through the new files.  Note, only new files should have diffs...  this is the custom copyright.  You can update the year for new files, don't update the year for existing files.  The year should be used and not a range.  That is our policy on copyrights.

Copyright 2015 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.

Make sure the subjects.sql and quickstart.xml file are in the release directory (copy from 2.3.0) (DONE for 2.3.0)

Misc Checks

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. (dont do for 2.3.0)

If possible run a security scan against a test instance - University of Pennsylvania via Chris? (dont do for 2.3.0)

*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. (dont do for 2.3.0)

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

Done by Chris
Time: 14,667.86 (4 hours)
OK (2232 tests)



In progress by Chris

MySQL (with utf/bin collation table types)





Oracle

Done by Shilen.  All tests pass.




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 the UI with a few different languages in the browser request (en without US, french, something not common)

Try checkConfig tests.

Upgrade from x.y-1 to x.y (e.g. 2.2 to 2.3).

Install the grouper installer

Database

Linux

OS X (10.6)

Solaris

Windows

HSQLDB

DONE for 2.3 (chris)




MySQL





Oracle





PostgreSQL





MsSQL





Web Service JUnit Tests (Grouper WS and Grouper Client) (DONE for 2.3.0, though 9 errors in client tests)

WS samples (DONE for 2.3.0) (note: still need to code/run new SOAP samples)

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

UI internationalization tests (TODO?)

Test an API patch

# try to see if someone else is testing, look when process started, wait if so or email list...
[appadmin@i2midev6 ~]$ ps -ef | grep gsh | grep test | grep all



# see if hsql is running, and stop if so
[appadmin@i2midev6 ~]$ ps -ef | grep hsql
[appadmin@i2midev6 ~]$ kill <the_pid>
[appadmin@i2midev6 ~]$ testGrouper2_3.sh > /tmp/grouperTestResults.txt & 2>&1
[appadmin@i2midev6 ~]$ tail -f /tmp/grouperTestResults.txt

Compile test on server

/**
 * Test {@link Stem}.
 * <p />
 * @author  blair christensen.
 * @version $Id: TestStem.java,v 1.34 2009-12-07 07:31:09 mchyzer Exp $
 */
public class Test extends GrouperTest {

    // Private Class Constants
    private static final Log LOG = GrouperUtil.getLog(Test.class);

    /**
     * Method main.
     * @param args String[]
     */
    public static void main(String[] args) {
        TestRunner.run(new Test("testCache"));
        //TestRunner.run(TestStem.class);
    }

    public Test(String name) {
        super(name);
    }


javac -classpath .:../lib/grouper/*:../lib/test/*:../dist/lib/* -sourcepath . Test.java


 java -classpath ../conf:.:../lib/grouper/*:../lib/test/*:../dist/lib/grouper.jar:../lib/jdbcSamples/hsqldb.jar Test


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/home/htdocs/software.internet2.edu/grouper/release/1.2.12
cd /home/htdocs/software.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. (DONE for 2.3.0)

Publish to maven central here

Copy grouper.psp-version.tar.gz to the release URL. (DONE for 2.3.0)

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

https://spaces.at.internet2.edu/display/Grouper/Grouper+Downloads

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

Other Outreach