From: Jérôme Benoit Date: Fri, 20 Jan 2023 16:57:19 +0000 (+0100) Subject: Merge branch 'main' of https://github.tools.sap/E-Mobility/mbt-docker into multiple... X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=c1d58de1e4324721aeca0e93df1e9272e28b1743;hp=6366827a60b0d99a99f80f86f2b083864d2c02b3;p=mbt-docker.git Merge branch 'main' of https://github.tools.sap/E-Mobility/mbt-docker into multiple-images --- diff --git a/Dockerfile b/Dockerfile index 30832c3..1cdbf51 100644 --- a/Dockerfile +++ b/Dockerfile @@ -115,30 +115,56 @@ ARG SAPMACHINE_VERSION=11.0.17 ENV JAVA_HOME /opt/jdk -RUN ARCH=; SAPMACHINE_MAJOR_VERSION=$(echo ${SAPMACHINE_VERSION} | cut -d. -f1) \ - && dpkgArch="$(dpkg --print-architecture)" \ - && case "${dpkgArch##*-}" in \ +RUN sapmachine_install() { \ + SAPMACHINE_MAJOR_VERSION=$(echo ${SAPMACHINE_VERSION} | cut -d. -f1); \ + ARCH=; \ + dpkgArch="$(dpkg --print-architecture)"; \ + case "${dpkgArch##*-}" in \ amd64) ARCH='amd64';; \ *) echo "unsupported architecture"; exit 1 ;; \ - esac \ + esac; \ + apt-get update; \ + apt-get install -y ca-certificates gnupg dirmngr --no-install-recommends; \ + rm -rf /var/lib/apt/lists/*; \ + export GNUPGHOME="$(mktemp -d)"; \ + for key in \ + CACB9FE09150307D1D22D82962754C3B3ABCFE23 \ + ; do \ + gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/sapmachine.gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \ + gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/sapmachine.gpg --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys "$key" ; \ + done; \ + chmod 644 /etc/apt/trusted.gpg.d/sapmachine.gpg; \ + echo "deb http://dist.sapmachine.io/debian/${ARCH}/ ./" | tee /etc/apt/sources.list.d/sapmachine.list; \ + apt-get update; \ + apt-get install -y sapmachine-${SAPMACHINE_MAJOR_VERSION}-jdk=${SAPMACHINE_VERSION} --no-install-recommends; \ + rm -rf "$GNUPGHOME" /var/lib/apt/lists/*; \ + apt-get remove --purge --autoremove -y ca-certificates gnupg dirmngr; \ + ln -s /usr/lib/jvm/sapmachine-${SAPMACHINE_MAJOR_VERSION} ${JAVA_HOME}; \ + }; \ + sapjvm_install() { \ + ARCH=; \ + dpkgArch="$(dpkg --print-architecture)"; \ + case "${dpkgArch##*-}" in \ + amd64) ARCH='x64';; \ + ppc64el) ARCH='ppc64le';; \ + *) echo "unsupported architecture"; exit 1 ;; \ + esac; \ + apt-get update; \ + apt-get install -y ca-certificates curl libarchive-tools --no-install-recommends; \ + rm -rf /var/lib/apt/lists/*; \ + curl -fsSLO --compressed -b 'eula_3_1_agreed=tools.hana.ondemand.com/developer-license-3_1.txt' https://tools.hana.ondemand.com/additional/sapjvm-${SAPMACHINE_VERSION}-linux-${ARCH}.zip; \ + echo "583dedfeee0c119839a610ddc8c6768d0c044429 sapjvm-${SAPMACHINE_VERSION}-linux-${ARCH}.zip" | sha1sum -c -; \ + bsdtar -xvf sapjvm-${SAPMACHINE_VERSION}-linux-${ARCH}.zip -C /usr/local --strip-components=1 --no-same-owner; \ + rm -f sapjvm-${SAPMACHINE_VERSION}-linux-${ARCH}.zip; \ + apt-get remove --purge --auto-remove -y ca-certificates curl libarchive-tools; \ + ln -s /usr/local ${JAVA_HOME}; \ + } \ && set -ex \ - && apt-get update \ - && apt-get install -y ca-certificates gnupg dirmngr --no-install-recommends \ - && rm -rf /var/lib/apt/lists/* \ - && export GNUPGHOME="$(mktemp -d)" \ - && for key in \ - CACB9FE09150307D1D22D82962754C3B3ABCFE23 \ - ; do \ - gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/sapmachine.gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \ - gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/sapmachine.gpg --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys "$key" ; \ - done \ - && chmod 644 /etc/apt/trusted.gpg.d/sapmachine.gpg \ - && echo "deb http://dist.sapmachine.io/debian/${ARCH}/ ./" | tee /etc/apt/sources.list.d/sapmachine.list \ - && apt-get update \ - && apt-get install -y sapmachine-${SAPMACHINE_MAJOR_VERSION}-jdk=${SAPMACHINE_VERSION} --no-install-recommends \ - && rm -rf "$GNUPGHOME" /var/lib/apt/lists/* \ - && apt-get remove --purge --autoremove -y ca-certificates gnupg dirmngr \ - && ln -s /usr/lib/jvm/sapmachine-${SAPMACHINE_MAJOR_VERSION} ${JAVA_HOME} \ + && if [ $(echo ${SAPMACHINE_VERSION} | cut -d. -f1) -le 8 ]; then \ + sapjvm_install; \ + else \ + sapmachine_install; \ + fi \ # smoke test && java -version diff --git a/Makefile b/Makefile index 3d0ffc8..d181f73 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ PROJECT_NAME?=sap-e-mobility -NAME?=mbt-docker +NAME?=mbt-node16-java11-docker SUBMODULES_INIT?=false DOCKER_REGISTRY_USERNAME?=fraggle0 DOCKER_REGISTRY_PASSWORD?= diff --git a/build-image.sh b/build-image.sh new file mode 100755 index 0000000..fbeafac --- /dev/null +++ b/build-image.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env sh + +shopt -s extglob + +images="mbt-node14-java8-docker mbt-node16-java8-docker mbt-node18-java8-docker \ + mbt-node14-java11-docker mbt-node16-java11-docker mbt-node18-java11-docker \ + mbt-node14-java17-docker mbt-node16-java17-docker mbt-node18-java17-docker \ + mbt-node14-java19-docker mbt-node16-java19-docker mbt-node18-java19-docker" + +repositories="mbt-node14-java8-docker mbt-node16-java8-docker mbt-node18-java8-docker \ + mbt-node14-java11-docker mbt-node16-java11-docker mbt-node18-java11-docker \ + mbt-node14-java17-docker mbt-node16-java17-docker mbt-node18-java17-docker \ + mbt-node14-java19-docker mbt-node16-java19-docker mbt-node18-java19-docker" + +usage() { + echo " Build docker images. + + Usage: + ./$(basename $0) [-b ] + ./$(basename $0) [-p ] + ./$(basename $0) [-c] + ./$(basename $0) [-h] + + Options: + -h Show this help. + -b <${images//+([[:space:]])/|}|all> Build docker images. + -p <${repositories//+([[:space:]])/|}|all> Push docker images. + -c Clean docker images." 1>&2; exit 1; +} + +build_all() { + for image in ${images}; do + make NAME=${image} + done +} + +push_all() { + for repository in ${repositories}; do + make docker-push-registry NAME=${repository} + done +} + +[ $# -eq 0 ] && usage +while getopts ":b:p:ch" option; do + case "${option}" in + b) + name=${OPTARG} + if [ ${name} = "all" ]; then + build_all + elif [ -z "${images##*$name*}" ]; then + make NAME=${name} + else + echo "Error: Unknown image name as option argument '${OPTARG}'" >&2; + usage + fi + ;; + p) + repository=${OPTARG} + if [ ${repository} = "all" ]; then + push_all + elif [ -z "${repositories##*$repository*}" ]; then + make docker-push-registry NAME=${repository} + else + echo "Error: Unknown repository name as option argument '${OPTARG}'" >&2; + usage + fi + ;; + c) + make dist-clean + ;; + :) + echo "Error: Missing option argument for '-${OPTARG}'" >&2; + usage + ;; + \?) + # Invalid option + echo "Error: Unknown or invalid option for '-${OPTARG}'" >&2; + usage + ;; + *|h) + usage + ;; + esac +done diff --git a/docker-compose.yml b/docker-compose.yml index e27e772..4e58a31 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,86 @@ version: '3.8' services: - mbt-docker: + mbt-node18-java8-docker: platform: linux/amd64 build: + args: + NODE_VERSION: 18.13.0 + SAPMACHINE_VERSION: 8.1.091 + dockerfile: Dockerfile + mbt-node16-java8-docker: + platform: linux/amd64 + build: + args: + NODE_VERSION: 16.19.0 + SAPMACHINE_VERSION: 8.1.091 + dockerfile: Dockerfile + mbt-node14-java8-docker: + platform: linux/amd64 + build: + args: + NODE_VERSION: 14.21.2 + SAPMACHINE_VERSION: 8.1.091 + dockerfile: Dockerfile + mbt-node18-java11-docker: + platform: linux/amd64 + build: + args: + NODE_VERSION: 18.13.0 + SAPMACHINE_VERSION: 11.0.17 + dockerfile: Dockerfile + mbt-node16-java11-docker: + platform: linux/amd64 + build: + args: + NODE_VERSION: 16.19.0 + SAPMACHINE_VERSION: 11.0.17 + dockerfile: Dockerfile + mbt-node14-java11-docker: + platform: linux/amd64 + build: + args: + NODE_VERSION: 14.21.2 + SAPMACHINE_VERSION: 11.0.17 + dockerfile: Dockerfile + mbt-node18-java17-docker: + platform: linux/amd64 + build: + args: + NODE_VERSION: 18.13.0 + SAPMACHINE_VERSION: 17.0.5 + dockerfile: Dockerfile + mbt-node16-java17-docker: + platform: linux/amd64 + build: + args: + NODE_VERSION: 16.19.0 + SAPMACHINE_VERSION: 17.0.5 + dockerfile: Dockerfile + mbt-node14-java17-docker: + platform: linux/amd64 + build: + args: + NODE_VERSION: 14.21.2 + SAPMACHINE_VERSION: 17.0.5 + dockerfile: Dockerfile + mbt-node18-java19-docker: + platform: linux/amd64 + build: + args: + NODE_VERSION: 18.13.0 + SAPMACHINE_VERSION: 19.0.1 + dockerfile: Dockerfile + mbt-node16-java19-docker: + platform: linux/amd64 + build: + args: + NODE_VERSION: 16.19.0 + SAPMACHINE_VERSION: 19.0.1 + dockerfile: Dockerfile + mbt-node14-java19-docker: + platform: linux/amd64 + build: + args: + NODE_VERSION: 14.21.2 + SAPMACHINE_VERSION: 19.0.1 dockerfile: Dockerfile