X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=deliveries%2Fbuild_portalapps_dockers.sh;h=5092b4074f526228ac469f7544a816eb1f8bebd9;hb=9f45f60932b17364ade24f29c7831bd3ef757bc5;hp=a45e55ccd0675202953f8a80bed0afb856c44597;hpb=cc805e781c5c764860a1f801e637c6ed6e471f63;p=portal.git diff --git a/deliveries/build_portalapps_dockers.sh b/deliveries/build_portalapps_dockers.sh index a45e55cc..5092b407 100755 --- a/deliveries/build_portalapps_dockers.sh +++ b/deliveries/build_portalapps_dockers.sh @@ -1,94 +1,92 @@ #!/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. +# Builds Portal and Portal-SDK webapps; packages all into a docker. +# Prereq: all 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 +# This reuses the docker-compose environment file +echo "Set image tag name variables" +source $(dirname $0)/.env -# Establish environment variables -echo "Set variables" -source $(dirname $0)/os_settings.sh +# Check for Jenkins build number +if [ -n "$BUILD_NUMBER" ]; then + echo "Using Jenkins build number $BUILD_NUMBER" +else + # This indicates a non-Jenkins build + export BUILD_NUMBER="999" +fi -# Work standalone AND in the ONAP Jenkins. +# 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 - MVN=mvn + # Force refresh of snapshots + MVN="mvn -B -U -Dbuild.number=$BUILD_NUMBER" 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" +PORTAL_DOCKERFILE=Dockerfile.portal +if [ ! -f $PORTAL_DOCKERFILE ] ; then + echo "Failed to find file ${PORTAL_DOCKERFILE}; must start in deliveries folder; exiting" exit 1 fi +SDK_DOCKERFILE=Dockerfile.sdk + +# Store directory names as variables +# This is the deliveries area. +DELIVDIR="$(pwd)" +# parent directory, for finding source projects +cd .. +BASEDIR="$(pwd)" +cd $DELIVDIR -# Establish directories and variables -DELIV="$(pwd)" # Relative path of temp directory -BUILD="build" +BUILD_REL="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)" +BUILD_ABS=$DELIVDIR/$BUILD_REL + +# Build Java projects. +# (use env var toskip when debugging Docker build problems) +if [ "$SKIP_JAVA_BUILD" = "please" ]; then + + echo "SKIPPING JAVA BUILD!" + else - ${MVN} clean package - cp -r dist/public $OUT + echo "Starting Java build." + + # Clean out and recreate + rm -fr $BUILD_REL + mkdir $BUILD_REL + + echo "Build jar and war files" + cd $BASEDIR + ${MVN} clean install + + echo "Build Portal-SDK app" + cd $BASEDIR/sdk/ecomp-sdk/epsdk-app-os + ${MVN} clean package + + echo "Java build complete." fi -cd $BASE/sdk/ecomp-sdk/epsdk-app-os -${MVN} clean package -cp target/epsdk-app-os.war $OUT +echo "Copy Portal app BE" +cp $BASEDIR/ecomp-portal-BE-os/target/portal-be-os.war $BUILD_ABS + +echo "Copy Portal app FE" +cp -r $BASEDIR/ecomp-portal-FE-os/dist/public $BUILD_ABS + +echo "Copy Portal widget-ms" +cp $BASEDIR/ecomp-portal-widget-ms/widget-ms/target/widget-ms.jar $BUILD_ABS + +echo "Copy Portal-SDK app build results" +cp $BASEDIR/sdk/ecomp-sdk/epsdk-app-os/target/epsdk-app-os.war $BUILD_ABS -cd $BASE/dmaapbc/dcae_dmaapbc_webapp -${MVN} clean package -cp dbca-os/target/dmaap-bc-app-os.war $OUT +# Build Docker images PROXY_ARGS="" if [ $HTTP_PROXY ]; then @@ -98,19 +96,63 @@ if [ $HTTPS_PROXY ]; then PROXY_ARGS+=" --build-arg HTTPS_PROXY=${HTTPS_PROXY}" fi -# build portal docker -cd $DELIV +# must work in delivery directory +cd $DELIVDIR + +# 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 Dockerfile.mariadb . +" +$DB_DOCKER_CMD + +# 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 + +echo "Build portal docker image" 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 . + docker build -t ${EP_IMG_NAME}:${PORTAL_TAG} ${PROXY_ARGS} + --build-arg FE_DIR=$BUILD_REL/public + --build-arg PORTAL_WAR=$BUILD_REL/portal-be-os.war + --build-arg SERVERXML=${DELIVDIR}/server.xml + -f $PORTAL_DOCKERFILE . " -echo "Invoking portal docker build" $PORTAL_DOCKER_CMD -# Build widget-ms docker -cd $BASE/ecomp-portal-widget-ms -${MVN} package docker:build +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/epsdk-app-os.war + -f $SDK_DOCKERFILE . +" +$SDK_DOCKER_CMD + +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 + -f Dockerfile.widgetms . +" +$WMS_DOCKER_CMD + +# For ease of debugging, leave the build dir +# echo "Cleaning up" +# rm -fr $BUILD_REL