ReleaseProcess

Ensure you're using appropriate versions of the JDK or setting the bootclasspath

Check the Oracle Java Archive if you need older versions of the JDK.

If you set the build.bootclasspath Ant property either on the command line, or more commonly, in a build.properties file in each repository root directory, then you can safely build all components with JDK 8 or later. For example:

          # JDK 7 bootclasspath.
          jdk7.home = <path to JDK 7>
          build.bootclasspath = ${jdk7.home}/jre/lib/rt.jar\
              :${jdk7.home}/jre/lib/jsse.jar\
              :${jdk7.home}/jre/lib/jce.jar

If you do not set the build.bootclasspath Ant property, you will get a warning from javac:

          warning: [options] bootstrap class path not set in conjunction with -source 1.7

Note: If you use a later JDK without setting build.bootclasspath, or if you specify the wrong JDK version in build.bootclasspath, the potential errors are very difficult to detect. The class file versions will be correct, but the code may not run reliably on the desired version of the JVM, and the failures may happen at any time.

Component Minimum Supported JDK JDK used to build release
javac source javac target
Adaptor Library 6 6
Active Directory 6 7
Database 7 7
Documentum 7 7
File System 7 7
LDAP 6 7
OpenText 7 7
SharePoint & SharePoint User Profiles 6 7

Commands to produce new releases

Create release branch

This step is performed only for .0 releases, e.g., 4.1.0.

          
            # Release branch names start with "v" and end in "x".
            BRANCH=v4.1.x

            # Make sure local code is up-to-date
            git checkout master
            git pull

            # Create branch
            git checkout -b $BRANCH
            # Push branch for others to see
            git push -u origin $BRANCH

            #### In other local clones (optional) ####
            # Get new branch
            git fetch
            # Create a local branch that pulls/pushes to origin/$BRANCH
            git branch $BRANCH origin/$BRANCH
          
        

Build RC of library

          
            # Release branch names start with "v" and end in "x".
            BRANCH=v4.1.x
            VERSION=4.1.2

            # Get a new clone.
            cd ~
            git clone https://github.com/googlegsa/library library-$VERSION
            cd library-$VERSION
            git checkout $BRANCH

            # Update the branch, if releases are from master, to the
            # commit for this RC build.
            git merge --ff-only origin/master

            # Tag the new version. Do NOT push the tag. 
            git tag -a v$VERSION -m "Version $VERSION"

            # Copy or create build.properties.
            cp ../library/build.properties .

            # Build the distribution.
            ant dist
          
        

Note: Keep this clone until a subsequent RC is built, or the release is published.

Extract documentation zip from full distribution zip

          
            cd dist
            unzip adaptor-$VERSION-bin.zip adaptor-$VERSION-docs.zip
          
        

Build RC of adaptor

          
            # Release branch names start with "v" and end in "x".
            ADAPTOR=database
            BRANCH=v4.1.x
            VERSION=4.1.2

            # Have adaptor library
            # eg: cd ~/library-$VERSION/dist
            # unzip adaptor-$VERSION-bin.zip adaptor-$VERSION-withlib.jar

            # Get a new clone. Do NOT run "git submodule" commands here.
            cd ~
            git clone https://github.com/googlegsa/$ADAPTOR $ADAPTOR-$VERSION
            cd $ADAPTOR-$VERSION
            git checkout $BRANCH

            # Update the branch, if releases are from master, to the
            # commit for this RC build.
            git merge --ff-only origin/master

            # Tag the new version. Do NOT push the tag.
            git tag -a v$VERSION -m "Version $VERSION"

            # Copy or create build.properties.
            cp ../$ADAPTOR/build.properties .

            # Build the distribution.
            cp ../library-$VERSION/dist/adaptor-$VERSION-withlib.jar lib/
            ant -Dadaptor.jar=lib/adaptor-$VERSION-withlib.jar dist
          
        

Note: Keep this clone until a subsequent RC is built, or the release is published.

Note: It is possible to reuse this directory for subsequent RC builds, by leaving out some steps and altering others, but that is not recommended or documented.

Release the library or adaptor

Push the branch and tag to GitHub.

Note: If you no longer have the clone used to create the branch and tag for the RC build, you can recreate the branch and tag in a new clone, and then proceed with this step.

          
            # Release branch names start with "v" and end in "x".
            BRANCH=v4.1.x
            VERSION=4.1.2

            # Push the branch and tag.
            git push -u origin $BRANCH v$VERSION
          
        

On the Releases page of the GitHub repository UI, click "Draft a new release". Select the new tag for the version, use "Version $VERSION" for the release title, and use one of the following snippets Markdown for the description, manually substituting the shell variables in both cases. Edit the MD5 checksums in the description below and upload the corresponding files.

Markdown for library

[Documentation](https://support.google.com/gsa/topic/4566684)
[API Documentation](https://googlegsa.github.io/librarydocsreleased/$VERSION/lib/index.html)

| Downloads File | MD5 Checksum |
| --- | --- |
| adaptor-$VERSION-bin.zip | abc...xyz |
| adaptor-$VERSION-withlib.jar | def...123 |

Markdown for adaptor

[Documentation](https://support.google.com/gsa/topic/4566684)

| Downloads File | MD5 Checksum |
| --- | --- |
| adaptor-$ADAPTOR-$VERSION-withlib.jar | abc...xyz |
| $ADAPTOR-install-$VERSION.exe | def...123 |