Add openHAB 5 support (#451)

* Use Java 21 with openHAB 5
* Remove linux/arm/v7 support
* Update versions in build help
* Install Temurin when Debian does not have an installation package in its repositories for an OpenJDK version

Signed-off-by: Wouter Born <github@maindrain.net>
pull/453/head
Wouter Born 2024-12-16 23:02:23 +01:00 committed by GitHub
parent 2b10850924
commit a7da1746ed
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 30 additions and 23 deletions

View File

@ -89,9 +89,7 @@ The following Docker platforms are supported (automatically determined):
* `linux/amd64` * `linux/amd64`
* `linux/arm64` * `linux/arm64`
* `linux/arm/v7` * `linux/arm/v7` (Debian openHAB 4 (or older), Alpine openHAB 2 (or older))
There is no `linux/arm/v7` Alpine image for openHAB 3 (or newer) because the required openjdk package is unavailable for this platform.
## Usage ## Usage

View File

@ -64,7 +64,7 @@ RUN apk update --no-cache && \
rm -rf /var/cache/apk/* rm -rf /var/cache/apk/*
# Limit JDK crypto policy by default to comply with local laws which may prohibit use of unlimited strength cryptography # Limit JDK crypto policy by default to comply with local laws which may prohibit use of unlimited strength cryptography
RUN JAVA_HOME=$(find /usr/lib/jvm -maxdepth 1 -name "*jdk*" -type d) && \ RUN JAVA_HOME=$(find /usr/lib/jvm -mindepth 1 -maxdepth 1 -type d) && \
sed -i 's/^crypto.policy=unlimited/crypto.policy=limited/' "${JAVA_HOME}/conf/security/java.security" sed -i 's/^crypto.policy=unlimited/crypto.policy=limited/' "${JAVA_HOME}/conf/security/java.security"
# Install openHAB # Install openHAB
@ -73,7 +73,7 @@ RUN JAVA_HOME=$(find /usr/lib/jvm -maxdepth 1 -name "*jdk*" -type d) && \
# hadolint ignore=SC2016 # hadolint ignore=SC2016
RUN version="$(echo $OPENHAB_VERSION | sed 's/snapshot/SNAPSHOT/g')" && \ RUN version="$(echo $OPENHAB_VERSION | sed 's/snapshot/SNAPSHOT/g')" && \
if [ $(echo $version | grep -E '^.+\.(M|RC).+$') ]; then url="https://openhab.jfrog.io/openhab/libs-milestone-local/org/openhab/distro/openhab/${version}/openhab-${version}.zip"; \ if [ $(echo $version | grep -E '^.+\.(M|RC).+$') ]; then url="https://openhab.jfrog.io/openhab/libs-milestone-local/org/openhab/distro/openhab/${version}/openhab-${version}.zip"; \
elif [ $(echo $version | grep -E '^4\..+-SNAPSHOT$') ]; then url="https://ci.openhab.org/job/openHAB-Distribution/lastSuccessfulBuild/artifact/distributions/openhab/target/openhab-${version}.zip"; \ elif [ $(echo $version | grep -E '^5\..+-SNAPSHOT$') ]; then url="https://ci.openhab.org/job/openHAB-Distribution/lastSuccessfulBuild/artifact/distributions/openhab/target/openhab-${version}.zip"; \
else url="https://openhab.jfrog.io/openhab/libs-release/org/openhab/distro/openhab/${version}/openhab-${version}.zip"; fi && \ else url="https://openhab.jfrog.io/openhab/libs-release/org/openhab/distro/openhab/${version}/openhab-${version}.zip"; fi && \
wget -nv -O /tmp/openhab.zip "$url" && \ wget -nv -O /tmp/openhab.zip "$url" && \
unzip -q /tmp/openhab.zip -d "${OPENHAB_HOME}" -x "*.bat" "*.ps1" "*.psm1" && \ unzip -q /tmp/openhab.zip -d "${OPENHAB_HOME}" -x "*.bat" "*.ps1" "*.psm1" && \

View File

@ -4,7 +4,7 @@ interactive=$(if test -t 0; then echo true; else echo false; fi)
set -eux -o pipefail ${EXTRA_SHELL_OPTS-} set -eux -o pipefail ${EXTRA_SHELL_OPTS-}
IFS=$'\n\t' IFS=$'\n\t'
export JAVA_HOME=$(find /usr/lib/jvm -maxdepth 1 -name "*jdk*" -type d) export JAVA_HOME=$(find /usr/lib/jvm -mindepth 1 -maxdepth 1 -type d)
# Configure Java unlimited strength cryptography # Configure Java unlimited strength cryptography
if [ "${CRYPTO_POLICY}" = "unlimited" ]; then if [ "${CRYPTO_POLICY}" = "unlimited" ]; then

14
build
View File

@ -50,10 +50,10 @@ resolve_version_tags() {
} }
print_help() { print_help() {
local snapshot_4x=$(grep -E '^4\.[0-9]+\.[0-9]+-snapshot$' <<< $VERSIONS | tail -n 1) local snapshot_5x=$(grep -E '^5\.[0-9]+\.[0-9]+-snapshot$' <<< $VERSIONS | tail -n 1)
local milestone_4x=$(grep -E '^4\.[0-9]+\.[0-9]+.(M[0-9]+)$' <<< $VERSIONS | tail -n 1) local milestone_4x=$(grep -E '^4\.[0-9]+\.[0-9]+.(M[0-9]+)$' <<< $VERSIONS | tail -n 1)
local stable_3x=$(grep -E '^3\.[0-9]+\.[0-9]+$' <<< $VERSIONS | tail -n 1) local stable_42x=$(grep -E '^4\.2\.[0-9]+$' <<< $VERSIONS | tail -n 1)
local stable_40x=$(grep -E '^4\.0\.[0-9]+$' <<< $VERSIONS | tail -n 1) local stable_43x=$(grep -E '^4\.3\.[0-9]+$' <<< $VERSIONS | tail -n 1)
cat <<-EOI cat <<-EOI
Usage: ./build [OPTIONS] Usage: ./build [OPTIONS]
@ -67,17 +67,17 @@ Log in to the Docker Registry with "docker login" before building and pushing th
Examples: Examples:
Build the Debian and Alpine $snapshot_4x images: Build the Debian and Alpine $snapshot_5x images:
./build ./build
Build the Debian $snapshot_4x images: Build the Debian $snapshot_5x images:
./build debian ./build debian
Build the Alpine $milestone_4x images: Build the Alpine $milestone_4x images:
./build $milestone_4x alpine ./build $milestone_4x alpine
Build the $stable_40x and $stable_3x Debian/Alpine images and push them to $(docker_repo): Build the $stable_43x and $stable_42x Debian/Alpine images and push them to $(docker_repo):
./build $stable_40x $stable_3x --push ./build $stable_43x $stable_42x --push
Build the latest/snapshot Debian images by resolving the versions ("milestone" can also be resolved): Build the latest/snapshot Debian images by resolving the versions ("milestone" can also be resolved):
./build latest snapshot debian ./build latest snapshot debian

14
debian/Dockerfile vendored
View File

@ -42,6 +42,14 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# Install basepackages. Versions are "pinned" by using a pinned base image. # Install basepackages. Versions are "pinned" by using a pinned base image.
# hadolint ignore=DL3008 # hadolint ignore=DL3008
RUN apt-get update && \ RUN apt-get update && \
openjdk_package="openjdk-${JAVA_VERSION}-jre-headless" && \
apt-get install --no-install-recommends -y --dry-run "$openjdk_package" >/dev/null || openjdk_package="temurin-${JAVA_VERSION}-jre" && \
if [ $(echo "$openjdk_package" | grep -E '^temurin-.+$') ]; then \
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y wget ca-certificates && \
wget -nv -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | tee /usr/share/keyrings/adoptium.asc && \
echo "deb [signed-by=/usr/share/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list && \
apt-get update; \
fi && \
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \ DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
arping \ arping \
ca-certificates \ ca-certificates \
@ -53,7 +61,7 @@ RUN apt-get update && \
locales \ locales \
locales-all \ locales-all \
netbase \ netbase \
openjdk-${JAVA_VERSION}-jre-headless \ "$openjdk_package" \
procps \ procps \
tini \ tini \
unzip \ unzip \
@ -66,7 +74,7 @@ RUN apt-get update && \
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
# Limit JDK crypto policy by default to comply with local laws which may prohibit use of unlimited strength cryptography # Limit JDK crypto policy by default to comply with local laws which may prohibit use of unlimited strength cryptography
RUN JAVA_HOME=$(find /usr/lib/jvm -maxdepth 1 -name "*jdk*" -type d) && \ RUN JAVA_HOME=$(find /usr/lib/jvm -mindepth 1 -maxdepth 1 -type d) && \
sed -i 's/^crypto.policy=unlimited/crypto.policy=limited/' "${JAVA_HOME}/conf/security/java.security" sed -i 's/^crypto.policy=unlimited/crypto.policy=limited/' "${JAVA_HOME}/conf/security/java.security"
# Install openHAB # Install openHAB
@ -75,7 +83,7 @@ RUN JAVA_HOME=$(find /usr/lib/jvm -maxdepth 1 -name "*jdk*" -type d) && \
# hadolint ignore=SC2016 # hadolint ignore=SC2016
RUN version="$(echo $OPENHAB_VERSION | sed 's/snapshot/SNAPSHOT/g')" && \ RUN version="$(echo $OPENHAB_VERSION | sed 's/snapshot/SNAPSHOT/g')" && \
if [ $(echo $version | grep -E '^.+\.(M|RC).+$') ]; then url="https://openhab.jfrog.io/openhab/libs-milestone-local/org/openhab/distro/openhab/${version}/openhab-${version}.zip"; \ if [ $(echo $version | grep -E '^.+\.(M|RC).+$') ]; then url="https://openhab.jfrog.io/openhab/libs-milestone-local/org/openhab/distro/openhab/${version}/openhab-${version}.zip"; \
elif [ $(echo $version | grep -E '^4\..+-SNAPSHOT$') ]; then url="https://ci.openhab.org/job/openHAB-Distribution/lastSuccessfulBuild/artifact/distributions/openhab/target/openhab-${version}.zip"; \ elif [ $(echo $version | grep -E '^5\..+-SNAPSHOT$') ]; then url="https://ci.openhab.org/job/openHAB-Distribution/lastSuccessfulBuild/artifact/distributions/openhab/target/openhab-${version}.zip"; \
else url="https://openhab.jfrog.io/openhab/libs-release/org/openhab/distro/openhab/${version}/openhab-${version}.zip"; fi && \ else url="https://openhab.jfrog.io/openhab/libs-release/org/openhab/distro/openhab/${version}/openhab-${version}.zip"; fi && \
wget -nv -O /tmp/openhab.zip "$url" && \ wget -nv -O /tmp/openhab.zip "$url" && \
unzip -q /tmp/openhab.zip -d "${OPENHAB_HOME}" -x "*.bat" "*.ps1" "*.psm1" && \ unzip -q /tmp/openhab.zip -d "${OPENHAB_HOME}" -x "*.bat" "*.ps1" "*.psm1" && \

2
debian/entrypoint vendored
View File

@ -4,7 +4,7 @@ interactive=$(if test -t 0; then echo true; else echo false; fi)
set -eux -o pipefail ${EXTRA_SHELL_OPTS-} set -eux -o pipefail ${EXTRA_SHELL_OPTS-}
IFS=$'\n\t' IFS=$'\n\t'
export JAVA_HOME=$(find /usr/lib/jvm -maxdepth 1 -name "*jdk*" -type d) export JAVA_HOME=$(find /usr/lib/jvm -mindepth 1 -maxdepth 1 -type d)
# Configure Java unlimited strength cryptography # Configure Java unlimited strength cryptography
if [ "${CRYPTO_POLICY}" = "unlimited" ]; then if [ "${CRYPTO_POLICY}" = "unlimited" ]; then

View File

@ -36,11 +36,12 @@ platforms() {
local version="$1" local version="$1"
local base="$2" local base="$2"
if [ "$base" == "alpine" ]; then if [[ "$version" =~ ^4.*$ ]] && [ "$base" == "debian" ]; then
# There is no linux/arm/v7 Alpine image for openHAB 3 (or newer) because the required openjdk package is unavailable for this architecture
echo "linux/amd64,linux/arm64"
else
echo "linux/amd64,linux/arm64,linux/arm/v7" echo "linux/amd64,linux/arm64,linux/arm/v7"
else
# There are no linux/arm/v7 images for openHAB 5 (or newer) because this platform is no longer supported.
# There are no linux/arm/v7 Alpine images for openHAB 3 (or newer) because the required openjdk package is unavailable for this platform.
echo "linux/amd64,linux/arm64"
fi fi
} }
@ -219,8 +220,8 @@ build() {
local java_version="" local java_version=""
case $openhab_version in case $openhab_version in
3.*) java_version="11";; 4.*) java_version="17";;
*) java_version="17";; *) java_version="21";;
esac esac
local build_arg_options="--build-arg BUILD_DATE=$(date +"%Y-%m-%dT%H:%M:%SZ") --build-arg VCS_REF=$(git rev-parse HEAD) --build-arg JAVA_VERSION=$java_version --build-arg OPENHAB_VERSION=$openhab_version" local build_arg_options="--build-arg BUILD_DATE=$(date +"%Y-%m-%dT%H:%M:%SZ") --build-arg VCS_REF=$(git rev-parse HEAD) --build-arg JAVA_VERSION=$java_version --build-arg OPENHAB_VERSION=$openhab_version"