blob: fb68caaeb61c7cb019ac426dc775efde259710ee [file] [log] [blame]
#!/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
set -eo pipefail
if [ -z "$BATCH_MODE_FLAG" ] || [ "$BATCH_MODE_FLAG" != "off" ]; then
BATCH_MODE=--batch-mode
fi
# possible modes are
# push ... push docker images to dockerhub
# tar ... build docker images and save them locally as tar files
# skip ... skip docker image build steps
case $JIB_MODE in
"push") JIB_CMD="build" ;;
"tar") JIB_CMD="buildTar" ;;
*) JIB_CMD="skip" ;;
esac
# possible modes are
# attach ... enables the 'source' profile, which brings in the maven-source-plugin
# (else) ... explicitly ensure that maven-source-plugin is disabled. (in case maven-source-plugin is included by some other means)
# this is a bit belt-n-braces
case $SOURCE_MODE in
"attach") SOURCE_MODE_OPTS="-Dsources" ;;
"*") SOURCE_MODE_OPTS="-Dmaven.source.skip=true" ;;
esac
SCRIPT_DIR=$( dirname "$0" )
if [ -z "$PROJECT_ROOT_PATH" ]; then
PROJECT_ROOT_PATH=`cd $SCRIPT_DIR/../.. ; pwd`
fi
if [ -z "$MVN_STAGES" ]; then
MVN_STAGES="clean install"
fi
if [ -z "$SETTINGS_XML" ]; then
SETTINGS_XML=$PROJECT_ROOT_PATH/.m2/settings.xml
fi
bash $SCRIPT_DIR/_print-environment.sh "build-artifacts"
### FUNCTIONS
function buildDependency() {
local dir=${1}
cd $PROJECT_ROOT_PATH/${dir}
mvn --batch-mode \
install \
-Dskip.git \
-Dskip.arch \
-DskipTests \
| fgrep --line-buffered -v "CP: " \
| fgrep --line-buffered -v "^Progress (1)" \
| fgrep --line-buffered -v "Downloading from central" \
| fgrep --line-buffered -v "Downloaded from central" \
| fgrep --line-buffered -v "Downloading from DataNucleus_2" \
| fgrep --line-buffered -v "Downloaded from DataNucleus_2" \
| fgrep --line-buffered -v "[INFO] --- maven-enforcer-plugin" \
| fgrep --line-buffered -v "[INFO] --- maven-site-plugin" \
| fgrep --line-buffered -v "[INFO] <<< maven-source-plugin:" \
| fgrep --line-buffered -v "[INFO] >>> maven-source-plugin" \
| fgrep --line-buffered -v "[INFO] Installing" \
| fgrep --line-buffered -v "[INFO] Copying" \
| fgrep --line-buffered -v "[INFO] No site descriptor found: nothing to attach." \
| fgrep --line-buffered -v "[INFO] Skipping because packaging 'jar' is not pom."
}
function buildDockerImage() {
local dir=${1}
cd $PROJECT_ROOT_PATH/${dir}
echo ""
echo ""
echo ">>> $PROJECT_ROOT_PATH/${dir}: mvn compile jib:$JIB_CMD $JIB_ADDITIONAL_OPTS ..."
echo ""
echo ""
mvn --batch-mode \
compile jib:$JIB_CMD \
$JIB_ADDITIONAL_OPTS \
-Dmaven.source.skip=true \
-Dskip.git \
-Dskip.arch \
-DskipTests
}
### MAIN
if [ ! -z "$REVISION" ]; then
# backup the supplemental-model artifact pom, as it must be fixed at version 1.0
# as referenced from the bom via a hardcoded version
echo "backup the supplemental-model artifact pom before version:set"
cd $PROJECT_ROOT_PATH
cp supplemental-model/pom.xml supplemental-model/pom.xml~
echo ""
echo ""
echo ">>> mvn versions:set -DnewVersion=$REVISION ..."
echo ""
echo ""
cd $PROJECT_ROOT_PATH
mvn versions:set \
-DprocessAllModules \
-DnewVersion=$REVISION \
-Dmodule-all \
| fgrep --line-buffered -v "^Progress (1)" \
| fgrep --line-buffered -v "Downloading from central" \
| fgrep --line-buffered -v "Downloaded from central" \
| fgrep --line-buffered -v "Downloading from DataNucleus_2" \
| fgrep --line-buffered -v "Downloaded from DataNucleus_2"
# restore the supplemental-model artifact pom, as it must be fixed at version 1.0
# as referenced from the bom via a hardcoded version
echo "restore the supplemental-model artifact pom after version:set"
cd $PROJECT_ROOT_PATH
mv supplemental-model/pom.xml~ supplemental-model/pom.xml
echo ""
echo ""
echo ">>> sed'ing version in starters and parent ..."
echo ""
echo ""
cd $PROJECT_ROOT_PATH/starters
CURR=$(grep "<version>" pom.xml | head -1 | cut -d'>' -f2 | cut -d'<' -f1)
sed -i "s|<version>$CURR</version>|<version>$REVISION</version>|g" pom.xml
# -- debug the version rewriting --
# 1) add an exit statement after the fi below
# exit 0
# 2) run this script from project root via:
# export REVISION=1.9.0-SNAPSHOT ; export JIB_MODE=tar ; bash scripts/ci/build-artifacts.sh
# 3) then inspect the pom files with following command:
# find . -name "pom.xml" | xargs grep '<version>.*-SNAPSHOT</version>'
fi
cd $PROJECT_ROOT_PATH
echo ""
echo ""
echo ">>> ${PROJECT_ROOT_PATH}: mvn -s $SETTINGS_XML $BATCH_MODE $SOURCE_MODE_OPTS -T1C $MVN_STAGES $MVN_ADDITIONAL_OPTS $*"
echo ""
echo ""
mvn -s $SETTINGS_XML \
$BATCH_MODE \
$SOURCE_MODE_OPTS \
-T1C \
$MVN_STAGES \
$MVN_ADDITIONAL_OPTS \
$* \
| fgrep --line-buffered -v "^Progress (1)" \
| fgrep --line-buffered -v "Downloading from central" \
| fgrep --line-buffered -v "Downloaded from central" \
| fgrep --line-buffered -v "Downloading from DataNucleus_2" \
| fgrep --line-buffered -v "Downloaded from DataNucleus_2" \
| fgrep --line-buffered -v "[INFO] --- maven-enforcer-plugin" \
| fgrep --line-buffered -v "[INFO] --- maven-site-plugin" \
| fgrep --line-buffered -v "[INFO] <<< maven-source-plugin:" \
| fgrep --line-buffered -v "[INFO] >>> maven-source-plugin" \
| fgrep --line-buffered -v "[INFO] Installing" \
| fgrep --line-buffered -v "[INFO] Copying" \
| fgrep --line-buffered -v "[INFO] No site descriptor found: nothing to attach." \
| fgrep --line-buffered -v "[INFO] Skipping because packaging 'jar' is not pom."
# now build the individual docker images
#if [ "$JIB_CMD" != "skip" ]; then
# buildDockerImage examples/demo/wicket/jdo
# buildDockerImage examples/demo/wicket/jpa
#fi
if [ ! -z "$REVISION" ] && [ "$REV_REVERT_FLAG" != "off" ]; then
cd $PROJECT_ROOT_PATH
echo ""
echo ""
echo ">>> mvn versions:revert ..."
echo ""
echo ""
mvn versions:revert \
-DprocessAllModules \
-Dmodule-all \
| fgrep --line-buffered -v "^Progress (1)" \
| fgrep --line-buffered -v "Downloading from central" \
| fgrep --line-buffered -v "Downloaded from central" \
| fgrep --line-buffered -v "Downloading from DataNucleus_2" \
| fgrep --line-buffered -v "Downloaded from DataNucleus_2"
echo ""
echo ""
echo ">>> sed'ing to revert version in starters and parent ..."
echo ""
echo ""
cd $PROJECT_ROOT_PATH/starters
sed -i "s|<version>$REVISION</version>|<version>$CURR</version>|g" pom.xml
fi
cd $PROJECT_ROOT_PATH