CAS 6.1.x Release Process
This page documents the steps that a release engineer should take for cutting a CAS server release.
Sonatype Setup
You will need to sign up for a Sonatype account and must ask
to be authorized to publish releases to the org.apereo
package by creating a JIRA. Once you have, you may be asked to have one of the
current project members vouch for you.
GPG Setup
You will need to generate your own PGP signatures to sign the release artifacts prior to uploading them to a central repository. In order to create OpenPGP signatures, you will need to generate a key pair. You need to provide the build with your key information, which means three things:
- The public key ID (The last 8 symbols of the keyId. You can use
gpg -K
to get it - The absolute path to the secret key ring file containing your private key. Since gpg 2.1, you need to export the keys with command:
1
gpg --keyring secring.gpg --export-secret-keys > ~/.gnupg/secring.gpg
- The passphrase used to protect your private key.
The above settings will need to be placed into the ~/.gradle/gradle.properties
file:
1
2
3
signing.keyId=7A24P9QB
signing.password=P@$$w0rd
signing.secretKeyRingFile=/Users/example/.gnupg/secring.gpg
Additional notes on how artifacts are signed using the Gradle signing plugin are available here
Environment Setup
- Load your SSH key and ensure this SSH key is also referenced in GitHub.
- Adjust
$GRADLE_OPTS
to initialize the JVM heap size, if necessary. - Load your
~/.gradle/gradle.properties
file with the following as an example:
1
2
org.gradle.daemon=false
org.gradle.parallel=false
- Checkout the CAS project:
git clone git@github.com:apereo/cas.git cas-server
- Make sure you have the latest version of JDK 11 installed via
java -version
.
Preparing the Release
Apply the following steps to prepare the release environment. There are a few variations to take into account depending on whether a new release branch should be created.
Create Branch
1
2
# Replace $BRANCH with CAS version (i.e. 5.3.x)
git checkout -b $BRANCH
You should do this only for major or minor releases (i.e. 4.2.x
, 5.0.x
).
If there already exists a remote tracking branch for the version you are about to release, you should git checkout
that branch,
skip this step and move on to next section to build and release.
Travis CI
- Change
.travis.yml
to only build the newly-created release branch. - Examine all CI shell scripts under the
ci
folder to make sure nothing points todevelopment
ormaster
. This is particularly applicable to how CAS documentation is published to thegh-pages
branch. - Disable jobs in CI that report new dependency versions or update dependencies using Renovate or other bots, etc.
Do not forget to commit all changes and push changes upstream, creating a new remote branch to track the release.
Performing the Release
- In the project’s
gradle.properties
, change the project version to the release version and remove the-SNAPSHOT
. (i.e.5.0.0-RC1
). - Then build and release the project using the following command:
1
./release.sh
Next:
- Log into https://oss.sonatype.org.
- Click on “Staged Repositories” on the left and find the CAS release artifacts at the bottom of the list.
- “Close” the repository via the toolbar button and provide a description. This step may take a few minutes. Follow the activity and make sure all goes well.
- “Release” the repository via the toolbar button and provide a description. The step is only enabled if the repository is successfully closed.
Finalizing the Release
- Create a tag for the released version, commit the change and push the tag to the upstream repository. (i.e.
v5.0.0-RC1
).
If you did create a new release branch, you should also switch back to master
and follow these steps:
- In the project’s
gradle.properties
, change the project version to the next development version (i.e.5.0.0-RC2-SNAPSHOT
). - Push your changes to the upstream repository.
Housekeeping
- Close the milestone for this release.
- Find the release that is mapped to the released tag and update the description.
When updating the release description, try to be keep consistent and follow the same layout as previous releases.
- Mark the release as pre-release, when releasing RC versions of the project.
- Send an announcement message to @cas-announce, @cas-user and @cas-dev mailing lists, linking to the new release page.
Update Overlays
Update the following overlay projects to point to the newly released CAS version. You may need to move the current master
branch
over to a maintenance branch for each of the below overlay projects, specially if/when dealing with major/minor releases
and if the release process here had you create a new branch.
Update Documentation
If you did create a new release branch as part of a new major/minor release:
- Configure docs to point
current
to the latest available version here. - Update this page and add the newly released version.
- Update the project’s
README.md
page as necessary. - Update this page to include any needed information on how to build the new release.
Update Maintenance Policy
Update the Maintenance Policy to note the release schedule and EOL timeline. This task is only relevant when dealing with major or minor releases.
Optional
Update Demos
A number of CAS demos today run on Heroku and are tracked in dedicated branches inside the codebase. Take a pass and updated each, when relevant.