# Stop on error; show output
set -e -x
-# This reuses the docker-compose file
+# This reuses the docker-compose environment file
echo "Set image tag name variables"
source $(dirname $0)/.env
+if [ $1 ]; then
+ echo "Sourcing extra parameters from $1"
+ source $(dirname $0)/$1
+else
+ echo "Using only base parameters from .env"
+fi
-# Work standalone AND in the ONAP Jenkins.
+# Check for Jenkins build number
+if [ -n "$BUILD_NUMBER" ]; then
+ export PORTAL_TAG=$BUILD_NUMBER
+ echo "Using Jenkins build number $BUILD_NUMBER; Docker Tag $PORTAL_TAG"
+else
+ # This indicates a non-Jenkins build
+ export BUILD_NUMBER="999"
+ echo "Using Default build number $BUILD_NUMBER; Docker Tag $PORTAL_TAG"
+
+fi
+
+# Must work when called by ONAP Jenkins AND local builds.
# Pick up Jenkins settings for this script.
# Use -B for batch operation to skip download progress output
if [ -n "$MVN" ]; then
- export MVN="${MVN} -B -gs ${GLOBAL_SETTINGS_FILE} -s ${SETTINGS_FILE}"
+ export MVN="${MVN} -B -gs ${GLOBAL_SETTINGS_FILE} -s ${SETTINGS_FILE} -Dbuild.number=$BUILD_NUMBER"
else
# Force refresh of snapshots
- MVN="mvn -B -U"
+ MVN="mvn -B -U -Dbuild.number=$BUILD_NUMBER"
fi
# This expects to start in the deliveries folder; make sure
-PORTAL_DOCKERFILE=Dockerfile.portalapps
-if [ ! -f $PORTAL_DOCKERFILE ] ; then
+if [ "$PORTAL_DOCKERFILE" != "skip"] && [ ! -f $PORTAL_DOCKERFILE ] ; then
echo "Failed to find file ${PORTAL_DOCKERFILE}; must start in deliveries folder; exiting"
exit 1
fi
# Store directory names as variables
-# This is the Docker Project area.
-DELIV="$(pwd)"
+# This is the deliveries area.
+DELIVDIR="$(pwd)"
# parent directory, for finding source projects
cd ..
-BASE="$(pwd)"
-cd $DELIV
+BASEDIR="$(pwd)"
+cd $DELIVDIR
# Relative path of temp directory
BUILD_REL="build"
# Absolute path of temp directory
-BUILD_ABS=$DELIV/$BUILD_REL
-rm -fr $BUILD_REL
-mkdir $BUILD_REL
+BUILD_ABS=$DELIVDIR/$BUILD_REL
-# Copy DDL/DML to required directories
+# Build Java projects.
+# (use env var toskip when debugging Docker build problems)
+if [ "$SKIP_JAVA_BUILD" = "please" ]; then
-# RELATIVE PATHS to local directories with database scripts
-# bcos Docker looks within this build area only
-SCR_BASE=$BUILD_REL/scripts
-PORTAL_SCRIPT_DIR=$SCR_BASE/ecomp-portal-DB-os
-SDK_SCRIPT_DIR=$SCR_BASE/epsdk-app-os
-mkdir -p ${PORTAL_SCRIPT_DIR} ${SDK_SCRIPT_DIR}
+ echo "SKIPPING JAVA BUILD!"
-# copy over DB scripts for the dockerfiles
-# Portal
-cp $BASE/ecomp-portal-DB-common/*.sql ${PORTAL_SCRIPT_DIR}
-cp $BASE/ecomp-portal-DB-os/*.sql ${PORTAL_SCRIPT_DIR}
-# SDK app
-cp $BASE/sdk/ecomp-sdk/epsdk-app-common/db-scripts/*.sql ${SDK_SCRIPT_DIR}
-cp $BASE/sdk/ecomp-sdk/epsdk-app-os/db-scripts/*.sql ${SDK_SCRIPT_DIR}
-
-# build database docker
-DB_DOCKER_CMD="
- docker build -t ${DB_IMG_NAME}:${PORTAL_TAG} ${PROXY_ARGS}
- --build-arg PORTAL_SCRIPT_DIR=${PORTAL_SCRIPT_DIR}
- --build-arg SDK_SCRIPT_DIR=${SDK_SCRIPT_DIR}
- -f Dockerfile.mariadb .
-"
-echo "Build mariadb docker image"
-$DB_DOCKER_CMD
-
-echo "Build all jar and war files in Portal"
-cd $BASE
-${MVN} clean install
-
-echo "Copy Portal app BE"
-cd $BASE/ecomp-portal-BE-os
-cp target/ecompportal-be-os.war $BUILD_ABS
-
-echo "Copy Portal app FE"
-cd $BASE/ecomp-portal-FE-os/
-cp -r dist/public $BUILD_ABS
-
-echo "Copy Portal widget-ms"
-cd $BASE/ecomp-portal-widget-ms
-cp widget-ms/target/widget-ms.jar $BUILD_ABS
-
-echo "Build and copy Portal-SDK app"
-cd $BASE/sdk/ecomp-sdk/epsdk-app-os
-${MVN} clean package
-cp target/epsdk-app-os.war $BUILD_ABS
+else
+ echo "Starting Java build."
+
+ # Clean out and recreate
+ rm -fr $BUILD_REL
+ mkdir $BUILD_REL
+
+ echo "Build jar and war files"
+ cd $BASEDIR
+ ${MVN} ${MVN_EXTRA_PORTAL} clean install
+
+ if [ "$SDK_DOCKERFILE" != "skip" ] && [ "SDK_APP_DIR" != "skip" ]; then
+ echo "Build Portal-SDK app"
+ cd $BASEDIR/$SDK_APP_DIR
+ ${MVN} ${MVN_EXTRA_SDK} clean package
+ fi
+
+ echo "Java build complete."
+fi
+
+if [ "$BE_DOCKERFILE" != "skip" ] || [ "PORTAL_DOCKERFILE" != "skip" ]; then
+ echo "Copy Portal app BE"
+ cp $BASEDIR/$BE_WAR_DIR/$BE_WAR_FILE $BUILD_ABS
+fi
+
+if [ "$FE_DOCKERFILE" != "skip" ] || [ "PORTAL_DOCKERFILE" != "skip" ]; then
+ echo "Copy Portal app FE"
+ cp -r $BASEDIR/$FE_DIR $BUILD_ABS
+fi
+
+if [ "$WMS_DOCKERFILE" != "skip" ]; then
+ echo "Copy Portal widget-ms"
+ cp $BASEDIR/$WIDGET_MS_JAR_DIR/$WIDGET_MS_JAR_FILE $BUILD_ABS
+fi
+
+if [ "$SDK_DOCKERFILE" != "skip" ] && [ "SDK_APP_DIR" != "skip" ]; then
+ echo "Copy Portal-SDK app build results"
+ cp $BASEDIR/$SDK_WAR_DIR/$SDK_WAR_FILE $BUILD_ABS
+fi
+
+# Build Docker images
PROXY_ARGS=""
if [ $HTTP_PROXY ]; then
PROXY_ARGS+=" --build-arg HTTPS_PROXY=${HTTPS_PROXY}"
fi
-echo "Build portal docker image"
-cd $DELIV
-PORTAL_DOCKER_CMD="
- docker build -t ${EP_IMG_NAME}:${PORTAL_TAG} ${PROXY_ARGS}
- --build-arg FE_DIR=$BUILD_REL/public
- --build-arg PORTAL_WAR=$BUILD_REL/ecompportal-be-os.war
- --build-arg SDK_WAR=$BUILD_REL/epsdk-app-os.war
- -f $PORTAL_DOCKERFILE .
-"
-$PORTAL_DOCKER_CMD
-
-echo "Bbuild widget-ms docker image"
-WMS_DOCKER_CMD="
- docker build -t ${WMS_IMG_NAME}:${PORTAL_TAG} ${PROXY_ARGS}
- --build-arg WMS_JAR=$BUILD_REL/widget-ms.jar
- -f Dockerfile.widgetms .
-"
-$WMS_DOCKER_CMD
+# must work in delivery directory
+cd $DELIVDIR
+
+if [ "$DB_DOCKERFILE" = "skip" ]; then
+ echo "SKIPPING DB DOCKER BUILD!"
+else
+# Copy DDL/DML to required directories
+# RELATIVE PATHS to local directories with database scripts
+# bcos Docker looks within this build area only
+ DB_SCRIPT_DIR=$BUILD_REL/db-scripts
+ mkdir -p ${DELIVDIR}/${DB_SCRIPT_DIR}
+# Portal
+ cp $BASEDIR/ecomp-portal-DB-common/*.sql ${DB_SCRIPT_DIR}
+ cp $BASEDIR/ecomp-portal-DB-os/*.sql ${DB_SCRIPT_DIR}
+# SDK app
+ cp $BASEDIR/sdk/ecomp-sdk/epsdk-app-common/db-scripts/*.sql ${DB_SCRIPT_DIR}
+ cp $BASEDIR/sdk/ecomp-sdk/epsdk-app-os/db-scripts/*.sql ${DB_SCRIPT_DIR}
+
+ echo "Build mariadb docker image"
+ DB_DOCKER_CMD="
+ docker build -t ${DB_IMG_NAME}:${PORTAL_TAG} ${PROXY_ARGS}
+ --build-arg DB_SCRIPT_DIR=${DB_SCRIPT_DIR}
+ -f $DB_DOCKERFILE .
+ "
+ $DB_DOCKER_CMD
+fi
+
+# Copy cassandra scripts to required directories
+# Portal
+#cp $BASEDIR/ecomp-portal-DB-common/*.cql ${DELIVDIR}
+# SDK app
+#cp $BASEDIR/sdk/ecomp-sdk/epsdk-app-common/db-scripts/*.cql ${DELIVDIR}
+
+# Build Docker Images
+
+#Combined FE/BE image
+if [ "$PORTAL_DOCKERFILE" = "skip" ]; then
+ echo "SKIPPING PORTAL DOCKER IMAGE BUILD!"
+else
+ echo "Build portal docker image"
+ PORTAL_DOCKER_CMD="
+ docker build -t ${EP_IMG_NAME}:${PORTAL_TAG} ${PROXY_ARGS}
+ --build-arg FE_DIR=$BUILD_REL/public
+ --build-arg PORTAL_WAR=$BUILD_REL/$BE_WAR_FILE
+ --build-arg SERVERXML=${SERVER_XML_DIR}/server.xml
+ --build-arg PORTALCONTEXT=$PORTALCONTEXT
+ -f $PORTAL_DOCKERFILE .
+ "
+ $PORTAL_DOCKER_CMD
+fi
+
+if [ "$SDK_DOCKERFILE" = "skip" ]; then
+ echo "SKIPPING SDK DOCKER IMAGE BUILD!"
+else
+ echo "Build sdk demo app docker image"
+ SDK_DOCKER_CMD="
+ docker build -t ${SDK_IMG_NAME}:${PORTAL_TAG} ${PROXY_ARGS}
+ --build-arg SDK_WAR=$BUILD_REL/$SDK_WAR_FILE
+ --build-arg SDKCONTEXT=$SDKCONTEXT
+ -f $SDK_DOCKERFILE .
+ "
+ $SDK_DOCKER_CMD
+fi
+
+if [ "$BE_DOCKERFILE" = "skip" ]; then
+ echo "SKIPPING BE DOCKER IMAGE BUILD!"
+else
+ echo "Build portal be image"
+ BE_DOCKER_CMD="
+ docker build -t ${BE_IMG_NAME}:${PORTAL_TAG} ${PROXY_ARGS}
+ --build-arg PORTAL_WAR=$BUILD_REL/$BE_WAR_FILE
+ --build-arg SERVERXML=${SERVER_XML_DIR}/server.xml
+ --build-arg PORTALCONTEXT=$PORTALCONTEXT
+ --build-arg BE_BASE_IMAGE=$BE_BASE_IMAGE
+ -f $BE_DOCKERFILE .
+ "
+ $BE_DOCKER_CMD
+fi
+
+if [ "$FE_DOCKERFILE" = "skip" ]; then
+ echo "SKIPPING FE DOCKER IMAGE BUILD!"
+else
+ echo "Build portal fe image"
+ FE_DOCKER_CMD="
+ docker build -t ${FE_IMG_NAME}:${PORTAL_TAG} ${PROXY_ARGS}
+ --build-arg FE_DIR=$BUILD_REL/public
+ --build-arg FECONTEXT=$FECONTEXT
+ --build-arg FE_BASE_IMAGE=$FE_BASE_IMAGE
+ -f $FE_DOCKERFILE .
+ "
+ $FE_DOCKER_CMD
+fi
+
+if [ "$WMS_DOCKERFILE" = "skip" ]; then
+ echo "SKIPPING WIDGET-MS DOCKER IMAGE BUILD!"
+else
+ echo "Build widget-ms docker image"
+ WMS_DOCKER_CMD="
+ docker build -t ${WMS_IMG_NAME}:${PORTAL_TAG} ${PROXY_ARGS}
+ --build-arg WMS_JAR=$BUILD_REL/$WIDGET_MS_JAR_FILE
+ -f Dockerfile.widgetms .
+ "
+ $WMS_DOCKER_CMD
+fi
# For ease of debugging, leave the build dir
# echo "Cleaning up"