Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add openHAB 5 support #451

Merged
merged 2 commits into from
Dec 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,7 @@ The following Docker platforms are supported (automatically determined):

* `linux/amd64`
* `linux/arm64`
* `linux/arm/v7`

There is no `linux/arm/v7` Alpine image for openHAB 3 (or newer) because the required openjdk package is unavailable for this platform.
* `linux/arm/v7` (Debian openHAB 4 (or older), Alpine openHAB 2 (or older))

## Usage

Expand Down
4 changes: 2 additions & 2 deletions alpine/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ RUN apk update --no-cache && \
rm -rf /var/cache/apk/*

# 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"

# Install openHAB
Expand All @@ -73,7 +73,7 @@ RUN JAVA_HOME=$(find /usr/lib/jvm -maxdepth 1 -name "*jdk*" -type d) && \
# hadolint ignore=SC2016
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"; \
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 && \
wget -nv -O /tmp/openhab.zip "$url" && \
unzip -q /tmp/openhab.zip -d "${OPENHAB_HOME}" -x "*.bat" "*.ps1" "*.psm1" && \
Expand Down
2 changes: 1 addition & 1 deletion alpine/entrypoint
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ interactive=$(if test -t 0; then echo true; else echo false; fi)
set -eux -o pipefail ${EXTRA_SHELL_OPTS-}
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
if [ "${CRYPTO_POLICY}" = "unlimited" ]; then
Expand Down
14 changes: 7 additions & 7 deletions build
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,10 @@ resolve_version_tags() {
}

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 stable_3x=$(grep -E '^3\.[0-9]+\.[0-9]+$' <<< $VERSIONS | tail -n 1)
local stable_40x=$(grep -E '^4\.0\.[0-9]+$' <<< $VERSIONS | tail -n 1)
local stable_42x=$(grep -E '^4\.2\.[0-9]+$' <<< $VERSIONS | tail -n 1)
local stable_43x=$(grep -E '^4\.3\.[0-9]+$' <<< $VERSIONS | tail -n 1)

cat <<-EOI
Usage: ./build [OPTIONS]
Expand All @@ -67,17 +67,17 @@ Log in to the Docker Registry with "docker login" before building and pushing th

Examples:

Build the Debian and Alpine $snapshot_4x images:
Build the Debian and Alpine $snapshot_5x images:
./build

Build the Debian $snapshot_4x images:
Build the Debian $snapshot_5x images:
./build debian

Build the Alpine $milestone_4x images:
./build $milestone_4x alpine

Build the $stable_40x and $stable_3x Debian/Alpine images and push them to $(docker_repo):
./build $stable_40x $stable_3x --push
Build the $stable_43x and $stable_42x Debian/Alpine images and push them to $(docker_repo):
./build $stable_43x $stable_42x --push

Build the latest/snapshot Debian images by resolving the versions ("milestone" can also be resolved):
./build latest snapshot debian
Expand Down
14 changes: 11 additions & 3 deletions debian/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,15 @@

# Install basepackages. Versions are "pinned" by using a pinned base image.
# hadolint ignore=DL3008
RUN apt-get update && \

Check failure on line 44 in debian/Dockerfile

View workflow job for this annotation

GitHub Actions / latest-debian

SC2143 style: Use grep -q instead of comparing output with [ -n .. ].

Check failure on line 44 in debian/Dockerfile

View workflow job for this annotation

GitHub Actions / snapshot-debian

SC2143 style: Use grep -q instead of comparing output with [ -n .. ].

Check failure on line 44 in debian/Dockerfile

View workflow job for this annotation

GitHub Actions / latest-debian

SC2143 style: Use grep -q instead of comparing output with [ -n .. ].

Check failure on line 44 in debian/Dockerfile

View workflow job for this annotation

GitHub Actions / snapshot-debian

SC2143 style: Use grep -q instead of comparing output with [ -n .. ].
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 \
arping \
ca-certificates \
Expand All @@ -53,7 +61,7 @@
locales \
locales-all \
netbase \
openjdk-${JAVA_VERSION}-jre-headless \
"$openjdk_package" \
procps \
tini \
unzip \
Expand All @@ -66,7 +74,7 @@
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
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"

# Install openHAB
Expand All @@ -75,7 +83,7 @@
# hadolint ignore=SC2016
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"; \
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 && \
wget -nv -O /tmp/openhab.zip "$url" && \
unzip -q /tmp/openhab.zip -d "${OPENHAB_HOME}" -x "*.bat" "*.ps1" "*.psm1" && \
Expand Down
2 changes: 1 addition & 1 deletion debian/entrypoint
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ interactive=$(if test -t 0; then echo true; else echo false; fi)
set -eux -o pipefail ${EXTRA_SHELL_OPTS-}
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
if [ "${CRYPTO_POLICY}" = "unlimited" ]; then
Expand Down
13 changes: 7 additions & 6 deletions helper-functions
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,12 @@ platforms() {
local version="$1"
local base="$2"

if [ "$base" == "alpine" ]; 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
if [[ "$version" =~ ^4.*$ ]] && [ "$base" == "debian" ]; then
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
}

Expand Down Expand Up @@ -219,8 +220,8 @@ build() {

local java_version=""
case $openhab_version in
3.*) java_version="11";;
*) java_version="17";;
4.*) java_version="17";;
*) java_version="21";;
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"
Expand Down