diff --git a/.circleci/config.yml b/.circleci/config.yml index 401a25b..948cfe4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -53,12 +53,6 @@ jobs: executor: gradle_docker steps: - setup_build_environment - - gradle: - args: :tag -Prelease - - add_ssh_keys: - fingerprints: - - '9f:bb:a7:39:fa:3d:39:04:bd:c6:66:27:79:b1:49:86' - - run: git push origin $(./gradlew -q :printVersion) - gradle: args: dockerPushImages @@ -67,11 +61,11 @@ workflows: build-and-publish: jobs: - build -# - publish: -# context: hypertrace-publishing -# requires: -# - build -# filters: -# branches: -# only: -# - main + - publish: + context: hypertrace-publishing + requires: + - build + filters: + branches: + only: + - main diff --git a/java-11/Dockerfile b/java-11/Dockerfile index 45b08f7..ca9e634 100644 --- a/java-11/Dockerfile +++ b/java-11/Dockerfile @@ -1 +1,57 @@ -FROM gcr.io/distroless/java:11-debug \ No newline at end of file +ARG JAVA_VERSION +FROM azul/zulu-openjdk-debian:${JAVA_VERSION} AS jre + +# Needed for --strip-debug +RUN apt-get -y update && apt-get -y install binutils + +# Included modules cherrypicked from https://docs.oracle.com/en/java/javase/11/docs/api/ +# +# jdk.unsupported is undocumented but contains Unsafe, which is used by several dependencies to +# improve performance. +RUN cd / && jlink --no-header-files --no-man-pages --compress=0 --strip-debug \ + --add-modules java.base,java.logging,\ +# java.desktop includes java.beans which is used by Spring +java.desktop,\ +java.sql,\ +# instrumentation +java.instrument,\ +# we don't use JMX, but log4j2 errors without it: LOG4J2-716 +java.management,\ +# remote debug +jdk.jdwp.agent,\ +# JVM metrics such as garbage collection +jdk.management,\ +# prevents us from needing a different base layer for kafka-zookeeper +# ZooKeeper needs jdk.management.agent, and adding it is 900K vs 200M for a different base layer +jdk.management.agent,\ +# non-netty based DNS +java.naming,jdk.naming.dns,\ +# TLS handehake with servers that use elliptic curve certificates +jdk.crypto.ec,\ +# sun.misc.Unsafe and friends +jdk.unsupported\ + --output jre + +# We extract JRE's hard dependencies, libz and SSL certs, from the fat JRE image. +FROM gcr.io/distroless/java:11-debug AS deps + +FROM gcr.io/distroless/cc:debug + +MAINTAINER Hypertrace "https://www.hypertrace.org/" + +SHELL ["/busybox/sh", "-c"] + +RUN ln -s /busybox/sh /bin/sh + +COPY --from=deps /etc/ssl/certs/java /etc/ssl/certs/java + +COPY --from=deps /lib/x86_64-linux-gnu/libz.so.1.2.8 /lib/x86_64-linux-gnu/libz.so.1.2.8 +RUN ln -s /lib/x86_64-linux-gnu/libz.so.1.2.8 /lib/x86_64-linux-gnu/libz.so.1 + +COPY --from=jre /jre /usr/lib/jvm/zulu-11-amd64-slim +RUN ln -s /usr/lib/jvm/zulu-11-amd64-slim/bin/java /usr/bin/java + +# set JAVA_HOME +ENV JAVA_HOME=/usr/lib/jvm/zulu-11-amd64-slim + +ENTRYPOINT ["/usr/bin/java", "-jar"] diff --git a/java-11/build.gradle.kts b/java-11/build.gradle.kts index 0ffa75e..a5a0c29 100644 --- a/java-11/build.gradle.kts +++ b/java-11/build.gradle.kts @@ -2,9 +2,15 @@ plugins { id("org.hypertrace.docker-publish-plugin") } +var javaVersion = "11.0.8-11.41.23" + hypertraceDocker { defaultImage { imageName.set("java") - setTagNameTransform { tag -> "11-${tag.name}" } + buildArgs.put("JAVA_VERSION", javaVersion) + tags.forEach { it.onlyIf { false } } + tag(javaVersion) + tag(javaVersion.split('-')[0]) + tag(javaVersion.split('.')[0]) } -} \ No newline at end of file +} diff --git a/java-14/Dockerfile b/java-14/Dockerfile new file mode 100644 index 0000000..9b3c661 --- /dev/null +++ b/java-14/Dockerfile @@ -0,0 +1,57 @@ +ARG JAVA_VERSION +FROM azul/zulu-openjdk-debian:${JAVA_VERSION} AS jre + +# Needed for --strip-debug +RUN apt-get -y update && apt-get -y install binutils + +# Included modules cherrypicked from https://docs.oracle.com/en/java/javase/11/docs/api/ +# +# jdk.unsupported is undocumented but contains Unsafe, which is used by several dependencies to +# improve performance. +RUN cd / && jlink --no-header-files --no-man-pages --compress=0 --strip-debug \ + --add-modules java.base,java.logging,\ +# java.desktop includes java.beans which is used by Spring +java.desktop,\ +java.sql,\ +# instrumentation +java.instrument,\ +# we don't use JMX, but log4j2 errors without it: LOG4J2-716 +java.management,\ +# remote debug +jdk.jdwp.agent,\ +# JVM metrics such as garbage collection +jdk.management,\ +# prevents us from needing a different base layer for kafka-zookeeper +# ZooKeeper needs jdk.management.agent, and adding it is 900K vs 200M for a different base layer +jdk.management.agent,\ +# non-netty based DNS +java.naming,jdk.naming.dns,\ +# TLS handehake with servers that use elliptic curve certificates +jdk.crypto.ec,\ +# sun.misc.Unsafe and friends +jdk.unsupported\ + --output jre + +# We extract JRE's hard dependencies, libz and SSL certs, from the fat JRE image. +FROM gcr.io/distroless/java:11-debug AS deps + +FROM gcr.io/distroless/cc:debug + +MAINTAINER Hypertrace "https://www.hypertrace.org/" + +SHELL ["/busybox/sh", "-c"] + +RUN ln -s /busybox/sh /bin/sh + +COPY --from=deps /etc/ssl/certs/java /etc/ssl/certs/java + +COPY --from=deps /lib/x86_64-linux-gnu/libz.so.1.2.8 /lib/x86_64-linux-gnu/libz.so.1.2.8 +RUN ln -s /lib/x86_64-linux-gnu/libz.so.1.2.8 /lib/x86_64-linux-gnu/libz.so.1 + +COPY --from=jre /jre /usr/lib/jvm/zulu-14-amd64-slim +RUN ln -s /usr/lib/jvm/zulu-14-amd64-slim/bin/java /usr/bin/java + +# set JAVA_HOME +ENV JAVA_HOME=/usr/lib/jvm/zulu-14-amd64-slim + +ENTRYPOINT ["/usr/bin/java", "-jar"] diff --git a/java-14/build.gradle.kts b/java-14/build.gradle.kts new file mode 100644 index 0000000..a148521 --- /dev/null +++ b/java-14/build.gradle.kts @@ -0,0 +1,16 @@ +plugins { + id("org.hypertrace.docker-publish-plugin") +} + +var javaVersion = "14.0.2-14.29.23" + +hypertraceDocker { + defaultImage { + imageName.set("java") + buildArgs.put("JAVA_VERSION", javaVersion) + tags.forEach { it.onlyIf { false } } + tag(javaVersion) + tag(javaVersion.split('-')[0]) + tag(javaVersion.split('.')[0]) + } +} diff --git a/java-8/Dockerfile b/java-8/Dockerfile deleted file mode 100644 index f26c7d0..0000000 --- a/java-8/Dockerfile +++ /dev/null @@ -1 +0,0 @@ -FROM gcr.io/distroless/java:8-debug \ No newline at end of file diff --git a/java-8/build.gradle.kts b/java-8/build.gradle.kts deleted file mode 100644 index 4bc54ad..0000000 --- a/java-8/build.gradle.kts +++ /dev/null @@ -1,10 +0,0 @@ -plugins { - id("org.hypertrace.docker-publish-plugin") -} - -hypertraceDocker { - defaultImage { - imageName.set("java") - setTagNameTransform { tag -> "8-${tag.name}" } - } -} diff --git a/semantic-build-versioning.gradle b/semantic-build-versioning.gradle deleted file mode 100644 index 9bc1676..0000000 --- a/semantic-build-versioning.gradle +++ /dev/null @@ -1,11 +0,0 @@ -// Follows https://www.conventionalcommits.org/en/v1.0.0/#summary with one change: any commit is treated as a release, -// patch being the default if major or minor is not detected. - -autobump { - // match any message starting with a type/scope suffixed with !, or with a line starting with "BREAKING CHANGE:" - majorPattern = ~/(?m)(\A[^:]+(?<=!): |^BREAKING CHANGE:)/ - // match any commit message starting with "feat: " or "feat(any scope): " - minorPattern = ~/^feat(\([^)]+\))?: / - newPreReleasePattern = null // Not used - no prereleases - promoteToReleasePattern = null // Not used - every merge is a release -} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 2f9ac12..8c0f654 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -6,10 +6,5 @@ pluginManagement { } } -plugins { - id("org.hypertrace.version-settings") version "0.1.5" -} - - -include(":java-8") -include(":java-11") \ No newline at end of file +include(":java-11") +include(":java-14")