diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 34ef7f9fc..03c083792 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest] - java: [jdk17, jdk18, jdk21, graalvm] + java: [jdk17, jdk21, jdk22, graalvm] fail-fast: false steps: - name: Check out the repository @@ -19,9 +19,9 @@ jobs: - name: Test in Linux JDK 17 (LTS) if: matrix.os == 'ubuntu-latest' && matrix.java == 'jdk17' run: docker compose -f docker/Linux-JDK17/compose.yaml 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 + - name: Test in Linux JDK 22 (non-LTS) + if: matrix.os == 'ubuntu-latest' && matrix.java == 'jdk22' + run: docker compose -f docker/Linux-JDK22/compose.yaml 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.yaml up --build --exit-code-from cantaloupe @@ -31,9 +31,9 @@ jobs: - name: Test in Windows JDK 17 (LTS) if: matrix.os == 'windows-latest' && matrix.java == 'jdk17' run: docker compose -f docker/Windows-JDK17/compose.yaml 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 + - name: Test in Windows JDK 22 (non-LTS) + if: matrix.os == 'windows-latest' && matrix.java == 'jdk22' + run: docker compose -f docker/Windows-JDK22/compose.yaml 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.yaml up --build --exit-code-from cantaloupe diff --git a/docker/Linux-JDK18/Dockerfile b/docker/Linux-JDK22/Dockerfile similarity index 73% rename from docker/Linux-JDK18/Dockerfile rename to docker/Linux-JDK22/Dockerfile index d7f545d85..9843c332f 100644 --- a/docker/Linux-JDK18/Dockerfile +++ b/docker/Linux-JDK22/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:noble +FROM ubuntu:lunar ENV JAVA_HOME=/opt/jdk ENV PATH=$PATH:/opt/jdk/bin:/opt/maven/bin @@ -36,15 +36,10 @@ COPY docker/image_files/libjpeg-turbo/lib64 /opt/libjpeg-turbo/lib COPY dist/deps/Linux-x86-64/lib/* /usr/lib/ # Install various other dependencies that aren't in apt -# Install GrokProcessor dependencies -#RUN wget -q https://github.com/GrokImageCompression/grok/releases/download/v7.6.5/libgrokj2k1_7.6.5-1_amd64.deb \ -# && wget -q https://github.com/GrokImageCompression/grok/releases/download/v7.6.5/grokj2k-tools_7.6.5-1_amd64.deb \ -# && dpkg -i ./libgrokj2k1_7.6.5-1_amd64.deb \ -# && dpkg -i --ignore-depends=libjpeg62-turbo ./grokj2k-tools_7.6.5-1_amd64.deb \ # 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 \ +RUN wget -q https://download.java.net/java/GA/jdk22.0.2/c9ecb94cd31b495da20a27d4581645e8/9/GPL/openjdk-22.0.2_linux-x64_bin.tar.gz \ + && tar xfz openjdk-22.0.2_linux-x64_bin.tar.gz \ + && mv jdk-22.0.2 /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 \ diff --git a/docker/Linux-JDK18/docker-compose.yml b/docker/Linux-JDK22/compose.yaml similarity index 58% rename from docker/Linux-JDK18/docker-compose.yml rename to docker/Linux-JDK22/compose.yaml index 7b2572bc0..90fd3cf1f 100644 --- a/docker/Linux-JDK18/docker-compose.yml +++ b/docker/Linux-JDK22/compose.yaml @@ -1,14 +1,13 @@ # -# N.B.: docker-compose must be invoked from the project root directory: +# N.B.: docker compose must be invoked from the project root directory: # -# docker-compose -f path/to/docker-compose.yml up --exit-code-from cantaloupe +# docker compose -f path/to/compose.yaml up --exit-code-from cantaloupe # -version: '3' services: cantaloupe: build: context: ../../ - dockerfile: $PWD/docker/Linux-JDK18/Dockerfile + dockerfile: $PWD/docker/Linux-JDK22/Dockerfile minio: image: minio/minio environment: diff --git a/docker/Windows-JDK18/docker-compose.yml b/docker/Windows-JDK18/docker-compose.yml deleted file mode 100644 index 3c5812953..000000000 --- a/docker/Windows-JDK18/docker-compose.yml +++ /dev/null @@ -1,19 +0,0 @@ -# -# N.B.: docker-compose must be invoked from the project root directory: -# -# docker-compose -f path/to/docker-compose.yml up --exit-code-from cantaloupe -# -version: '3' -services: - cantaloupe: - build: - context: ../../ - dockerfile: docker/Windows-JDK18/Dockerfile - minio: - build: - context: ../../ - dockerfile: docker/Windows-JDK18/Dockerfile-minio - environment: - MINIO_ACCESS_KEY: MinioUser - MINIO_SECRET_KEY: OpenSesame - hostname: minio diff --git a/docker/Windows-JDK18/Dockerfile b/docker/Windows-JDK22/Dockerfile similarity index 95% rename from docker/Windows-JDK18/Dockerfile rename to docker/Windows-JDK22/Dockerfile index 4a8794818..8d7098814 100644 --- a/docker/Windows-JDK18/Dockerfile +++ b/docker/Windows-JDK22/Dockerfile @@ -11,7 +11,7 @@ RUN powershell -Command \ # Install various dependencies # TODO: openjpeg RUN choco install -y maven ffmpeg -RUN choco install -y openjdk --version=18.0.2 +RUN choco install -y openjdk --version=22.0.2 # Install TurboJpegProcessor dependencies TODO: libjpeg-turbo #RUN mkdir -p /opt/libjpeg-turbo/lib diff --git a/docker/Windows-JDK18/Dockerfile-minio b/docker/Windows-JDK22/Dockerfile-minio similarity index 100% rename from docker/Windows-JDK18/Dockerfile-minio rename to docker/Windows-JDK22/Dockerfile-minio diff --git a/docker/Windows-JDK22/compose.yaml b/docker/Windows-JDK22/compose.yaml new file mode 100644 index 000000000..7cb2575c6 --- /dev/null +++ b/docker/Windows-JDK22/compose.yaml @@ -0,0 +1,18 @@ +# +# N.B.: docker compose must be invoked from the project root directory: +# +# docker compose -f path/to/compose.yaml up --exit-code-from cantaloupe +# +services: + cantaloupe: + build: + context: ../../ + dockerfile: docker/Windows-JDK22/Dockerfile + minio: + build: + context: ../../ + dockerfile: docker/Windows-JDK22/Dockerfile-minio + environment: + MINIO_ACCESS_KEY: MinioUser + MINIO_SECRET_KEY: OpenSesame + hostname: minio diff --git a/src/main/java/edu/illinois/library/cantaloupe/source/S3Source.java b/src/main/java/edu/illinois/library/cantaloupe/source/S3Source.java index 67ac60fe3..a9680b0bb 100644 --- a/src/main/java/edu/illinois/library/cantaloupe/source/S3Source.java +++ b/src/main/java/edu/illinois/library/cantaloupe/source/S3Source.java @@ -326,6 +326,7 @@ private S3ObjectAttributes getObjectAttributes() throws IOException { .build()); objectAttributes = new S3ObjectAttributes(); objectAttributes.length = response.contentLength(); + objectAttributes.contentType = response.contentType(); objectAttributes.lastModified = response.lastModified(); } catch (NoSuchBucketException | NoSuchKeyException e) { throw new NoSuchFileException(info.toString());