From 8d4e2f4132baf0df4ea0ae54c0d04960b31abfbb Mon Sep 17 00:00:00 2001 From: Young Yang Date: Thu, 29 Dec 2022 10:54:15 +0800 Subject: [PATCH 1/5] modified: Dockerfile_mbtci_template modified: cmd/testdata/mtahtml5/mta.sh modified: integration/testdata/mtahtml5/mta.sh modified: scripts/build_image modified: scripts/common_image --- Dockerfile_mbtci_template | 106 +++++++++++++++++++-------- cmd/testdata/mtahtml5/mta.sh | 2 +- integration/testdata/mtahtml5/mta.sh | 2 +- scripts/build_image | 3 +- scripts/common_image | 2 +- 5 files changed, 81 insertions(+), 34 deletions(-) diff --git a/Dockerfile_mbtci_template b/Dockerfile_mbtci_template index 70892f27..cfc1c9e7 100644 --- a/Dockerfile_mbtci_template +++ b/Dockerfile_mbtci_template @@ -12,9 +12,19 @@ ARG SAPMACHINE_VERSION=JAVA_VERSION_TEMPLATE # Environment variables ENV PYTHON /usr/bin/python3 + ENV MAVEN_HOME /usr/share/maven ENV M2_HOME ${MAVEN_HOME} -ENV PATH /usr/local/go/bin:$PATH +ENV JAVA_HOME /opt/jdk +ENV PATH $PATH:$MAVEN_HOME/bin:${JAVA_HOME}/bin + +ENV NODE_HOME /usr/local/nodejs +ENV PATH $PATH:${NODE_HOME}/bin + +ENV GOPATH /go +ENV GO_HOME /usr/local/go +ENV PATH $GOPATH/bin:$GO_HOME/bin:$PATH + ENV CGO_ENABLED=0 ENV GOOS=linux ENV DEBIAN_FRONTEND=noninteractive @@ -72,12 +82,15 @@ RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \ gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \ gpg --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys "$key" ; \ done \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ + && curl -fsSLO --compressed "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-${GOOS}-${ARCH}.tar.xz" \ + && curl -fsSLO --compressed "https://nodejs.org/dist/v${NODE_VERSION}/SHASUMS256.txt.asc" \ && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ - && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ - && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ - && rm -rf "$GNUPGHOME" "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ + && grep " node-v${NODE_VERSION}-${GOOS}-${ARCH}.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ + && mkdir -p ${NODE_HOME} \ + && tar -xJf "node-v${NODE_VERSION}-${GOOS}-${ARCH}.tar.xz" -C ${NODE_HOME} --strip-components=1 \ + && chmod --recursive a+w "${NODE_HOME}" \ + && ln -s "${NODE_HOME}/bin/node" "${NODE_HOME}/bin/nodejs" \ + && rm -rf "$GNUPGHOME" "node-v${NODE_VERSION}-${GOOS}-${ARCH}.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ && apt-mark auto '.*' > /dev/null \ && find /usr/local -type f -executable -exec ldd '{}' ';' \ | awk '/=>/ { print $(NF-1) }' \ @@ -87,7 +100,6 @@ RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \ | sort -u \ | xargs -r apt-mark manual \ && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ - && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ # smoke tests && echo "node ${NODE_VERSION} install smoke tests!" \ && node --version \ @@ -135,7 +147,11 @@ RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \ && curl -fsSLO --compressed https://storage.googleapis.com/golang/go${GO_VERSION}.${GOOS}-${ARCH}.tar.gz \ && curl -fsSLO --compressed https://storage.googleapis.com/golang/go${GO_VERSION}.${GOOS}-${ARCH}.tar.gz.asc \ && gpg --batch --verify go${GO_VERSION}.${GOOS}-${ARCH}.tar.gz.asc go${GO_VERSION}.${GOOS}-${ARCH}.tar.gz \ - && tar -xvf go${GO_VERSION}.${GOOS}-${ARCH}.tar.gz -C /usr/local \ + && mkdir -p ${GO_HOME} \ + && tar -xvf go${GO_VERSION}.${GOOS}-${ARCH}.tar.gz -C ${GO_HOME} --strip-components=1 \ + && mkdir -p ${GOPATH} \ + && ln -s ${GO_HOME} ${GOPATH} \ + && chmod -R 777 ${GOPATH} \ && rm -rf "$GNUPGHOME" go${GO_VERSION}.${GOOS}-${ARCH}.tar.gz go${GO_VERSION}.${GOOS}-${ARCH}.tar.gz.asc \ && apt-get remove --purge --autoremove -y ca-certificates curl gnupg dirmngr \ # smoke test @@ -143,31 +159,62 @@ RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \ && go version # Install SAPMachine -RUN ARCH= && 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() { \ + SAPMACHINE_MAJOR_VERSION=$(echo ${SAPMACHINE_VERSION} | cut -d. -f1); \ + 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}-${GOOS}-${ARCH}.zip; \ + # Notice to modify, download the sha1 value auto + echo "583dedfeee0c119839a610ddc8c6768d0c044429 sapjvm-${SAPMACHINE_VERSION}-${GOOS}-${ARCH}.zip" | sha1sum -c -; \ + bsdtar -xvf sapjvm-${SAPMACHINE_VERSION}-${GOOS}-${ARCH}.zip -C /usr/local; \ + chown root:root /usr/local/sapjvm_${SAPMACHINE_MAJOR_VERSION}; \ + rm -f sapjvm-${SAPMACHINE_VERSION}-${GOOS}-${ARCH}.zip; \ + apt-get remove --purge --auto-remove -y ca-certificates curl libarchive-tools; \ + ln -s /usr/local/sapjvm_${SAPMACHINE_MAJOR_VERSION} ${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-$(echo ${SAPMACHINE_VERSION} | cut -d. -f1)-jdk=${SAPMACHINE_VERSION} --no-install-recommends \ - && rm -rf "$GNUPGHOME" /var/lib/apt/lists/* \ - && apt-get remove --purge --autoremove -y ca-certificates gnupg dirmngr \ + && if [ $(echo ${SAPMACHINE_VERSION} | cut -d. -f1) -le 8 ]; then \ + sapjvm_install; \ + else \ + sapmachine_install; \ + fi \ # smoke test && echo "SAPMachine ${SAPMACHINE_VERSION} install smoke test!" \ - && java --version + && java -version # Install Maven RUN set -ex \ @@ -188,7 +235,6 @@ RUN set -ex \ && tar -xzf apache-maven-${MAVEN_VERSION}-bin.tar.gz -C ${MAVEN_HOME} --strip-components=1 \ && rm -rf "$GNUPGHOME" apache-maven-${MAVEN_VERSION}-bin.tar.gz.asc apache-maven-${MAVEN_VERSION}-bin.tar.gz \ && chmod -R a+w ${MAVEN_HOME}/conf/* \ - && ln -s ${MAVEN_HOME}/bin/mvn /usr/bin/mvn \ && apt-get remove --purge --autoremove -y ca-certificates curl gnupg dirmngr \ # smoke test && echo "mvn ${MAVEN_VERSION} install smoke test!" \ @@ -196,7 +242,7 @@ RUN set -ex \ # Install MBT RUN set -ex \ - && npm install -g --unsafe-perm mbt@${MBT_VERSION} \ + && npm install --prefix /usr/local/ --unsafe-perm -g @young-yang217/mbt@${MBT_VERSION} \ && npm cache clean -g --force \ # smoke test && echo "mbt ${MBT_VERSION} install smoke test!" \ diff --git a/cmd/testdata/mtahtml5/mta.sh b/cmd/testdata/mtahtml5/mta.sh index fdf3eead..e6466e02 100644 --- a/cmd/testdata/mtahtml5/mta.sh +++ b/cmd/testdata/mtahtml5/mta.sh @@ -16,7 +16,7 @@ # ----Executing build for module ui5app ------- # installing module dependencies & execute grunt & remove dev dependencies - (npm install && grunt && npm prune production ) & + (npm install && grunt && npm prune production) & # wait to the process to finish wait # Pack module after build for deployment diff --git a/integration/testdata/mtahtml5/mta.sh b/integration/testdata/mtahtml5/mta.sh index fdf3eead..e6466e02 100755 --- a/integration/testdata/mtahtml5/mta.sh +++ b/integration/testdata/mtahtml5/mta.sh @@ -16,7 +16,7 @@ # ----Executing build for module ui5app ------- # installing module dependencies & execute grunt & remove dev dependencies - (npm install && grunt && npm prune production ) & + (npm install && grunt && npm prune production) & # wait to the process to finish wait # Pack module after build for deployment diff --git a/scripts/build_image b/scripts/build_image index 405c6ea4..18db585f 100644 --- a/scripts/build_image +++ b/scripts/build_image @@ -19,7 +19,8 @@ echo "Build mbtci${JAVA_VERSION}${NODE_VERSION}:${MBT_VERSION}" docker build -t mbtci${JAVA_VERSION}${NODE_VERSION}:${MBT_VERSION} . # test image -if [ "$JAVA_MAJOR_VERSION" = "11" ] || [ "$JAVA_MAJOR_VERSION" = "17" ] || [ "$JAVA_MAJOR_VERSION" = "19" ]; then +if [ "$JAVA_MAJOR_VERSION" = "8" ] || [ "$JAVA_MAJOR_VERSION" = "11" ] || \ + [ "$JAVA_MAJOR_VERSION" = "17" ] || [ "$JAVA_MAJOR_VERSION" = "19" ]; then cp test/goss/goss_template.yaml test/goss/goss.yaml sed_i "s/NODE_VERSION_TEMPLATE/${NODE_VERSION_TEMPLATE}/" test/goss/goss.yaml sed_i "s/JAVA_VERSION_TEMPLATE/${JAVA_VERSION_TEMPLATE}/" test/goss/goss.yaml diff --git a/scripts/common_image b/scripts/common_image index 804616b7..3a5509b6 100644 --- a/scripts/common_image +++ b/scripts/common_image @@ -11,7 +11,7 @@ export NODE_MAJOR_VERSION="$(echo ${NODE_VERSION_TEMPLATE}|awk -F. '{printf "%d" echo "Java major version: ${JAVA_MAJOR_VERSION}, Node major version: ${NODE_MAJOR_VERSION}" -if ([ "$JAVA_MAJOR_VERSION" -ne "11" ] && [ "$JAVA_MAJOR_VERSION" -ne "17" ] && [ "$JAVA_MAJOR_VERSION" -ne "19" ]) || \ +if ([ "$JAVA_MAJOR_VERSION" -ne "8" ] && [ "$JAVA_MAJOR_VERSION" -ne "11" ] && [ "$JAVA_MAJOR_VERSION" -ne "17" ] && [ "$JAVA_MAJOR_VERSION" -ne "19" ]) || \ ([ "$NODE_MAJOR_VERSION" -ne "14" ] && [ "$NODE_MAJOR_VERSION" -ne "16" ] && [ "$NODE_MAJOR_VERSION" -ne "18" ]) then echo "Java: ${JAVA_MAJOR_VERSION}, Node: ${NODE_MAJOR_VERSION} combination is not supported!" From c8e00bd4a745976d8c2dcaf28281a2c375860880 Mon Sep 17 00:00:00 2001 From: Young Yang Date: Thu, 29 Dec 2022 10:56:45 +0800 Subject: [PATCH 2/5] modified: .circleci/config.yml --- .circleci/config.yml | 129 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 126 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b5ec4b72..b3d8c191 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -52,7 +52,7 @@ jobs: command: | go mod vendor - run: cf login -a $CF_API -o $ORG -s $SPACE -u $TECH_USER -p $TECH_PASS - - run: cd integration && go test -tags=integration + - run: cd integration && go test -tags=integration compliance: docker: @@ -139,6 +139,102 @@ jobs: export GITHUB_TOKEN=${CLOUD_MTA_BOT_GITHUB_TOKEN} curl -sfL https://goreleaser.com/static/run | bash + publish-to-dockerhub-java8-node14: + docker: + - image: cimg/go:1.17 + working_directory: ~/go/src/github.com/young-yang03/cloud-mta-build-tool + steps: + - checkout + - setup_remote_docker: + version: 20.10.6 + - run: + name: build image pre-setup + command: | + #Make sure HEAD points to master + git checkout master + git fetch + git rebase + - run: + name: build Java 8.1.091 & Node 14.21.1 image + command: | + MBT_VERSION=$(cat ./VERSION) + sh $PWD/scripts/build_image 8.1.091 14.21.1 ${MBT_VERSION} + - run: + name: publish Java 8.1.091 & Node 14.21.1 image + command: | + MBT_VERSION=$(cat ./VERSION) + echo "Image release: ${MBT_VERSION}" + #Push to Docker Hub + echo "$DOCKER_HUB_TOKEN" | docker login --username $DOCKER_HUB_USER --password-stdin + sh $PWD/scripts/publish_image 8.1.091 14.21.1 ${MBT_VERSION} "cobra217" + #Push to GitHub Container Registry + echo "$CLOUD_MTA_BOT_GITHUB_TOKEN" | docker login "ghcr.io" --username $CLOUD_MTA_BOT_USER --password-stdin + sh $PWD/scripts/publish_image 8.1.091 14.21.1 ${MBT_VERSION} "ghcr.io/young-yang03" + + publish-to-dockerhub-java8-node16: + docker: + - image: cimg/go:1.17 + working_directory: ~/go/src/github.com/SAP/cloud-mta-build-tool + steps: + - checkout + - setup_remote_docker: + version: 20.10.6 + - run: + name: build image pre-setup + command: | + #Make sure HEAD points to master + git checkout master + git fetch + git rebase + - run: + name: build Java 8.1.091 & Node 16.18.1 image + command: | + MBT_VERSION=$(cat ./VERSION) + sh $PWD/scripts/build_image 8.1.091 16.18.1 ${MBT_VERSION} + - run: + name: publish Java 8.1.091 & Node 16.18.1 image + command: | + MBT_VERSION=$(cat ./VERSION) + echo "Image release: ${MBT_VERSION}" + #Push to Docker Hub + echo "$DOCKER_HUB_TOKEN" | docker login --username $DOCKER_HUB_USER --password-stdin + sh $PWD/scripts/publish_image 8.1.091 16.18.1 ${MBT_VERSION} "cobra217" + #Push to GitHub Container Registry + echo "$CLOUD_MTA_BOT_GITHUB_TOKEN" | docker login "ghcr.io" --username $CLOUD_MTA_BOT_USER --password-stdin + sh $PWD/scripts/publish_image 8.1.091 16.18.1 ${MBT_VERSION} "ghcr.io/young-yang03" + + publish-to-dockerhub-java8-node18: + docker: + - image: cimg/go:1.17 + working_directory: ~/go/src/github.com/SAP/cloud-mta-build-tool + steps: + - checkout + - setup_remote_docker: + version: 20.10.6 + - run: + name: build image pre-setup + command: | + #Make sure HEAD points to master + git checkout master + git fetch + git rebase + - run: + name: build Java 8.1.091 & Node 18.12.1 image + command: | + MBT_VERSION=$(cat ./VERSION) + sh $PWD/scripts/build_image 8.1.091 18.12.1 ${MBT_VERSION} + - run: + name: publish Java 8.1.091 & Node 18.12.1 image + command: | + MBT_VERSION=$(cat ./VERSION) + echo "Image release: ${MBT_VERSION}" + #Push to Docker Hub + echo "$DOCKER_HUB_TOKEN" | docker login --username $DOCKER_HUB_USER --password-stdin + sh $PWD/scripts/publish_image 8.1.091 18.12.1 ${MBT_VERSION} "cobra217" + #Push to GitHub Container Registry + echo "$CLOUD_MTA_BOT_GITHUB_TOKEN" | docker login "ghcr.io" --username $CLOUD_MTA_BOT_USER --password-stdin + sh $PWD/scripts/publish_image 8.1.091 18.12.1 ${MBT_VERSION} "ghcr.io/young-yang03" + publish-to-dockerhub-java11-node14: docker: - image: cimg/go:1.17 @@ -157,8 +253,8 @@ jobs: - run: name: build Java 11.0.17 & Node 14.21.1 image command: | - MBT_VERSION=$(cat ./VERSION) - sh $PWD/scripts/build_image 11.0.17 14.21.1 ${MBT_VERSION} + MBT_VERSION=$(cat ./VERSION) + sh $PWD/scripts/build_image 11.0.17 14.21.1 ${MBT_VERSION} - run: name: publish Java 11.0.17 & Node 14.21.1 image command: | @@ -553,6 +649,30 @@ workflows: only: /release/ branches: ignore: /.*/ + - publish-to-dockerhub-java8-node14: + requires: + - publish-to-npm + filters: + tags: + only: /release/ + branches: + ignore: /.*/ + - publish-to-dockerhub-java8-node16: + requires: + - publish-to-npm + filters: + tags: + only: /release/ + branches: + ignore: /.*/ + - publish-to-dockerhub-java8-node18: + requires: + - publish-to-npm + filters: + tags: + only: /release/ + branches: + ignore: /.*/ - publish-to-dockerhub-java11-node14: requires: - publish-to-npm @@ -627,6 +747,9 @@ workflows: ignore: /.*/ - remove-github-release-tag: requires: + - publish-to-dockerhub-java8-node14 + - publish-to-dockerhub-java8-node16 + - publish-to-dockerhub-java8-node18 - publish-to-dockerhub-java11-node14 - publish-to-dockerhub-java11-node16 - publish-to-dockerhub-java11-node18 From b3ea0b94387d71af5ac4e4952a133f0a78328619 Mon Sep 17 00:00:00 2001 From: Young Yang Date: Fri, 20 Jan 2023 10:56:51 +0800 Subject: [PATCH 3/5] modified: Dockerfile_mbtci_template --- Dockerfile_mbtci_template | 51 ++++++++++++++------------------------- 1 file changed, 18 insertions(+), 33 deletions(-) diff --git a/Dockerfile_mbtci_template b/Dockerfile_mbtci_template index cfc1c9e7..06bed7e1 100644 --- a/Dockerfile_mbtci_template +++ b/Dockerfile_mbtci_template @@ -6,25 +6,16 @@ ARG MTA_USER_HOME="/home/${MTA_USER}" ARG MBT_VERSION=1.2.21 ARG GO_VERSION=1.19.3 ARG NODE_VERSION=NODE_VERSION_TEMPLATE -ARG MAVEN_VERSION=3.8.6 +ARG MAVEN_VERSION=3.8.7 ARG MAVEN_BASE_URL=https://downloads.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries ARG SAPMACHINE_VERSION=JAVA_VERSION_TEMPLATE # Environment variables ENV PYTHON /usr/bin/python3 - +ENV JAVA_HOME /opt/jdk ENV MAVEN_HOME /usr/share/maven ENV M2_HOME ${MAVEN_HOME} -ENV JAVA_HOME /opt/jdk -ENV PATH $PATH:$MAVEN_HOME/bin:${JAVA_HOME}/bin - -ENV NODE_HOME /usr/local/nodejs -ENV PATH $PATH:${NODE_HOME}/bin - -ENV GOPATH /go -ENV GO_HOME /usr/local/go -ENV PATH $GOPATH/bin:$GO_HOME/bin:$PATH - +ENV PATH /usr/local/go/bin:$PATH ENV CGO_ENABLED=0 ENV GOOS=linux ENV DEBIAN_FRONTEND=noninteractive @@ -82,15 +73,14 @@ RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \ gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \ gpg --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys "$key" ; \ done \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-${GOOS}-${ARCH}.tar.xz" \ + && curl -fsSLO --compressed "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${ARCH}.tar.xz" \ && curl -fsSLO --compressed "https://nodejs.org/dist/v${NODE_VERSION}/SHASUMS256.txt.asc" \ && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ - && grep " node-v${NODE_VERSION}-${GOOS}-${ARCH}.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ - && mkdir -p ${NODE_HOME} \ - && tar -xJf "node-v${NODE_VERSION}-${GOOS}-${ARCH}.tar.xz" -C ${NODE_HOME} --strip-components=1 \ - && chmod --recursive a+w "${NODE_HOME}" \ - && ln -s "${NODE_HOME}/bin/node" "${NODE_HOME}/bin/nodejs" \ - && rm -rf "$GNUPGHOME" "node-v${NODE_VERSION}-${GOOS}-${ARCH}.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ + && grep " node-v${NODE_VERSION}-linux-${ARCH}.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ + && tar -xJf "node-v${NODE_VERSION}-linux-${ARCH}.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ + && chown -R ${MTA_USER}:${MTA_USER} /usr/local/bin \ + && chown -R ${MTA_USER}:${MTA_USER} /usr/local/lib/node_modules \ + && rm -rf "$GNUPGHOME" "node-v${NODE_VERSION}-linux-${ARCH}.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ && apt-mark auto '.*' > /dev/null \ && find /usr/local -type f -executable -exec ldd '{}' ';' \ | awk '/=>/ { print $(NF-1) }' \ @@ -100,6 +90,7 @@ RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \ | sort -u \ | xargs -r apt-mark manual \ && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ + && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ # smoke tests && echo "node ${NODE_VERSION} install smoke tests!" \ && node --version \ @@ -147,11 +138,7 @@ RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \ && curl -fsSLO --compressed https://storage.googleapis.com/golang/go${GO_VERSION}.${GOOS}-${ARCH}.tar.gz \ && curl -fsSLO --compressed https://storage.googleapis.com/golang/go${GO_VERSION}.${GOOS}-${ARCH}.tar.gz.asc \ && gpg --batch --verify go${GO_VERSION}.${GOOS}-${ARCH}.tar.gz.asc go${GO_VERSION}.${GOOS}-${ARCH}.tar.gz \ - && mkdir -p ${GO_HOME} \ - && tar -xvf go${GO_VERSION}.${GOOS}-${ARCH}.tar.gz -C ${GO_HOME} --strip-components=1 \ - && mkdir -p ${GOPATH} \ - && ln -s ${GO_HOME} ${GOPATH} \ - && chmod -R 777 ${GOPATH} \ + && tar -xvf go${GO_VERSION}.${GOOS}-${ARCH}.tar.gz -C /usr/local \ && rm -rf "$GNUPGHOME" go${GO_VERSION}.${GOOS}-${ARCH}.tar.gz go${GO_VERSION}.${GOOS}-${ARCH}.tar.gz.asc \ && apt-get remove --purge --autoremove -y ca-certificates curl gnupg dirmngr \ # smoke test @@ -186,7 +173,6 @@ RUN sapmachine_install() { \ ln -s /usr/lib/jvm/sapmachine-${SAPMACHINE_MAJOR_VERSION} ${JAVA_HOME}; \ }; \ sapjvm_install() { \ - SAPMACHINE_MAJOR_VERSION=$(echo ${SAPMACHINE_VERSION} | cut -d. -f1); \ ARCH=; \ dpkgArch="$(dpkg --print-architecture)"; \ case "${dpkgArch##*-}" in \ @@ -197,14 +183,12 @@ RUN sapmachine_install() { \ 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}-${GOOS}-${ARCH}.zip; \ - # Notice to modify, download the sha1 value auto - echo "583dedfeee0c119839a610ddc8c6768d0c044429 sapjvm-${SAPMACHINE_VERSION}-${GOOS}-${ARCH}.zip" | sha1sum -c -; \ - bsdtar -xvf sapjvm-${SAPMACHINE_VERSION}-${GOOS}-${ARCH}.zip -C /usr/local; \ - chown root:root /usr/local/sapjvm_${SAPMACHINE_MAJOR_VERSION}; \ - rm -f sapjvm-${SAPMACHINE_VERSION}-${GOOS}-${ARCH}.zip; \ + 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/sapjvm_${SAPMACHINE_MAJOR_VERSION} ${JAVA_HOME}; \ + ln -s /usr/local ${JAVA_HOME}; \ } \ && set -ex \ && if [ $(echo ${SAPMACHINE_VERSION} | cut -d. -f1) -le 8 ]; then \ @@ -235,6 +219,7 @@ RUN set -ex \ && tar -xzf apache-maven-${MAVEN_VERSION}-bin.tar.gz -C ${MAVEN_HOME} --strip-components=1 \ && rm -rf "$GNUPGHOME" apache-maven-${MAVEN_VERSION}-bin.tar.gz.asc apache-maven-${MAVEN_VERSION}-bin.tar.gz \ && chmod -R a+w ${MAVEN_HOME}/conf/* \ + && ln -s ${MAVEN_HOME}/bin/mvn /usr/bin/mvn \ && apt-get remove --purge --autoremove -y ca-certificates curl gnupg dirmngr \ # smoke test && echo "mvn ${MAVEN_VERSION} install smoke test!" \ @@ -242,7 +227,7 @@ RUN set -ex \ # Install MBT RUN set -ex \ - && npm install --prefix /usr/local/ --unsafe-perm -g @young-yang217/mbt@${MBT_VERSION} \ + && npm install -g --unsafe-perm mbt@${MBT_VERSION} \ && npm cache clean -g --force \ # smoke test && echo "mbt ${MBT_VERSION} install smoke test!" \ From c449c37d3318ae82808dd931157c37c0315b41c5 Mon Sep 17 00:00:00 2001 From: Young Yang Date: Tue, 31 Jan 2023 17:36:11 +0800 Subject: [PATCH 4/5] modified: Dockerfile_mbtci_template --- Dockerfile_mbtci_template | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile_mbtci_template b/Dockerfile_mbtci_template index 06bed7e1..5e40667f 100644 --- a/Dockerfile_mbtci_template +++ b/Dockerfile_mbtci_template @@ -78,8 +78,6 @@ RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \ && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ && grep " node-v${NODE_VERSION}-linux-${ARCH}.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ && tar -xJf "node-v${NODE_VERSION}-linux-${ARCH}.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ - && chown -R ${MTA_USER}:${MTA_USER} /usr/local/bin \ - && chown -R ${MTA_USER}:${MTA_USER} /usr/local/lib/node_modules \ && rm -rf "$GNUPGHOME" "node-v${NODE_VERSION}-linux-${ARCH}.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ && apt-mark auto '.*' > /dev/null \ && find /usr/local -type f -executable -exec ldd '{}' ';' \ From 53ad2d7cdc2ab2bd9328c3fc20525b549b54e71c Mon Sep 17 00:00:00 2001 From: Young Yang Date: Tue, 7 Feb 2023 14:39:04 +0800 Subject: [PATCH 5/5] modified: Dockerfile_mbtci_template modified: test/goss/goss_template.yaml --- Dockerfile_mbtci_template | 9 ++++++++- test/goss/goss_template.yaml | 17 +++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/Dockerfile_mbtci_template b/Dockerfile_mbtci_template index 5e40667f..08a87c77 100644 --- a/Dockerfile_mbtci_template +++ b/Dockerfile_mbtci_template @@ -241,6 +241,13 @@ RUN set -ex \ && python2.7 --version \ && python3 --version -ENV PATH=$PATH:./node_modules/.bin HOME=${MTA_USER_HOME} +# Allow global npm packages install without sudo +RUN set -ex \ + && mkdir ${MTA_USER_HOME}/.npm-global \ + && mkdir ${MTA_USER_HOME}/.npm-global/lib \ + && chown -R ${MTA_USER}:${MTA_USER} ${MTA_USER_HOME} +ENV NPM_CONFIG_PREFIX ${MTA_USER_HOME}/.npm-global + +ENV PATH=$PATH:./node_modules/.bin:${MTA_USER_HOME}/.npm-global/bin WORKDIR /project USER ${MTA_USER} \ No newline at end of file diff --git a/test/goss/goss_template.yaml b/test/goss/goss_template.yaml index 1c214061..480f7e4d 100644 --- a/test/goss/goss_template.yaml +++ b/test/goss/goss_template.yaml @@ -9,8 +9,6 @@ package: installed: true python3: installed: true - make: - installed: true user: mta: exists: true @@ -41,6 +39,15 @@ command: exit-status: 0 stdout: - vNODE_VERSION_TEMPLATE + # verify installed UI5 + ui5 --version: + exit-status: 0 + # verify installed grunt + grunt --version: + exit-status: 0 + # verify installed go + go version: + exit-status:0 # verify NPM @sap-scope registry NOT configured npm config get @sap:registry: exit-status: 0 @@ -54,3 +61,9 @@ command: cd ~ && npm install @sap/cds: exit-status: 0 timeout: 50000 + cd ~ && npm install -g @sap/cds: + exit-status: 0 + timeout: 50000 + cd ~ && npm link @sap/cds --local: + exit-status: 0 + timeout: 50000