From c23898d81ccaaa38c3dd6be4a936c147f9d8792f Mon Sep 17 00:00:00 2001 From: Olya Gupalo Date: Wed, 18 Dec 2024 19:17:10 +0200 Subject: [PATCH] Move tiny-java-containers under native-image/containerize category --- ...s.yml => containerize-tiny-java-containers.yml} | 13 ++++++++----- .../containerize/tiny-java-containers}/README.md | 10 ++++------ .../containerize/tiny-java-containers}/clean.sh | 0 .../tiny-java-containers}/helloworld/Dockerfile | 0 .../tiny-java-containers}/helloworld/Hello.java | 0 .../tiny-java-containers}/helloworld/build.sh | 0 .../tiny-java-containers}/helloworld/clean.sh | 0 .../tiny-java-containers}/images/keyboard.jpg | Bin .../images/linkingoptions.png | Bin .../tiny-java-containers}/images/youtube.png | Bin .../jwebserver/Dockerfile.alpine.static | 0 .../jwebserver/Dockerfile.distroless-base.mostly | 0 .../Dockerfile.distroless-java-base.dynamic | 0 .../Dockerfile.distroless-java-base.jlink | 0 .../jwebserver/Dockerfile.distroless-static.static | 0 .../jwebserver/Dockerfile.jvm-debian-slim | 0 .../jwebserver/Dockerfile.jvm-distroless-java | 0 .../jwebserver/Dockerfile.jvm-eclipse-temurin | 0 .../jwebserver/Dockerfile.scratch.static | 0 .../jwebserver/Dockerfile.scratch.static-upx | 0 .../tiny-java-containers}/jwebserver/build-all.sh | 0 .../jwebserver/build-dynamic.sh | 0 .../jwebserver/build-jlink.sh | 0 .../tiny-java-containers}/jwebserver/build-jvm.sh | 0 .../jwebserver/build-mostly.sh | 0 .../jwebserver/build-static.sh | 0 .../tiny-java-containers}/jwebserver/clean.sh | 0 .../tiny-java-containers}/jwebserver/index.html | 0 28 files changed, 12 insertions(+), 11 deletions(-) rename .github/workflows/{tiny-java-containers.yml => containerize-tiny-java-containers.yml} (90%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/README.md (97%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/clean.sh (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/helloworld/Dockerfile (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/helloworld/Hello.java (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/helloworld/build.sh (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/helloworld/clean.sh (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/images/keyboard.jpg (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/images/linkingoptions.png (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/images/youtube.png (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/Dockerfile.alpine.static (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/Dockerfile.distroless-base.mostly (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/Dockerfile.distroless-java-base.dynamic (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/Dockerfile.distroless-java-base.jlink (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/Dockerfile.distroless-static.static (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/Dockerfile.jvm-debian-slim (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/Dockerfile.jvm-distroless-java (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/Dockerfile.jvm-eclipse-temurin (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/Dockerfile.scratch.static (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/Dockerfile.scratch.static-upx (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/build-all.sh (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/build-dynamic.sh (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/build-jlink.sh (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/build-jvm.sh (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/build-mostly.sh (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/build-static.sh (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/clean.sh (100%) rename {tiny-java-containers => native-image/containerize/tiny-java-containers}/jwebserver/index.html (100%) diff --git a/.github/workflows/tiny-java-containers.yml b/.github/workflows/containerize-tiny-java-containers.yml similarity index 90% rename from .github/workflows/tiny-java-containers.yml rename to .github/workflows/containerize-tiny-java-containers.yml index 362557733..dbd3b7a28 100644 --- a/.github/workflows/tiny-java-containers.yml +++ b/.github/workflows/containerize-tiny-java-containers.yml @@ -1,9 +1,9 @@ -name: tiny-java-containers +name: native-image/containerize/tiny-java-containers on: push: paths: - - 'tiny-java-containers/**' - - '.github/workflows/tiny-java-containers.yml' + - 'native-image/containerize/tiny-java-containers/**' + - '.github/workflows/containerize-tiny-java-containers.yml' schedule: - cron: "0 0 1 * *" # run every month workflow_dispatch: @@ -11,14 +11,17 @@ permissions: contents: read jobs: run: - name: Run 'tiny-java-containers' + name: Run 'native-image/containerize/tiny-java-containers' runs-on: ubuntu-20.04 # Docker has changed its behavior on Ubuntu 22.04 timeout-minutes: 20 + strategy: + matrix: + java-version: ['21', '24-ea'] steps: - uses: actions/checkout@v4 - uses: graalvm/setup-graalvm@v1 with: - java-version: '21' + java-version: ${{ matrix.java-version }} distribution: 'graalvm' github-token: ${{ secrets.GITHUB_TOKEN }} - name: Run 'tiny-java-containers' diff --git a/tiny-java-containers/README.md b/native-image/containerize/tiny-java-containers/README.md similarity index 97% rename from tiny-java-containers/README.md rename to native-image/containerize/tiny-java-containers/README.md index f92a5f54c..44b038d39 100644 --- a/tiny-java-containers/README.md +++ b/native-image/containerize/tiny-java-containers/README.md @@ -9,7 +9,7 @@ shared libraries, an executable has to be fully statically linked with all needed libraries and resources. To support static linking of `libc`, GraalVM Native Image supports using the -"lightweight, fast, simple, free" [musl](https://musl.libc.org/) libc +"lightweight, fast, simple, free" [musl](https://musl.libc.org/) `libc` implementation. You can watch a [Devoxx 2022](https://devoxx.be/) session that walks through @@ -176,15 +176,13 @@ or ![](images/keyboard.jpg) `docker run --init --rm -p8000:8000 jwebserver:scratch.static-upx` Using `curl` or your favourite tool you can hit `http://localhost:8000` to fetch -the index.html file. +the _index.html_ file. ## Wrapping Up A fully functional, albeit minimal, Java "microservice" was compiled into a native Linux executable and packaged into Distroless, Alpine, and `scratch`-based container images thanks to GraalVM Native Image's support for -various linking options including fully static linking with the `musl` libc. +various linking options including fully static linking with `musl libc`. -To learn more about linking options check out [Static and Mostly Static -Images](https://www.graalvm.org/latest/reference-manual/native-image/guides/build-static-executables/) -in the GraalVM docs. \ No newline at end of file +To learn more about linking options check out [Static and Mostly Static Images](https://www.graalvm.org/latest/reference-manual/native-image/guides/build-static-executables/) in the GraalVM docs. \ No newline at end of file diff --git a/tiny-java-containers/clean.sh b/native-image/containerize/tiny-java-containers/clean.sh similarity index 100% rename from tiny-java-containers/clean.sh rename to native-image/containerize/tiny-java-containers/clean.sh diff --git a/tiny-java-containers/helloworld/Dockerfile b/native-image/containerize/tiny-java-containers/helloworld/Dockerfile similarity index 100% rename from tiny-java-containers/helloworld/Dockerfile rename to native-image/containerize/tiny-java-containers/helloworld/Dockerfile diff --git a/tiny-java-containers/helloworld/Hello.java b/native-image/containerize/tiny-java-containers/helloworld/Hello.java similarity index 100% rename from tiny-java-containers/helloworld/Hello.java rename to native-image/containerize/tiny-java-containers/helloworld/Hello.java diff --git a/tiny-java-containers/helloworld/build.sh b/native-image/containerize/tiny-java-containers/helloworld/build.sh similarity index 100% rename from tiny-java-containers/helloworld/build.sh rename to native-image/containerize/tiny-java-containers/helloworld/build.sh diff --git a/tiny-java-containers/helloworld/clean.sh b/native-image/containerize/tiny-java-containers/helloworld/clean.sh similarity index 100% rename from tiny-java-containers/helloworld/clean.sh rename to native-image/containerize/tiny-java-containers/helloworld/clean.sh diff --git a/tiny-java-containers/images/keyboard.jpg b/native-image/containerize/tiny-java-containers/images/keyboard.jpg similarity index 100% rename from tiny-java-containers/images/keyboard.jpg rename to native-image/containerize/tiny-java-containers/images/keyboard.jpg diff --git a/tiny-java-containers/images/linkingoptions.png b/native-image/containerize/tiny-java-containers/images/linkingoptions.png similarity index 100% rename from tiny-java-containers/images/linkingoptions.png rename to native-image/containerize/tiny-java-containers/images/linkingoptions.png diff --git a/tiny-java-containers/images/youtube.png b/native-image/containerize/tiny-java-containers/images/youtube.png similarity index 100% rename from tiny-java-containers/images/youtube.png rename to native-image/containerize/tiny-java-containers/images/youtube.png diff --git a/tiny-java-containers/jwebserver/Dockerfile.alpine.static b/native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.alpine.static similarity index 100% rename from tiny-java-containers/jwebserver/Dockerfile.alpine.static rename to native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.alpine.static diff --git a/tiny-java-containers/jwebserver/Dockerfile.distroless-base.mostly b/native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.distroless-base.mostly similarity index 100% rename from tiny-java-containers/jwebserver/Dockerfile.distroless-base.mostly rename to native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.distroless-base.mostly diff --git a/tiny-java-containers/jwebserver/Dockerfile.distroless-java-base.dynamic b/native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.distroless-java-base.dynamic similarity index 100% rename from tiny-java-containers/jwebserver/Dockerfile.distroless-java-base.dynamic rename to native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.distroless-java-base.dynamic diff --git a/tiny-java-containers/jwebserver/Dockerfile.distroless-java-base.jlink b/native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.distroless-java-base.jlink similarity index 100% rename from tiny-java-containers/jwebserver/Dockerfile.distroless-java-base.jlink rename to native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.distroless-java-base.jlink diff --git a/tiny-java-containers/jwebserver/Dockerfile.distroless-static.static b/native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.distroless-static.static similarity index 100% rename from tiny-java-containers/jwebserver/Dockerfile.distroless-static.static rename to native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.distroless-static.static diff --git a/tiny-java-containers/jwebserver/Dockerfile.jvm-debian-slim b/native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.jvm-debian-slim similarity index 100% rename from tiny-java-containers/jwebserver/Dockerfile.jvm-debian-slim rename to native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.jvm-debian-slim diff --git a/tiny-java-containers/jwebserver/Dockerfile.jvm-distroless-java b/native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.jvm-distroless-java similarity index 100% rename from tiny-java-containers/jwebserver/Dockerfile.jvm-distroless-java rename to native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.jvm-distroless-java diff --git a/tiny-java-containers/jwebserver/Dockerfile.jvm-eclipse-temurin b/native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.jvm-eclipse-temurin similarity index 100% rename from tiny-java-containers/jwebserver/Dockerfile.jvm-eclipse-temurin rename to native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.jvm-eclipse-temurin diff --git a/tiny-java-containers/jwebserver/Dockerfile.scratch.static b/native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.scratch.static similarity index 100% rename from tiny-java-containers/jwebserver/Dockerfile.scratch.static rename to native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.scratch.static diff --git a/tiny-java-containers/jwebserver/Dockerfile.scratch.static-upx b/native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.scratch.static-upx similarity index 100% rename from tiny-java-containers/jwebserver/Dockerfile.scratch.static-upx rename to native-image/containerize/tiny-java-containers/jwebserver/Dockerfile.scratch.static-upx diff --git a/tiny-java-containers/jwebserver/build-all.sh b/native-image/containerize/tiny-java-containers/jwebserver/build-all.sh similarity index 100% rename from tiny-java-containers/jwebserver/build-all.sh rename to native-image/containerize/tiny-java-containers/jwebserver/build-all.sh diff --git a/tiny-java-containers/jwebserver/build-dynamic.sh b/native-image/containerize/tiny-java-containers/jwebserver/build-dynamic.sh similarity index 100% rename from tiny-java-containers/jwebserver/build-dynamic.sh rename to native-image/containerize/tiny-java-containers/jwebserver/build-dynamic.sh diff --git a/tiny-java-containers/jwebserver/build-jlink.sh b/native-image/containerize/tiny-java-containers/jwebserver/build-jlink.sh similarity index 100% rename from tiny-java-containers/jwebserver/build-jlink.sh rename to native-image/containerize/tiny-java-containers/jwebserver/build-jlink.sh diff --git a/tiny-java-containers/jwebserver/build-jvm.sh b/native-image/containerize/tiny-java-containers/jwebserver/build-jvm.sh similarity index 100% rename from tiny-java-containers/jwebserver/build-jvm.sh rename to native-image/containerize/tiny-java-containers/jwebserver/build-jvm.sh diff --git a/tiny-java-containers/jwebserver/build-mostly.sh b/native-image/containerize/tiny-java-containers/jwebserver/build-mostly.sh similarity index 100% rename from tiny-java-containers/jwebserver/build-mostly.sh rename to native-image/containerize/tiny-java-containers/jwebserver/build-mostly.sh diff --git a/tiny-java-containers/jwebserver/build-static.sh b/native-image/containerize/tiny-java-containers/jwebserver/build-static.sh similarity index 100% rename from tiny-java-containers/jwebserver/build-static.sh rename to native-image/containerize/tiny-java-containers/jwebserver/build-static.sh diff --git a/tiny-java-containers/jwebserver/clean.sh b/native-image/containerize/tiny-java-containers/jwebserver/clean.sh similarity index 100% rename from tiny-java-containers/jwebserver/clean.sh rename to native-image/containerize/tiny-java-containers/jwebserver/clean.sh diff --git a/tiny-java-containers/jwebserver/index.html b/native-image/containerize/tiny-java-containers/jwebserver/index.html similarity index 100% rename from tiny-java-containers/jwebserver/index.html rename to native-image/containerize/tiny-java-containers/jwebserver/index.html