Skip to content

Commit

Permalink
Merge branch 'master' into patch-1
Browse files Browse the repository at this point in the history
  • Loading branch information
jerome-benoit authored Feb 7, 2023
2 parents 173e6d4 + c2cdc91 commit e90da16
Show file tree
Hide file tree
Showing 12 changed files with 223 additions and 43 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/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 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} "devxci"
#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/sap"
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} "devxci"
#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/sap"
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} "devxci"
#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/sap"
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
92 changes: 64 additions & 28 deletions Dockerfile_mbtci_template
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@ FROM debian:bullseye-slim
# Build time arguments
ARG MTA_USER="mta"
ARG MTA_USER_HOME="/home/${MTA_USER}"
ARG MBT_VERSION=1.2.21
ARG MBT_VERSION=1.2.23
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 VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.2.21
1.2.23
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 configs/version.yaml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
cli_version: 1.2.21
cli_version: 1.2.23
makefile_version: 0.0.1
11 changes: 9 additions & 2 deletions docs/docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ If the MTA Build Tool encounters a module type in the `mta.yaml` file that is no

All resource definitions are passed to the `mtad.yaml` file as is without mapping and validations (for example, if the resource is supported in the target platform or if the specified parameters match the type).

### <b>Creating an MTA Archive According to the MTA Deploymnet Descriptor (`mtad.yaml` file)</b>
### <b>Creating an MTA Archive According to the MTA Deployment Descriptor (`mtad.yaml` file)</b>

The function is provided to assemble multiple modules, which are developed and prebuilt as separate projects, into one MTAR for deployment. The function is implemented by the `mbt assemble` command, which copies all modules, module required dependencies, module build artifacts, and resource definitions into an MTAR, according to the MTA Deployment Descriptor (mtad.yaml file).

If a module doesn’t have the `path` attribute, the assemble process skips it. If a module has the `path` attribute, but its value is invalid, the assemble process fails with the following error: `ERROR could not copy MTA artifacts to assemble: the "<path value>" path does not exist in the MTA project location`.

If a required dependency or resource doesn’t have the `parameters.path` attribute, the assemble process skips it. If a required dependency or resource has the `parameters.path` attribute, but its value is invalid, the assemble process fails with the following error: `ERROR could not copy MTA artifacts to assemble: the "<parameters.path value>" path does not exist in the MTA project location`.

For more details about how to use the MBT assemble command, see [How to build an MTA archive from the modules' build artifacts](https://github.com/SAP/cloud-mta-build-tool/blob/master/docs/docs/usage.md#how-to-build-an-mta-archive-from-the-modules-build-artifacts).

Under construction
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
2 changes: 1 addition & 1 deletion internal/version/version_cfg.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package version

// VersionConfig - do not edit
var VersionConfig = []byte{0x63, 0x6c, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, 0x32, 0x2e, 0x32, 0x31, 0xa, 0x6d, 0x61, 0x6b, 0x65, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0xa}
var VersionConfig = []byte{0x63, 0x6c, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, 0x32, 0x2e, 0x32, 0x33, 0xa, 0x6d, 0x61, 0x6b, 0x65, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0xa}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mbt",
"version": "1.2.21",
"version": "1.2.23",
"description": "[![CircleCI](https://circleci.com/gh/SAP/cloud-mta-build-tool.svg?style=svg&circle-token=ecedd1dce3592adcd72ee4c61481972c32dcfad7)](https://circleci.com/gh/SAP/cloud-mta-build-tool) [![Go Report Card](https://goreportcard.com/badge/github.com/SAP/cloud-mta-build-tool)](https://goreportcard.com/report/github.com/SAP/cloud-mta-build-tool) [![Coverage Status](https://coveralls.io/repos/github/SAP/cloud-mta-build-tool/badge.svg?branch=cover)](https://coveralls.io/github/SAP/cloud-mta-build-tool?branch=cover) ![GitHub license](https://img.shields.io/badge/license-Apache_2.0-blue.svg) ![pre-alpha](https://img.shields.io/badge/Release-pre--alpha-orange.svg)",
"main": "index.js",
"files": [
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
Loading

0 comments on commit e90da16

Please sign in to comment.