Skip to content

Commit

Permalink
MBT Java 8 Docker Image (#1023)
Browse files Browse the repository at this point in the history
* modified:   Dockerfile_mbtci_template
	modified:   cmd/testdata/mtahtml5/mta.sh
	modified:   integration/testdata/mtahtml5/mta.sh
	modified:   scripts/build_image
	modified:   scripts/common_image

* modified:   .circleci/config.yml

* modified:   Dockerfile_mbtci_template

* modified:   Dockerfile_mbtci_template

* modified:   Dockerfile_mbtci_template
	modified:   test/goss/goss_template.yaml

---------

Co-authored-by: Young Yang <[email protected]>
  • Loading branch information
young-yang03 and Young Yang authored Feb 7, 2023
1 parent 555577f commit 7cf7979
Show file tree
Hide file tree
Showing 7 changed files with 209 additions and 36 deletions.
129 changes: 126 additions & 3 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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
Expand All @@ -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: |
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
90 changes: 63 additions & 27 deletions Dockerfile_mbtci_template
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ 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 PATH /usr/local/go/bin:$PATH
Expand Down Expand Up @@ -72,12 +73,12 @@ 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}-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-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}-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 \
&& apt-mark auto '.*' > /dev/null \
&& find /usr/local -type f -executable -exec ldd '{}' ';' \
| awk '/=>/ { print $(NF-1) }' \
Expand Down Expand Up @@ -143,31 +144,59 @@ 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() { \
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-$(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 \
Expand Down Expand Up @@ -212,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}
2 changes: 1 addition & 1 deletion cmd/testdata/mtahtml5/mta.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion integration/testdata/mtahtml5/mta.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion scripts/build_image
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion scripts/common_image
Original file line number Diff line number Diff line change
Expand Up @@ -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!"
Expand Down
17 changes: 15 additions & 2 deletions test/goss/goss_template.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ package:
installed: true
python3:
installed: true
make:
installed: true
user:
mta:
exists: true
Expand Down Expand Up @@ -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
Expand All @@ -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

0 comments on commit 7cf7979

Please sign in to comment.