#!/bin/bash # Builds Portal, Portal-SDK and DMaaP-BC webapps; # then packages all into a docker. # Prereq: all three projects have been cloned from git. # Expects to be invoked with CWD=portal/deliveries # Caches files in local directory for docker build. # Stop on error; show output set -e -x # For debugging only bcox the FE build takes a long time SKIPFE=N if [ $# -gt 0 -a "$1" == "skipfe" ] ; then echo "Skipping Portal-FE build step" SKIPFE=Y fi # Establish environment variables echo "Set variables" source $(dirname $0)/os_settings.sh # Work standalone AND in the ONAP Jenkins. # 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}" else MVN=mvn fi # This expects to start in the deliveries folder; make sure DOCKERFILE=Dockerfile.portalapps if [ ! -f $DOCKERFILE ] ; then echo "Failed to find expected file; must start in deliveries folder" exit 1 fi # Establish directories and variables DELIV="$(pwd)" # Relative path of temp directory BUILD="build" # Absolute path of temp directory OUT=$DELIV/$BUILD if [ $SKIPFE == "Y" ]; then echo "Skipping clean/recreate of $OUT" else rm -fr $OUT mkdir $OUT fi # parent directory cd .. BASE="$(pwd)" # Copy DDL/DML to required directories (old scripts use long path /PROJECT/...) cd $DELIV rm -fr PROJECT # copy over DB scripts for the dockerfiles # forgive the ugly trick with the .. at end. mkdir -p ${SCRIPT_COMMON_DIR} && cp -r $BASE/ecomp-portal-DB-common ${SCRIPT_COMMON_DIR}/.. mkdir -p ${SCRIPT_DIR} && cp -r $BASE/ecomp-portal-DB-os ${SCRIPT_DIR}/.. mkdir -p ${SDK_COMMON_SCRIPT_DIR} && cp -r $BASE/sdk/ecomp-sdk/epsdk-app-common/db-scripts ${SDK_COMMON_SCRIPT_DIR}/.. mkdir -p ${SDK_SCRIPT_DIR} && cp -r $BASE/sdk/ecomp-sdk/epsdk-app-os/db-scripts ${SDK_SCRIPT_DIR}/.. # Build complete database script for DBC DBCA_OPEN_SD=$BASE/dmaapbc/dcae_dmaapbc_webapp/dbca-os/db-scripts DBCA_COMM_SD=$BASE/dmaapbc/dcae_dmaapbc_webapp/dbca-common/db-scripts # Old scripts expect this path mkdir -p $DBC_SCRIPT_DIR cat $DBCA_OPEN_SD/dbca-create-mysql-1707-os.sql $DBCA_COMM_SD/dbca-ddl-mysql-1707-common.sql $DBCA_OPEN_SD/dbca-dml-mysql-1707-os.sql > $DBC_SCRIPT_DIR/dbca-complete-mysql-1707-os.sql cd $BASE/ecomp-portal-BE-common ${MVN} clean install cd $BASE/ecomp-portal-BE-os ${MVN} clean package cp target/ecompportal-be-os.war $OUT cd $BASE/ecomp-portal-FE-os/ if [ $SKIPFE == "Y" ]; then echo "Skipping MVN in $(pwd)" else ${MVN} clean package cp -r dist/public $OUT fi cd $BASE/sdk/ecomp-sdk/epsdk-app-os ${MVN} clean package cp target/epsdk-app-os.war $OUT cd $BASE/dmaapbc/dcae_dmaapbc_webapp ${MVN} clean package cp dbca-os/target/dmaap-bc-app-os.war $OUT PROXY_ARGS="" if [ $HTTP_PROXY ]; then PROXY_ARGS+="--build-arg HTTP_PROXY=${HTTP_PROXY}" fi if [ $HTTPS_PROXY ]; then PROXY_ARGS+=" --build-arg HTTPS_PROXY=${HTTPS_PROXY}" fi # build portal docker cd $DELIV PORTAL_DOCKER_CMD=" docker build -t ${EP_IMG_NAME} ${PROXY_ARGS} --build-arg FE_DIR=$BUILD/public --build-arg PORTAL_WAR=$BUILD/ecompportal-be-os.war --build-arg SDK_WAR=$BUILD/epsdk-app-os.war --build-arg DBC_WAR=$BUILD/dmaap-bc-app-os.war -f $DOCKERFILE . " echo "Invoking portal docker build" $PORTAL_DOCKER_CMD # Build widget-ms docker cd $BASE/ecomp-portal-widget-ms ${MVN} package docker:build