-
benedikt.kroening authoredbenedikt.kroening authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
build.sh 4.32 KiB
#!/bin/bash
#
# Copyright (C) 2019 OX Software GmbH
#
# This file is part of OX Automation.
#
# OX Automation is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OX Automation is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OX Automation. If not, see <http://www.gnu.org/licenses/>.
#
#
# Authors:
# Benedikt Kroening <benedikt.kroening@open-xchange.com>
#
set -e
SCRIPT_DIR="$( cd "$(dirname "$0")" ; pwd -P)"
source ${SCRIPT_DIR}/../lib/common.bash
## Help text
show_usage() {
echo -n "
Build docker images with the help of the ox-installer scripts.
NOTE: Review the configuration used in the respective folder: singlenode/config or cluster/config
Easiest way to get a working image:
$ ${0}
Per component options (can be combined):
Installation types (not combineable):
--singlenode This will install and init an basic OX instance (db, mw, fe)
--cluster This will create several images for deploying some docker-compose cluster
Configuration options:
Examples:
"
}
### reading config from command line; overriding defaults
POSITIONAL=()
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
-h|--help)
show_usage
exit 0
shift
;;
--debug)
echo "WARNING: Debug flag set (--debug)"
set -x
shift
;;
# -t|--type)
# INSTALL_TYPE="$2"
# shift
# shift
# ;;
--middleware)
export INSTALL_MIDDLEWARE=true
shift
;;
--frontend)
export INSTALL_FRONTEND=true
shift
;;
--guard)
export INSTALL_GUARD=true
shift
;;
--documents)
export INSTALL_DOCUMENTS=true
shift
;;
--documentconverter)
export INSTALL_DOCUMENTCONVERTER=true
shift
;;
-s|--singlenode)
export INSTALL_TYPE=singlenode
shift
;;
--cluster)
export INSTALL_TYPE=cluster
shift
;;
*) # unknown option
echo "Unknonwn option: $1"
POSITIONAL+=("$1") # save it in an array for later
shift
;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters
if [[ -z "${INSTALL_TYPE}" ]]; then
echo "No build type was specified. (either singlenode or cluster)"
#export INSTALL_TYPE=singlenode
exit 99
fi
# sourcing Versions to use from file for tagging
exportProperties ${SCRIPT_DIR}/../setup/versions
echo "Config to be used:"
echo "============================================"
grep -v '^#' ${SCRIPT_DIR}/${INSTALL_TYPE}/config
echo "============================================"
echo "NOTE: You may want to review the configuration: ${SCRIPT_DIR}/${INSTALL_TYPE}/config before building the images!"
echo "CTRL+C to cancel ..."
echo ""
sleep 3
STARTED_AT=$(date)
if [[ "${INSTALL_TYPE}" == "singlenode" ]]; then
# ensure that all components will be "force" installed if on singlenode
exportProperties ${SCRIPT_DIR}/singlenode/config
docker build --no-cache --rm \
-f ${SCRIPT_DIR}/singlenode/Dockerfile \
-t singlenode:${AS_BACKEND_VERSION} ${SCRIPT_DIR}/../
docker tag singlenode:${AS_BACKEND_VERSION} singlenode:latest
elif [[ "${INSTALL_TYPE}" == "cluster" ]]; then
# TODO: propper image tag versioning
exportProperties ${SCRIPT_DIR}/cluster/config
echo "Building OX frontend image ..."
docker build --no-cache --rm -f ${SCRIPT_DIR}/cluster/frontend.Dockerfile -t open-xchange-frontend${AS_BACKEND_VERSION} ${SCRIPT_DIR}/../
echo "Building OX middleware image ..."
docker build --no-cache --rm -f ${SCRIPT_DIR}/cluster/middleware.Dockerfile -t open-xchange-middleware${AS_BACKEND_VERSION} ${SCRIPT_DIR}/../
else
# let the environment variables do the selection magic
echo "Not yet implemented"
exit 99
fi
echo ""
# pushd ${SCRIPT_DIR}/..
# popd
FINISHED_AT=$(date)
echo "====================================================================================="
echo "Started at: $STARTED_AT"
echo "Finished at: $FINISHED_AT"