Skip to content

Commit

Permalink
Add JDK21 (LTS) to the test matrix
Browse files Browse the repository at this point in the history
  • Loading branch information
jcoyne committed Aug 15, 2024
1 parent df668c3 commit 6eaf366
Show file tree
Hide file tree
Showing 6 changed files with 140 additions and 1 deletion.
8 changes: 7 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
java: [jdk11, jdk17, jdk18, graalvm]
java: [jdk11, jdk17, jdk18, jdk21, graalvm]
fail-fast: false
steps:
- name: Check out the repository
Expand All @@ -25,6 +25,9 @@ jobs:
- name: Test in Linux JDK 18
if: matrix.os == 'ubuntu-latest' && matrix.java == 'jdk18'
run: docker compose -f docker/Linux-JDK18/docker-compose.yml up --build --exit-code-from cantaloupe
- name: Test in Linux JDK 21 (LTS)
if: matrix.os == 'ubuntu-latest' && matrix.java == 'jdk21'
run: docker compose -f docker/Linux-JDK21/compose.yml up --build --exit-code-from cantaloupe
- name: Test in Linux GraalVM
if: matrix.os == 'ubuntu-latest' && matrix.java == 'graalvm'
run: docker compose -f docker/Linux-GraalVM20/docker-compose.yml up --build --exit-code-from cantaloupe
Expand All @@ -37,4 +40,7 @@ jobs:
- name: Test in Windows JDK 18
if: matrix.os == 'windows-latest' && matrix.java == 'jdk18'
run: docker compose -f docker/Windows-JDK18/docker-compose.yml up --build --exit-code-from cantaloupe
- name: Test in Windows JDK 21 (LTS)
if: matrix.os == 'windows-latest' && matrix.java == 'jdk21'
run: docker compose -f docker/Windows-JDK21/compose.yml up --build --exit-code-from cantaloupe
# TODO: Windows+GraalVM
56 changes: 56 additions & 0 deletions docker/Linux-JDK21/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
FROM ubuntu:lunar

ARG DEBIAN_FRONTEND=noninteractive

# Install various dependencies:
# * ca-certificates is needed by wget
# * ffmpeg is needed by FfmpegProcessor
# * wget download stuffs in this dockerfile
# * libopenjp2-tools is needed by OpenJpegProcessor
# * All the rest is needed by GrokProcessor
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
ffmpeg \
wget \
libopenjp2-tools \
liblcms2-dev \
libpng-dev \
libzstd-dev \
libtiff-dev \
libjpeg-dev \
zlib1g-dev \
libwebp-dev \
libimage-exiftool-perl \
libgrokj2k1 \
grokj2k-tools \
adduser \
openjdk-21-jdk \
maven \
&& rm -rf /var/lib/apt/lists/*

# Install TurboJpegProcessor dependencies
RUN mkdir -p /opt/libjpeg-turbo/lib
COPY docker/Linux-JDK11/image_files/libjpeg-turbo/lib64 /opt/libjpeg-turbo/lib

# Install KakaduNativeProcessor dependencies
COPY dist/deps/Linux-x86-64/lib/* /usr/lib/

# A non-root user is needed for some FilesystemSourceTest tests to work.
ARG user=cantaloupe
ARG home=/home/$user
RUN adduser --home $home $user
RUN chown -R $user $home
USER $user
WORKDIR $home

# Install application dependencies
COPY ./pom.xml pom.xml

RUN echo "export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))" > ~/.bashrc
RUN mvn --quiet dependency:resolve

# Copy the code
COPY --chown=cantaloupe docker/Linux-JDK11/image_files/test.properties test.properties
COPY --chown=cantaloupe ./src src

ENTRYPOINT mvn --batch-mode test -Pfreedeps
20 changes: 20 additions & 0 deletions docker/Linux-JDK21/compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#
# N.B.: docker compose must be invoked from the project root directory:
#
# docker compose -f path/to/compose.yml up --exit-code-from cantaloupe
#
services:
cantaloupe:
build:
context: ../../
dockerfile: $PWD/docker/Linux-JDK21/Dockerfile
minio:
image: minio/minio
environment:
MINIO_ACCESS_KEY: MinioUser
MINIO_SECRET_KEY: OpenSesame
hostname: minio
command: server /data
redis:
image: redis:alpine
hostname: redis
29 changes: 29 additions & 0 deletions docker/Windows-JDK21/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
FROM mcr.microsoft.com/windows/servercore:ltsc2022

ENV chocolateyUseWindowsCompression false

# Install the Chocolatey package manager, which makes it easier to install
# dependencies.
RUN powershell -Command \
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1')); \
choco feature disable --name showDownloadProgress

# Install various dependencies
# TODO: openjpeg
RUN choco install -y maven ffmpeg
RUN choco install -y openjdk --version=21.0.2

# Install TurboJpegProcessor dependencies TODO: libjpeg-turbo
#RUN mkdir -p /opt/libjpeg-turbo/lib
#COPY docker/Windows10-JDK11/image_files/libjpeg-turbo/lib64 c:\windows\system32

# Install KakaduNativeProcessor dependencies
COPY dist/deps/Windows-x86-64/lib/* c:/Windows/System32/

# Install application dependencies
COPY pom.xml pom.xml
RUN mvn dependency:resolve

# Copy the code
COPY docker/Windows-JDK11/image_files/test.properties test.properties
COPY src src
10 changes: 10 additions & 0 deletions docker/Windows-JDK21/Dockerfile-minio
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
FROM mcr.microsoft.com/windows/servercore:ltsc2022

ENV MINIO_ACCESS_KEY=MinioUser
ENV MINIO_SECRET_KEY=OpenSesame

RUN curl.exe --output minio.exe --url https://dl.min.io/server/minio/release/windows-amd64/minio.exe

RUN mkdir c:\data

CMD minio.exe server --address=:9000 c:\data
18 changes: 18 additions & 0 deletions docker/Windows-JDK21/compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#
# N.B.: docker-compose must be invoked from the project root directory:
#
# docker compose -f path/to/compose.yml up --exit-code-from cantaloupe
#
services:
cantaloupe:
build:
context: ../../
dockerfile: docker/Windows-JDK21/Dockerfile
minio:
build:
context: ../../
dockerfile: docker/Windows-JDK21/Dockerfile-minio
environment:
MINIO_ACCESS_KEY: MinioUser
MINIO_SECRET_KEY: OpenSesame
hostname: minio

0 comments on commit 6eaf366

Please sign in to comment.