#!/bin/bash ###### # This script builds the docker image locally # It expects docker to be logged in to ECR (see aws-login) set -e VERBOSE=0 DIR=`dirname $(realpath "${BASH_SOURCE[0]}")` OLDDIR=`pwd` cd "$DIR" source "$DIR/../config" source "$DIR/libs.sh" usage() { echo "Usage: $0 [-h] [-v] [-t: version] [action(s), see below]" 1>&2; echo "This script builds framework docker images, the following options are available:" 1>&2; echo " -h: This message" 1>&2; echo " Actions" 1>&2; echo " -u: Unit tests locally" 1>&2; echo " -d: Run debug vesion locally" 1>&2; echo " -p: Publish (requires a version)" 1>&2; echo " -X: Staging Deploy (requires a version)" 1>&2; echo " -x: Production Deploy (requires a version)" 1>&2; echo " -t: Software version, this will be used for the docker tag (default: local)" 1>&2; echo " -v: Verbose" 1>&2; exit 1; } UNIT_MODE=0 DEBUG_MODE=0 PUBLISH_MODE=0 DEPLOY_TEST_MODE=0 DEPLOY_PROD_MODE=0 SELECTED_MODES=0 TAG="local" while getopts "t:hvudpx" o; do case "${o}" in u) UNIT_MODE=1 SELECTED_MODES+=1 ;; d) DEBUG_MODE=1 SELECTED_MODES+=1 ;; p) PUBLISH_MODE=1 SELECTED_MODES+=1 ;; X) DEPLOY_TEST_MODE=1 SELECTED_MODES+=1 ;; x) DEPLOY_PROD_MODE=1 SELECTED_MODES+=1 ;; t) TAG=${OPTARG} ;; v) VERBOSE=1 ;; h) usage ;; *) printerr "Unsupported option ${o}" usage ;; esac done if [[ $SELECTED_MODES -eq 0 ]]; then printerr "No mode selected" usage fi if [[ $SELECTED_MODES -ne 1 ]]; then printerr "Select only one mode" usage fi ./aws-login.sh if [[ $UNIT_MODE -eq 1 ]]; then BUILDOPT+="u" UNITOPT="" if [[ $VERBOSE -gt 0 ]]; then BUILDOPT+="v" UNITOPT="-v" fi msg "running ./build.sh -$BUILDOPT -t $TAG" ./build.sh -$BUILDOPT -t $TAG ./run-unit.sh $UNITOPT -t $TAG fi if [[ $PUBLISH_MODE -eq 1 ]]; then BUILDOPT+="bu" VERBOPT="" if [[ $VERBOSE -gt 0 ]]; then BUILDOPT+="v" VERBOPT="-v" fi msg "running ./build.sh -$BUILDOPT -t $TAG" ./build.sh -$BUILDOPT -t $TAG ./run-unit.sh $VERBOPT -t $TAG ./publish.sh $VERBOPT -t $TAG fi if [[ $DEBUG_MODE -eq 1 ]]; then BUILDOPT+="d" if [[ $VERBOSE -gt 0 ]]; then BUILDOPT+="v" fi msg "running ./build.sh -$BUILDOPT -t $TAG" ./build.sh -$BUILDOPT -t $TAG OUT_FOLDER="/home/$PROJECT_AUTHOR/$PROJECT_BUILDNAME/local" mkdir -p $OUT_FOLDER ./generateComposeFolder.sh -L -o "$OUT_FOLDER" -t $TAG cd "$OUT_FOLDER" docker-compose up -d set -a source $OUT_FOLDER/environments/local/webserver.env set +a xdg-open "$DDNINJA_PUBLIC_URL" fi if [[ $DEPLOY_TEST_MODE -eq 1 ]]; then OUT_FOLDER="/home/$PROJECT_AUTHOR/$PROJECT_BUILDNAME/test" mkdir -p $OUT_FOLDER ./generateComposeFolder.sh -s -o "$OUT_FOLDER" -t $TAG cd "$OUT_FOLDER" docker compose up -d fi if [[ $DEPLOY_PROD_MODE -eq 1 ]]; then OUT_FOLDER="/home/$PROJECT_AUTHOR/$PROJECT_BUILDNAME/production" mkdir -p $OUT_FOLDER ./generateComposeFolder.sh -p -o "$OUT_FOLDER" -t $TAG cd "$OUT_FOLDER" docker compose up -d fi