Skip to content

Commit

Permalink
Test with OpenJDK 17 (LTS)
Browse files Browse the repository at this point in the history
  • Loading branch information
jcoyne committed Aug 15, 2024
1 parent b7acf8b commit 8e1263e
Show file tree
Hide file tree
Showing 6 changed files with 156 additions and 2 deletions.
9 changes: 7 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,17 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
java: [jdk11, jdk18, graalvm]
java: [jdk11, jdk17, jdk18, graalvm]
fail-fast: false
steps:
- name: Check out the repository
uses: actions/checkout@v2
- name: Test in Linux JDK 11
if: matrix.os == 'ubuntu-latest' && matrix.java == 'jdk11'
run: docker compose -f docker/Linux-JDK11/docker-compose.yml up --build --exit-code-from cantaloupe
- name: Test in Linux JDK 17 (LTS)
if: matrix.os == 'ubuntu-latest' && matrix.java == 'jdk17'
run: docker compose -f docker/Linux-JDK17/compose.yml up --build --exit-code-from cantaloupe
- 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
Expand All @@ -23,8 +26,10 @@ jobs:
- name: Test in Windows JDK 11
if: matrix.os == 'windows-latest' && matrix.java == 'jdk11'
run: docker compose -f docker/Windows-JDK11/docker-compose.yml up --build --exit-code-from cantaloupe
- name: Test in Windows JDK 17 (LTS)
if: matrix.os == 'windows-latest' && matrix.java == 'jdk17'
run: docker compose -f docker/Linux-JDK17/compose.yml up --build --exit-code-from cantaloupe
- 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
# TODO: Windows+GraalVM

72 changes: 72 additions & 0 deletions docker/Linux-JDK17/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
FROM ubuntu:lunar

ARG DEBIAN_FRONTEND=noninteractive
# ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
# ENV PATH=$PATH:/opt/jdk/bin:/opt/maven/bin

# 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-17-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/

# Install various other dependencies that aren't in apt
# Install OpenJDK
# RUN wget -q https://download.java.net/java/GA/jdk18/43f95e8614114aeaa8e8a5fcf20a682d/36/GPL/openjdk-18_linux-x64_bin.tar.gz \
# && tar xfz openjdk-18_linux-x64_bin.tar.gz \
# && mv jdk-18 /opt/jdk \
# # Install a newer Maven than the one in apt
# && wget -q https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz \
# && tar xfz apache-maven-3.8.8-bin.tar.gz \
# && mv apache-maven-3.8.8 /opt/maven \
# && rm apache-maven-3.8.8-bin.tar.gz

# 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 export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
# RUN export PATH=$PATH:$JAVA_HOME/bin
RUN echo "export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))" > ~/.bashrc
RUN echo $JAVA_HOME
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-JDK17/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-JDK17/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-JDK17/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=17.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-JDK17/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-JDK17/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-JDK17/Dockerfile
minio:
build:
context: ../../
dockerfile: docker/Windows-JDK17/Dockerfile-minio
environment:
MINIO_ACCESS_KEY: MinioUser
MINIO_SECRET_KEY: OpenSesame
hostname: minio

0 comments on commit 8e1263e

Please sign in to comment.