using Github releases to build Docker images

This commit is contained in:
Axel Uhl
2024-05-23 16:30:58 +02:00
parent 97882edbbc
commit ced0b34a6c
5 changed files with 65 additions and 47 deletions
+1 -1
View File
@@ -13,7 +13,7 @@ RUN apt-get update \
&& apt-get install -y vim telnet dnsutils net-tools jq && apt-get install -y vim telnet dnsutils net-tools jq
COPY vimrc /root/.vimrc COPY vimrc /root/.vimrc
RUN wget -O /tmp/rds.pem https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem \ 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 && rm /tmp/rds.pem
COPY ${RELEASE}.tar.gz /tmp COPY ${RELEASE}.tar.gz /tmp
RUN tar xzvpf /tmp/${RELEASE}.tar.gz \ RUN tar xzvpf /tmp/${RELEASE}.tar.gz \
+6 -2
View File
@@ -1,4 +1,8 @@
FROM sapmachine:11.0.17 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 ARG RELEASE
LABEL maintainer=axel.uhl@sap.com LABEL maintainer=axel.uhl@sap.com
# Download and extract the release # 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 \ 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 \ && ${JAVA_HOME}/bin/keytool -importcert -alias AWSRDS -file /tmp/rds.pem -keystore ${JAVA_HOME}/lib/security/cacerts -noprompt -storepass changeit \
&& rm /tmp/rds.pem && rm /tmp/rds.pem
RUN wget -O /tmp/${RELEASE}.tar.gz http://releases.sapsailing.com/${RELEASE}/${RELEASE}.tar.gz \ COPY ${RELEASE}.tar.gz /tmp
&& tar xzvpf /tmp/${RELEASE}.tar.gz \ RUN tar xzvpf /tmp/${RELEASE}.tar.gz \
&& rm /tmp/${RELEASE}.tar.gz && rm /tmp/${RELEASE}.tar.gz
COPY env.sh . COPY env.sh .
RUN cat env-default-rules.sh >>env.sh RUN cat env-default-rules.sh >>env.sh
+6 -2
View File
@@ -1,4 +1,8 @@
FROM sapmachine:17.0.11 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 ARG RELEASE
LABEL maintainer=axel.uhl@sap.com LABEL maintainer=axel.uhl@sap.com
# Download and extract the release # 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 \ 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 \ && ${JAVA_HOME}/bin/keytool -importcert -alias AWSRDS -file /tmp/rds.pem -keystore ${JAVA_HOME}/lib/security/cacerts -noprompt -storepass changeit \
&& rm /tmp/rds.pem && rm /tmp/rds.pem
RUN wget -O /tmp/${RELEASE}.tar.gz http://releases.sapsailing.com/${RELEASE}/${RELEASE}.tar.gz \ COPY ${RELEASE}.tar.gz /tmp
&& tar xzvpf /tmp/${RELEASE}.tar.gz \ RUN tar xzvpf /tmp/${RELEASE}.tar.gz \
&& rm /tmp/${RELEASE}.tar.gz && rm /tmp/${RELEASE}.tar.gz
COPY env.sh . COPY env.sh .
RUN cat env-default-rules.sh >>env.sh RUN cat env-default-rules.sh >>env.sh
@@ -1,26 +1,31 @@
#!/bin/bash #!/bin/bash
release=$1 release_prefix=$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
GITROOT="`dirname $0`/.." GITROOT="`dirname $0`/.."
DOCKERDIR="${GITROOT}/docker" DOCKERDIR="${GITROOT}/docker"
DOCKERFILE="$DOCKERDIR/Dockerfile" DOCKERFILE="$DOCKERDIR/Dockerfile"
FILES_TO_COPY_FROM_JAVA_TARGET="env.sh start configuration/JavaSE-11.profile" if [ "${release_prefix}" = "" ]; then
echo "Copying files from GITROOT $GITROOT into Docker workspace" SET_LATEST=1
for f in ${FILES_TO_COPY_FROM_JAVA_TARGET}; do release_prefix="docker-11-"
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
fi 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
@@ -1,26 +1,31 @@
#!/bin/bash #!/bin/bash
release=$1 release_prefix=$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
GITROOT="`dirname $0`/.." GITROOT="`dirname $0`/.."
DOCKERDIR="${GITROOT}/docker" DOCKERDIR="${GITROOT}/docker"
DOCKERFILE="$DOCKERDIR/Dockerfile" DOCKERFILE="$DOCKERDIR/Dockerfile"
FILES_TO_COPY_FROM_JAVA_TARGET="env.sh start configuration/JavaSE-11.profile" if [ "${release_prefix}" = "" ]; then
echo "Copying files from GITROOT $GITROOT into Docker workspace" SET_LATEST=1
for f in ${FILES_TO_COPY_FROM_JAVA_TARGET}; do release_prefix="docker-17-"
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
fi 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