Two windows installers are built to support Windows users.
The IDP installer is a thin shim on top of the standard installer
It unpacks the distribution into
ProgramData
It collects some configuration information and captures it to properties files
In runs the standard installer using Property Driven Installation
The Jetty installed deploys three subsystems
A specific version of Jetty
Procrun (a windows executable which allows java programs to be run as a “Service” (Windows speak for a daemon)
A version of jetty base for Windows targetted at the IdP installation
Both of these can be build using WiX4 which in turn is invoked as part of a standard maven run (on suitable configured) Windows Machine. These pages describe how to build a release of these installers
Prerequisites (one-off)
The Windows machine you will use to do the build Installation box must have the following installed
Java JDK version 17 or later
Ensure that
JAVA_HOME
is set correctly
Maven
Git
A recent version of the .NET SDK
An appropriate
settings.xml
Building a Release of the IdP installer
The install requires the idp-distribution zip file for the release and so the build can be done any time after it is available in Nexus.
Checkout the Release tag
git checkout "tag"
Check the msi Version
The msi.version
property is the version that the msi file will carry. It is separate from the project.version
because
It must be strictly numeric
It has a final digit (to allow multiple installer releases for the same IdP release). We usually use ‘99’ to mean “SNAPSHOT”.
At the time of release the version should match the project version with an appropriate 4th digit. If you need to edit it you will need to push a tag for the changed file.
Build the msi file
This is done using maven, on an appropriate windows machine in the idp-msi file
mvn clean install -f idp-msi
Sign and deploy the msi file
Use the maven sign-and-deploy plugin. The following is an untested example
ssh -L 1581:127.0.0.1:1581 -N build.shibboleth.net -f REM or use Putty set VERSION=5.1.2 set NEXUS_URL=http://127.0.0.1:1581/nexus/content/repositories/releases set REPO_ID=release SET CL1=mvn -Dmaven.repo.local=%MAVEN_REPO% gpg:sign-and-deploy-file -Durl=%NEXUS_URL% -DrepositoryId=%REPO_ID% SET CL2=-Dfile=shibboleth-identity-provider-%VERSION%-x64.msi -DgroupId=net.shibboleth.idp -DartifactId=idp-msi SET CL3=-Dversion=%VERSION% -DgeneratePom=false -Dclassifier=msi Set SIGN_AND_DEPLOY=%CL1% %CL2% %CL3% %SIGN_AND_DEPLOY%
If you are deploying a version with a non zero version (e.g. 5.1.2.1) you will need to rename the msi file by hand
Building a Release of the Jetty Base installer
There are two parts to releasing the jetty-base installer
Updating the jetty-base to reflect any changes in jetty
Building and publishing the msi file
Updating Jetty Base
The following is for Jetty12
For jetty-12 we track the project version of jetty base. The Branch we build from is currently named dev/IDP-2285
Preparation
Clone and checkout the correct branch
git clone -b dev/IDP-2285 git@git.shibboleth.net:java-idp-jetty-base cd java-idp-jetty-base
Merge (not rebase) forward to the latest changes on the
12
branchget merge 12
Update the pom to reflect the jettty and procrun versions
<version>12.0.9.0-SNAPSHOT</version> <properties> <jetty.version>12.0.9</jetty.version> <procrun.version>1.3.4</procrun.version>
Commit the changes
Building the Jetty-Base Installer
First set the revision (4th digit) of the installer version in the property file. This is usually 0, but if another version of the installer for the same jetty versio is required it should be adjusted
<jetty.revision>0</jetty.revision>
Checkout and Test Build
cd %GIT_REPO% git clone git@git.shibboleth.net:java-idp-jetty-base cd java-idp-jetty-base git checkout -b 11-windows origin/11-windows mvn clean install -Dmaven.repo.local=%MAVEN_REPO%
Smoke Test the installer.
Perform the release
Edit pom.xml to remove SNAPSHOT from versions.
Tag
SET JETTY_TAG=11.0.18.3-WINDOWS git add -A git commit -m "Update files to be tagged for release" git tag -s -m "Tag %JETTY_TAG%" %JETTY_TAG%
Edit pom.xml to change the the version, adding -SNAPSHOT Make sure that there is alignment between the version and the version properties
<version>11.0.18.3-SNAPSHOT</version> <jetty.version>11.0.18</jetty.version> <jetty.revision>3</jetty.revision>
Commit
git add -A git commit -m "Bump version after release"
Build the release version
git checkout %JETTY_TAG% mvn -Dmaven.repo.local=%MAVEN_REPO% clean install
Commit the work
Push to nexus using the gpg:sign-and-deploy-file
plugin. For
ssh -L 1581:127.0.0.1:1581 -N build.shibboleth.net -f REM or use Putty set JETTY_VERSION=11.0.20 set JETTY_REVISION=0 set VERSION=%JETTY_VERSION%.%JETTY_REVISION% set NEXUS_URL=http://127.0.0.1:1581/nexus/content/repositories/releases set REPO_ID=release SET CL1=mvn -Dmaven.repo.local=%MAVEN_REPO% gpg:sign-and-deploy-file -Durl=%NEXUS_URL% -DrepositoryId=%REPO_ID% SET CL2=-Dfile=target/shibboleth-jetty-base-x64-%VERSION%.msi -DgroupId=net.shibboleth.idp -DartifactId=idp-jetty-base-windows SET CL3=-Dversion=%VERSION% -DgeneratePom=false -Dclassifier=msi Set SIGN_AND_DEPLOY=%CL1% %CL2% %CL3% %SIGN_AND_DEPLOY%
Push changes to git
git checkout 11-windows git push origin 11-windows git push origin %JETTY_TAG%
There are two batch files src\main\bin\setrepos.bat
and src\main\bin\setvariables.bat
which set things up.