Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MBT Java 8 Docker Image #1023

Merged
merged 6 commits into from
Feb 7, 2023
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
81 changes: 55 additions & 26 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
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