From ced0b34a6c482b0163373ea88f846ab7b8d3d53b Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 23 May 2024 16:30:58 +0200 Subject: [PATCH] using Github releases to build Docker images --- docker/Dockerfile | 2 +- docker/Dockerfile_sapsailing_on_sapmachine11 | 8 +++- docker/Dockerfile_sapsailing_on_sapmachine17 | 8 +++- .../makeImageForLatestRelease-on-sapmachine11 | 47 ++++++++++--------- .../makeImageForLatestRelease-on-sapmachine17 | 47 ++++++++++--------- 5 files changed, 65 insertions(+), 47 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index b8176cd29df..3157f2b459a 100755 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -13,7 +13,7 @@ RUN apt-get update \ && apt-get install -y vim telnet dnsutils net-tools jq COPY vimrc /root/.vimrc RUN wget -O /tmp/rds.pem https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem \ - && keytool -importcert -alias AWSRDS -file /tmp/rds.pem -keystore /opt/java/openjdk/jre/lib/security/cacerts -noprompt -storepass changeit \ + && ${JAVA_HOME}/bin/keytool -importcert -alias AWSRDS -file /tmp/rds.pem -keystore ${JAVA_HOME}/jre/lib/security/cacerts -noprompt -storepass changeit \ && rm /tmp/rds.pem COPY ${RELEASE}.tar.gz /tmp RUN tar xzvpf /tmp/${RELEASE}.tar.gz \ diff --git a/docker/Dockerfile_sapsailing_on_sapmachine11 b/docker/Dockerfile_sapsailing_on_sapmachine11 index 5fe836a9702..32fe2ed64b8 100644 --- a/docker/Dockerfile_sapsailing_on_sapmachine11 +++ b/docker/Dockerfile_sapsailing_on_sapmachine11 @@ -1,4 +1,8 @@ FROM sapmachine:11.0.17 +# This Dockerfile assumes that the release to use is provided as +# ${RELEASE}.tar.gz in the current Docker workspace. Use, e.g., +# the configuration/github-download-release-assets.sh script to +# obtain the tar.gz file for a specific or the latest "main" release. ARG RELEASE LABEL maintainer=axel.uhl@sap.com # Download and extract the release @@ -9,8 +13,8 @@ COPY vimrc /root/.vimrc RUN wget -O /tmp/rds.pem https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem \ && ${JAVA_HOME}/bin/keytool -importcert -alias AWSRDS -file /tmp/rds.pem -keystore ${JAVA_HOME}/lib/security/cacerts -noprompt -storepass changeit \ && rm /tmp/rds.pem -RUN wget -O /tmp/${RELEASE}.tar.gz http://releases.sapsailing.com/${RELEASE}/${RELEASE}.tar.gz \ - && tar xzvpf /tmp/${RELEASE}.tar.gz \ +COPY ${RELEASE}.tar.gz /tmp +RUN tar xzvpf /tmp/${RELEASE}.tar.gz \ && rm /tmp/${RELEASE}.tar.gz COPY env.sh . RUN cat env-default-rules.sh >>env.sh diff --git a/docker/Dockerfile_sapsailing_on_sapmachine17 b/docker/Dockerfile_sapsailing_on_sapmachine17 index a4b93ec8a5f..a3aace8ae85 100644 --- a/docker/Dockerfile_sapsailing_on_sapmachine17 +++ b/docker/Dockerfile_sapsailing_on_sapmachine17 @@ -1,4 +1,8 @@ FROM sapmachine:17.0.11 +# This Dockerfile assumes that the release to use is provided as +# ${RELEASE}.tar.gz in the current Docker workspace. Use, e.g., +# the configuration/github-download-release-assets.sh script to +# obtain the tar.gz file for a specific or the latest "main" release. ARG RELEASE LABEL maintainer=axel.uhl@sap.com # Download and extract the release @@ -9,8 +13,8 @@ COPY vimrc /root/.vimrc RUN wget -O /tmp/rds.pem https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem \ && ${JAVA_HOME}/bin/keytool -importcert -alias AWSRDS -file /tmp/rds.pem -keystore ${JAVA_HOME}/lib/security/cacerts -noprompt -storepass changeit \ && rm /tmp/rds.pem -RUN wget -O /tmp/${RELEASE}.tar.gz http://releases.sapsailing.com/${RELEASE}/${RELEASE}.tar.gz \ - && tar xzvpf /tmp/${RELEASE}.tar.gz \ +COPY ${RELEASE}.tar.gz /tmp +RUN tar xzvpf /tmp/${RELEASE}.tar.gz \ && rm /tmp/${RELEASE}.tar.gz COPY env.sh . RUN cat env-default-rules.sh >>env.sh diff --git a/docker/makeImageForLatestRelease-on-sapmachine11 b/docker/makeImageForLatestRelease-on-sapmachine11 index df765be3aec..7cf27720483 100755 --- a/docker/makeImageForLatestRelease-on-sapmachine11 +++ b/docker/makeImageForLatestRelease-on-sapmachine11 @@ -1,26 +1,31 @@ #!/bin/bash -release=$1 -if [ "${release}" = "" ]; then - SET_LATEST=1 - release=$(wget -O - http://releases.sapsailing.com/ 2>/dev/null | grep 'sapmachine11-[0-9]\{10\}' | tail -1 | sed -e 's/^.*\(sapmachine11-[0-9]*\).*$/\1/') - echo Latest release is ${release} -fi +release_prefix=$1 GITROOT="`dirname $0`/.." DOCKERDIR="${GITROOT}/docker" DOCKERFILE="$DOCKERDIR/Dockerfile" -FILES_TO_COPY_FROM_JAVA_TARGET="env.sh start configuration/JavaSE-11.profile" -echo "Copying files from GITROOT $GITROOT into Docker workspace" -for f in ${FILES_TO_COPY_FROM_JAVA_TARGET}; do - cp "${GITROOT}/java/target/${f}" "$DOCKERDIR" -done -cd "$DOCKERDIR" -docker build --build-arg RELEASE=${release} -t ghcr.io/sap/sailing-analytics:${release} -f Dockerfile_sapsailing_on_sapmachine11 . -echo "Cleaning up..." -for f in ${FILES_TO_COPY_FROM_JAVA_TARGET}; do - rm "`basename ${f}`" -done -docker push ghcr.io/sap/sailing-analytics:${release} -if [ "$SET_LATEST" = "1" ]; then - docker tag ghcr.io/sap/sailing-analytics:${release} ghcr.io/sap/sailing-analytics:latest-11 - docker push ghcr.io/sap/sailing-analytics:latest-11 +if [ "${release_prefix}" = "" ]; then + SET_LATEST=1 + release_prefix="docker-11-" fi +pushd "${DOCKERDIR}" +RELEASE_TAR_GZ_FILENAME=$( ${GITROOT}/configuration/github-download-release-assets.sh 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 "${release_prefix}" ) +if [ "${RELEASE_TAR_GZ_FILENAME}" = "" ]; then + echo "No release with prefix ${release_prefix} found" >&2 +else + release=$( echo ${RELEASE_TAR_GZ_FILENAME} | sed -e 's/\.tar\.gz//' ) + echo Release is ${release} + echo "Copying files from GITROOT $GITROOT into Docker workspace" + cp "$GITROOT/java/target/env.sh" "$DOCKERDIR" + cp "$GITROOT/java/target/start" "$DOCKERDIR" + cp "$GITROOT/java/target/configuration/JavaSE-11.profile" "$DOCKERDIR" + cd "$DOCKERDIR" + docker build --build-arg RELEASE=${release} -t ghcr.io/sap/sailing-analytics:${release} -f Dockerfile_sapsailing_on_sapmachine11 . + echo "Cleaning up..." + rm start env.sh JavaSE-11.profile ${RELEASE_TAR_GZ_FILENAME} release-notes.txt + docker push ghcr.io/sap/sailing-analytics:${release} + if [ "$SET_LATEST" = "1" ]; then + docker tag ghcr.io/sap/sailing-analytics:${release} ghcr.io/sap/sailing-analytics:latest-11 + docker push ghcr.io/sap/sailing-analytics:latest-11 + fi +fi +popd diff --git a/docker/makeImageForLatestRelease-on-sapmachine17 b/docker/makeImageForLatestRelease-on-sapmachine17 index 543d1733c3b..0faf536d237 100755 --- a/docker/makeImageForLatestRelease-on-sapmachine17 +++ b/docker/makeImageForLatestRelease-on-sapmachine17 @@ -1,26 +1,31 @@ #!/bin/bash -release=$1 -if [ "${release}" = "" ]; then - SET_LATEST=1 - release=$(wget -O - http://releases.sapsailing.com/ 2>/dev/null | grep 'sapmachine17-[0-9]\{10\}' | tail -1 | sed -e 's/^.*\(sapmachine17-[0-9]*\).*$/\1/') - echo Latest release is ${release} -fi +release_prefix=$1 GITROOT="`dirname $0`/.." DOCKERDIR="${GITROOT}/docker" DOCKERFILE="$DOCKERDIR/Dockerfile" -FILES_TO_COPY_FROM_JAVA_TARGET="env.sh start configuration/JavaSE-11.profile" -echo "Copying files from GITROOT $GITROOT into Docker workspace" -for f in ${FILES_TO_COPY_FROM_JAVA_TARGET}; do - cp "${GITROOT}/java/target/${f}" "$DOCKERDIR" -done -cd "$DOCKERDIR" -docker build --build-arg RELEASE=${release} -t ghcr.io/sap/sailing-analytics:${release} -f Dockerfile_sapsailing_on_sapmachine17 . -echo "Cleaning up..." -for f in ${FILES_TO_COPY_FROM_JAVA_TARGET}; do - rm "`basename ${f}`" -done -docker push ghcr.io/sap/sailing-analytics:${release} -if [ "$SET_LATEST" = "1" ]; then - docker tag ghcr.io/sap/sailing-analytics:${release} ghcr.io/sap/sailing-analytics:latest-17 - docker push ghcr.io/sap/sailing-analytics:latest-17 +if [ "${release_prefix}" = "" ]; then + SET_LATEST=1 + release_prefix="docker-17-" fi +pushd "${DOCKERDIR}" +RELEASE_TAR_GZ_FILENAME=$( ${GITROOT}/configuration/github-download-release-assets.sh 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 "${release_prefix}" ) +if [ "${RELEASE_TAR_GZ_FILENAME}" = "" ]; then + echo "No release with prefix ${release_prefix} found" >&2 +else + release=$( echo ${RELEASE_TAR_GZ_FILENAME} | sed -e 's/\.tar\.gz//' ) + echo Release is ${release} + echo "Copying files from GITROOT $GITROOT into Docker workspace" + cp "$GITROOT/java/target/env.sh" "$DOCKERDIR" + cp "$GITROOT/java/target/start" "$DOCKERDIR" + cp "$GITROOT/java/target/configuration/JavaSE-11.profile" "$DOCKERDIR" + cd "$DOCKERDIR" + docker build --build-arg RELEASE=${release} -t ghcr.io/sap/sailing-analytics:${release} -f Dockerfile_sapsailing_on_sapmachine17 . + echo "Cleaning up..." + rm start env.sh JavaSE-11.profile ${RELEASE_TAR_GZ_FILENAME} release-notes.txt + docker push ghcr.io/sap/sailing-analytics:${release} + if [ "$SET_LATEST" = "1" ]; then + docker tag ghcr.io/sap/sailing-analytics:${release} ghcr.io/sap/sailing-analytics:latest-17 + docker push ghcr.io/sap/sailing-analytics:latest-17 + fi +fi +popd