Enterprise open source portal built by and for the higher education community.
This project is maintained by uPortal-Project
There are 3 prerequisites to cutting releases:
gpg2 --gen-key
gpg2 --edit-key {key ID}
gpg2 --list-keys
(the key ID is the pub
ID)gpg2 --keyserver hkp://pool.sks-keyservers.net --send-keys {key ID}
Export your secret keyring via gpg2 --keyring secring.gpg --export-secret-keys > ~/.gnupg/secring.gpg
In $HOME/.gradle/gradle.properties
place your credentials for the Sonatype OSS Repository Hosting and your configuration information for signing artifacts with GNU Privacy Guard (GnuPG). Use the key ID from the PGP prerequisite and the keyring file. (details).
NOTE: you cannot use your login credentials for Sonatype OSSRH. You need to log in, navigate to profile and generate a token. See publishing guide links below for help.
ossrhUsername={username}
ossrhPassword={secret}
signing.keyId={key ID}
signing.password={secret}
signing.secretKeyRingFile={keyring file}
Setup is only required to be done once.
See the publishing guide and the Gradle publishing guide for more assistance.
We encourage performing releases directly from a clone of the official repository rather than a fork to avoid extra steps.
This means when testing on uPortal-start
for the release, you should use the apereo
repository but configure the uPortalVersion
to be the SNAPSHOT version that you’ll build in the following steps.
For any non-snapshot release, email a notice to uportal-dev
a couple of working days prior to cutting the release.
master
Before releasing uPortal and updating uPortal-start with the latest uPortal version, review the dependencies and update dependencies where appropriate.
Assuming adopters use the community build of uPortal, there are three primary sets of dependencies to be considered:
Ideally, dependencies in all of the above areas should be at the latest versions. In reality, dependencies may lag, and be out of sync with each other.
nodejsVersion
- uPortal and uPortal-start use NodeJS for building artifacts and Gradle tasks. They are not required to be in sync. Ideally they should be on the same major version, but minor and patch version don’t need to matchlombokVersion
- Should stay in sync across the dependency areasslf4jVersion
- Should stay in sync across the dependency areasresourceServerVersion
- Should use the latest version in uPortal, and should generally stay at 1.0.48
in uPortal-start. These two resource server versions are due to uPortal-start needing some older dependencies to run a portal with the included UX.resourceServer13Version
- Only in uPortal-start. Should always be at the latest versionpersonDirectoryVersion
- Should stay in sync across the dependency areasBuild a clean version of uPortal-start
with the quickstart data set and perform at least light testing, especially around features that have been fixed or enhanced.
Build uPortal locally:
cd ./uPortal
./gradlew clean install
Point your uPortal-start to the local uPortal build:
Using the uPortal version, .../apereo/uPortal/gradle.properties
> version=XYZ
, add it into .../apereo/uPortal-start/gradle.properties
> uPortalVersion=XYZ
Run uPortal-start with the local build
cd ./uPortal-start
./gradlew clean portalInit
Run the following command in the uPortal clone’s directory:
~.../apereo/uPortal$ ./gradlew clean release --no-parallel
:Note: During the release
task, you will be prompted for a release version (e.g. 5.0.3
). Press Enter
for the default. The release process will then create two commits - a commit to set the new version (5.0.3
), and a commit to set the version to the new snapshot (5.0.4-SNAPSHOT
)
Close the release in Sonatype to ensure the pushed Maven artifacts pass checks:
Build Promotion
> Staging Repositories
for your usernameOpen --> Closed --> Released
$ git log v5.0.2..v5.0.3 --no-merges
)uPortal
repo
Open a Pull Request on uPortal-start
to update uPortalVersion
to the new release.
Publish a new apereo/uPortal-demo Docker image and update the :latest
tag.
Prerequisites:
uPortal-start
$ cd {uPortal-start repo}
$ ./gradlew dockerBuildImageDemo
$ docker login
$ docker tag {version in format like 5.1.0} apereo/uportal-demo:latest
$ docker push apereo/uportal-demo:latest
For any non-snapshot release, email an announcement to uportal-dev
, uportal-user
, and jasig-announce
.
Have someone with access to the uPortal Twitter account announce the release.
(https://apereo.atlassian.net/wiki/spaces/UPC/pages/102336655/Cutting+a+uPortal+Release) (https://central.sonatype.org/pages/ossrh-guide.html) (https://docs.gradle.org/current/userguide/signing_plugin.html#sec:signatory_credentials)