Skip to end of metadata
Go to start of metadata

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

Compare with Current View Page History

« Previous Version 7 Next »

Two installers are built to support Windows users:

  1. The IdP installer is a thin shim on top of the standard installer

    1. It unpacks the distribution into ProgramData

    2. It collects some configuration information and captures it to properties files

    3. It runs the standard installer using Property Driven Installation

  2. The Jetty installer deploys three subsystems

    1. A specific version of Jetty

    2. Procrun (a windows executable which allows Java programs to be run as a “Service” (Windows-speak for a daemon)

    3. A version of jetty-base for Windows targeted 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 a 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 Installer

There are two parts to releasing the Jetty installer:

  • Updating the jetty-base tree to reflect any changes in jetty

  • Building and publishing the msi file

Updating Jetty Base

The following is for Jetty 12.x

For Jetty 12, we track the project version of jetty-base. The branch we build from is currently named 12-windows

Preparation

  • Clone and checkout the correct branch:

    git clone -b 12-windows git@git.shibboleth.net:java-idp-jetty-base
    cd java-idp-jetty-base
  • Merge (not rebase) forward to the latest changes on the 12branch

    git merge 12
  • Update the pom to reflect the jettty and procrun versions

<version>12.0.8.0-SNAPSHOT</version>

<properties>
  <jetty.version>12.0.8</jetty.version>
  <procrun.version>1.3.4</procrun.version>
...
  • Review the 12 version of src\main\resourcs\jetty-base\start.d\idp.ini and make any required changes to src\main\resourcs\jetty-base\start.d.dist\idp-system.ini

  • Commit the changes.

Building the Jetty 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 version 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 12-windows origin/12-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=12.0.8.0-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>12.0.8.3-SNAPSHOT</version>
<jetty.version>12.0.8</jetty.version>
<jetty.revision>0</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:

ssh -L 1581:127.0.0.1:1581 -N build.shibboleth.net -f
REM or use Putty
set JETTY_VERSION=12.0.8
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 12-windows
git push origin 12-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.

  • No labels