Merge branch 'main' of https://github.tools.sap/E-Mobility/mbt-docker into multiple...
authorJérôme Benoit <jerome.benoit@sap.com>
Fri, 20 Jan 2023 16:13:52 +0000 (17:13 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Fri, 20 Jan 2023 16:13:52 +0000 (17:13 +0100)
Dockerfile
Makefile
build-image.sh [new file with mode: 0755]
docker-compose.yml

index 8d4d40779e37984fb24340655bc4248e5d8ad358..627fc49f68c655416c6e2432886db6a4d50ff9ed 100644 (file)
@@ -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
 
index 3d0ffc86c4e154a620c2a40babb8847de5f30a83..d181f733dc43f60d726f6a4ecce9d391d9047973 100644 (file)
--- 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 (executable)
index 0000000..fbeafac
--- /dev/null
@@ -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 <name>]
+      ./$(basename $0) [-p <name>]
+      ./$(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
index e27e772992d3772f699d16893a866f5009f80803..4e58a31744d5f9260b334618c9cec351e681131b 100644 (file)
@@ -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