From ddb2820f52e2536d4c328d944693973bd177febf Mon Sep 17 00:00:00 2001 From: Kavin <20838718+FireMasterK@users.noreply.github.com> Date: Sun, 11 Sep 2022 02:04:31 +0530 Subject: [PATCH] Build outside docker for faster builds. --- .github/workflows/docker-build.yml | 93 +++++++++--------------------- Dockerfile.ci | 11 ++++ Dockerfile.graalvm-jvm.ci | 25 ++++++++ Dockerfile.openj9.ci | 11 ++++ 4 files changed, 73 insertions(+), 67 deletions(-) create mode 100644 Dockerfile.ci create mode 100644 Dockerfile.graalvm-jvm.ci create mode 100644 Dockerfile.openj9.ci diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 7a4d97e..a6c6384 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -8,93 +8,52 @@ on: - master jobs: - build-docker-hotspot: + build-docker: runs-on: ubuntu-latest + strategy: + matrix: + include: + - image: 1337kavin/piped:latest,1337kavin/piped:openj9 + dockerfile: ./Dockerfile.openj9.ci + - image: 1337kavin/piped:hotspot + dockerfile: ./Dockerfile.ci + - image: 1337kavin/piped:graalvm-jvm + dockerfile: ./Dockerfile.graalvm-jvm.ci steps: - uses: actions/checkout@v3 - name: Create Version File run: echo $(git log -1 --date=short --pretty=format:%cd)-$(git rev-parse --short HEAD) > VERSION + - name: set up JDK ${{ matrix.java }} + uses: actions/setup-java@v3 + with: + java-version: ${{ matrix.java }} + distribution: temurin + check-latest: true + cache: "gradle" + - name: Run Build + run: ./gradlew build + - run: mv build/libs/piped-*-all.jar piped.jar - name: Set up QEMU - uses: docker/setup-qemu-action@v2.0.0 + uses: docker/setup-qemu-action@v2 with: platforms: all - name: Set up Docker Buildx id: buildx - uses: docker/setup-buildx-action@v2.0.0 + uses: docker/setup-buildx-action@v2 with: version: latest - name: Login to DockerHub - uses: docker/login-action@v2.0.0 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and push - uses: docker/build-push-action@v3.1.1 + uses: docker/build-push-action@v3 with: context: . - file: ./Dockerfile + file: ${{ matrix.dockerfile }} platforms: linux/amd64,linux/arm64 push: true - tags: 1337kavin/piped:hotspot - cache-from: type=gha - cache-to: type=gha,mode=max - build-docker-openj9: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Create Version File - run: echo $(git log -1 --date=short --pretty=format:%cd)-$(git rev-parse --short HEAD) > VERSION - - name: Set up QEMU - uses: docker/setup-qemu-action@v2.0.0 - with: - platforms: all - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v2.0.0 - with: - version: latest - - name: Login to DockerHub - uses: docker/login-action@v2.0.0 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - name: Build and push - uses: docker/build-push-action@v3.1.1 - with: - context: . - file: ./Dockerfile.openj9 - platforms: linux/amd64,linux/arm64 - push: true - tags: 1337kavin/piped:latest,1337kavin/piped:openj9 - cache-from: type=gha - cache-to: type=gha,mode=max - build-docker-graalvm: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Create Version File - run: echo $(git log -1 --date=short --pretty=format:%cd)-$(git rev-parse --short HEAD) > VERSION - - name: Set up QEMU - uses: docker/setup-qemu-action@v2.0.0 - with: - platforms: all - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v2.0.0 - with: - version: latest - - name: Login to DockerHub - uses: docker/login-action@v2.0.0 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - name: Build and push - uses: docker/build-push-action@v3.1.1 - with: - context: . - file: ./Dockerfile.graalvm-jvm - platforms: linux/amd64,linux/arm64 - push: true - tags: 1337kavin/piped:graalvm-jvm + tags: ${{ matrix.image }} cache-from: type=gha cache-to: type=gha,mode=max diff --git a/Dockerfile.ci b/Dockerfile.ci new file mode 100644 index 0000000..bc3627b --- /dev/null +++ b/Dockerfile.ci @@ -0,0 +1,11 @@ +FROM eclipse-temurin:17-jre + +WORKDIR /app/ + +COPY ./piped.jar /app/piped.jar + +COPY VERSION . + +EXPOSE 8080 + +CMD java -jar /app/piped.jar diff --git a/Dockerfile.graalvm-jvm.ci b/Dockerfile.graalvm-jvm.ci new file mode 100644 index 0000000..fd2d6ce --- /dev/null +++ b/Dockerfile.graalvm-jvm.ci @@ -0,0 +1,25 @@ +FROM ghcr.io/graalvm/native-image:latest as build + +RUN jlink \ + --add-modules java.base,java.logging,java.sql,java.management,java.xml,java.naming,java.desktop,jdk.crypto.ec \ + --strip-debug \ + --no-man-pages \ + --no-header-files \ + --compress=2 \ + --output /javaruntime + +FROM debian:stable-slim + +ENV JAVA_HOME=/opt/java/openjdk +ENV PATH "${JAVA_HOME}/bin:${PATH}" +COPY --from=build /javaruntime $JAVA_HOME + +WORKDIR /app/ + +COPY ./piped.jar /app/piped.jar + +COPY VERSION . + +EXPOSE 8080 + +CMD java -jar /app/piped.jar diff --git a/Dockerfile.openj9.ci b/Dockerfile.openj9.ci new file mode 100644 index 0000000..803aa68 --- /dev/null +++ b/Dockerfile.openj9.ci @@ -0,0 +1,11 @@ +FROM ibm-semeru-runtimes:open-17-jre + +WORKDIR /app/ + +COPY ./piped.jar /app/piped.jar + +COPY VERSION . + +EXPOSE 8080 + +CMD java -server -XX:+UnlockExperimentalVMOptions -XX:+OptimizeStringConcat -XX:+UseStringDeduplication -XX:+UseCompressedOops -XX:+UseNUMA -XX:+UseParallelGC -XX:-UseBiasedLocking -Xshareclasses:allowClasspaths -jar /app/piped.jar