You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 181 Next »

Steps needed to make a Grouper release

Final todo's

  • Shilen WS tests
    • This week
  • Vivek 4 tarballs (messaging and tier api)
  • Chris other tarballs (whatever is missing)
    • DONE: tarballs and scripts for box, duo, and voot are there.  Now are built automatically
  • Bert putting pspng changes in master
  • Bert 2 tarballs
  • Bert to upgrade java8 on dev server /opt/java8 (keep a copy of old dir)
    • Couple days
  • Once release ready: Chad pom.xml dance
  • Once release ready: Tell packaging team to package it up
  • Chris and Shilen upgrade
    • This week
    • Shilen (08/08/2018) - Tested upgrade using Oracle - Installed 2.3 API/UI/WS using installer with all patches.  Upgraded each of the 3 components using the 2.4 installer without any issues.
    • Shilen (08/08/2018) - Tested upgrade using Oracle - Installed 2.3 API using installer with only API patch 1.  Upgraded API without any issues.  Confirmed ehcache migration.
  • Chad to fix activemq-all jar
    • This week
  • Once release out: Chris to patch grouperClient checkconfig file size
  • Chris and Emily to announce and update wiki
  • Emily check wiki make sure things are up to date
    • This week
  • Chad to check git: everything merged to master, document on release steps page

Changes in git

Check git to make sure all commits in 2.3 are in master branch


Edit all the pom.xmls <version> tags (done for 2.4)

  • FROM <version>2.4.0-SNAPSHOT</version>
  • TO <version>2.4.0</version>

Edit all the README.txt files (done for 2.4) 

Edit all misc/version.properties (done for 2.4)

Update Grouper specsheet software requirements page (done for 2.4)

Grouper client (done for 2.4)

  • conf/grouper.client*.properties  grouperClient.webService.client.version = v2_4_000

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

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

Grouper API

  • GrouperVersion.java (done for 2.4)
  • Make sure the subject jar up to date in api lib
  • Run the command line utility to code generate which jars/sizes/etc are expected: GrouperCheckconfig.main() (did this but do it again in final version) (done for 2.4)
  • Tag, build, get grouper client jar, but back in API, run GrouperCheckConfig, commit and push, tag again, build, and only take the API and put to release server (done for 2.4)

Grouper installer

  • grouper.installer.example.properties (done for 2.4)
  • GiGrouperVersion.java (done for 2.4)

Grouper UI

  • translate the Grouper UI text to French (our French partners have agreed to do this, as of discussion with Chris in Fall 2012)

Grouper WS

  • grouper-ws.base.properties (done for 2.4)
  • If there is a new minor version with changes to the wsdl, add a new source folder for that version, copy the coresoap *.javas over to it, refactor to change the package, change the build.xml to build a WSDL for that version.  Change GrouperService to be like a previous version but add new methods or change methods in it (done for 2.4)
  • Make sure that there is no coresoap (package) in use in src/grouper_ws_v1_6, src/grouper_ws_v2_0, etc.  Take out all src/grouper_ws_vx_x except one, make sure they dont depend on each other (done for 2.4)
  • Generate the wssec aar's and commit them (done for 2.4)
  • Generate WSDLs and commit them (done for 2.4)

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.4)

Tag all (API, UI, WS, QS, client, etc) (done for 2.4)

  • In git, the tag should be something like: GROUPER_2_4_0, **tag for last commit in branch**, **force overwrite of tags that exists on remote host**, and push tag (done for 2.4)

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.5.0) (TODO)

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> (TODO)

See which config files / jar files / ddl changed since last release, make sure there are entries in the change log. (do we do this anymore? Grouper changes v2.2)

If its a minor release, change the release version policy page (done for 2.4)

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. (dont want to change all files)

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.4)

Misc Checks

  • Make sure all tables, views, and cols (of tables and views) have comments in the DB (oracle or postgres). (TO DO on a rainy day)
  • Make sure the grouper-ws and gruoper-ui web.xml file has the security basic auth in there (didn't get accidentally overridden in commit) (done for 2.4)

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 (with utf/bin collation table types)





Oracle





PostgreSQL





MsSQL





  • MySQL windows
  • MySQL unix with case sensitive table names
  • Postgres
  • Oracle

    create role GrouperRole;
    GRANT connect, resource, CREATE view TO GrouperRole;
    CREATE USER groupertest IDENTIFIED BY <pass>;
    GRANT connect, resource, GrouperRole TO groupertest;
    
  • Hsql
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.3 to 2.4).

  •  
  • Open the UI, browse around

Install the grouper installer

  • Download grouper installer
  • Run: java -jar grouperInstaller.jar
  • Try the UI that was installed
  • Make sure gsh.sh and gsh works in api, ws, ui for 2.4.0

Database

Linux

OS X (10.6)

Solaris

Windows

HSQLDB

CH




MySQL





Oracle





PostgreSQL





MsSQL





Web Service JUnit Tests (Grouper WS and Grouper Client) (Shilen work on for 2.4.0, has errors in client tests)

WS samples (DONE for 2.4.0)

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

  • ssh to i2mibuild.internet2.edu
  • cd to ~mchyzer
  • Build all with: [mchyzer@i2mibuild mchyzer]$ bin/buildGrouperAll.sh GROUPER_x_y_z
  • This is the same as these individual commands:
    • bin/buildGrouper.sh GROUPER_x_y_z
    • bin/buildGrouperWs.sh GROUPER_x_y_z
    • bin/buildGrouperClient.sh GROUPER_x_y_z
    • bin/buildGrouperUi.sh GROUPER_x_y_z
    • bin/buildGrouperQs.sh GROUPER_x_y_z
  • Note: sometimes the grouperWs doesnt build correctly due to a bug with javadoc, just try building the ws again...

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

  • scp packages built above, to:
sftp login.internet2.edu    (then sftp to webprod3)
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
  •  Build to demo server, after the release is tagged, and built on the build server in Chris' directory... (TODO after release)

[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.

Publish to maven central here

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

Archive the current release

  • Create PDF of current documentation for the release archive
    • Browse -> Advanced -> Export Space
    • select PDF, uncheck save comments, clear all
    • select pages to export. try to omit non-product pages, defunct pages, and pages for future releases.
    • export, save to desktop, rename and attach to GrouperWG/Archives
  • update Archives page with info from the current vN.N+Release+Notes page and links from the Software+Download page.

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

  • Ensure that each page identifies which version it's current for, as in "Building the Grouper API as of v1.4.1" as an h2 at the top.
  • Review incoming and outgoing links info for each page.
  • If there's new features with new pages, update the Grouper+Product page to appropriately reference the new pages.
  • Is it all there?
  • Are there pages in the Working Group or Community areas that have graduated to being core product doc? Negotiate with originator to move them over to the 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

Review Impact, if any, on TIER Grouper Deployment Guide

  • Consider if the new release should lead to any changes/updates in the TIER Grouper Deployment Guide  
  •  if yes, discuss with Bill Thompson, Lafayette College

Update Grouper Wiki Documentation

  • Update wiki pages for all changed features. 
    • Be sure that Grouper wiki doc pages for new features are moved from the   Development Items are and area and instead linked from the Admin Guides area. 
  • Review the Glossary, remembering this could be a first place new people go to learn important terms. It seems rusty to Emily but not exactly sure how to improve it. HELP appreciated.
  • Be sure that wiki pages on new Features are linked correctly from the Admin Guides TOC page

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.

Packaging team

Talk to the TIER packaging team to see what their plan is

Notify about the release

  • Compose email to grouper-dev@internet2.edu and grouper-users@internet2.edui and grouper-announce@internet2.edu with highlights of the new release and link to the Grouper Downloads page
  • email to mw-announce [at] internet2.edu email list
  • Highlights should resemble those on the vN.N Release Notes page and maybe even be identical.
  • If it's especially enlightening, also include a direct link to the changelog (vN.N+Release+Notes#vN.NReleaseNotes-changelog) or to an appropriate Jira report.
  • Change jira admin to make that version released, and if the next build or version isnt there, add it

Other Outreach

  • update Grouper website features page to highlight newest Grouper features
  • Social Media: Announce the new Grouper release on the InCommon and Internet2 Facebook and Twitter accounts as appropriate
  • work with Todd Sedmak, Internet2 PR & Media Relations Manager, around other possible publicity/press releases etc.
  • A Grouper Team member (DaveL for the Grouper 2.2 release) will create a Youtube video (using same tools as the Grouper Training videos) highlighting new features
    • promote this video in coordination with the Internet2 Marketing and Communications Team 
  • schedule a webinar to promote the new release


Grouper Failing Tests

TestOwnerStatus and dateReason it was failing
testIndexesGroupVivekFixedNow we are creating more folders at the startup time due to deprovisioning and they are using all the reserveIds.
testProcessMessagesHappyPathVivekFixedfake http server was being created at the wrong context.
testFindAttrDefAttributeAssignmentsChrisFixedbad security was being called
testFindAttrDefAttributeAssignmentsByValueChrisFixedbad security was being called
testFindByAttributeAssignOnAssignValuesAndPrivilegeVivekFixedNeeded to assign correct privileges to test subject
testGrouperAttestationPrivilegesVivekFixedNeeded to assign correct privileges to test subject
  • No labels