1
0
mirror of https://github.com/zokradonh/kopano-docker synced 2025-10-29 01:17:19 +00:00
kopano-docker/build.sh

130 lines
3.6 KiB
Bash

#!/bin/bash
set -eu
branch="master"
buildcontext_base="https://github.com/zokradonh/kopano-docker.git#:"
networkname="buildproxy_net"
customBuildArgs=()
serial=""
component=""
function _usage()
{
echo "Usage: build.sh -c core|webapp [-s serial] [-b master|final|pre-final] [-p buildcontext] [-n networkname] [[-a buildarg] ...]"
echo "Example: build.sh -c core -s ABC123456789DEF -b final"
echo "If no branch is specified, 'master' will be built by default."
echo "If no buildcontext is specified, it will be built from git repository. Normally, you do not need to specify this."
echo "If no networkname is specified, it will create and use a network named 'buildproxy_net'."
echo "You can specify custom build args via e.g. -a KOPANO_CORE_REPOSITORY_URL=http://thisismy/url -a KOPANO_WEBAPP_REPOSITORY_URL=http://thisismy/url."
}
while getopts ":s:c:b:p:n:a:" opt; do
case $opt in
s)
serial=$OPTARG
;;
c)
component=${OPTARG,,}
;;
b)
branch=${OPTARG,,}
;;
p)
buildcontext_base=$OPTARG
;;
n)
networkname=$OPTARG
;;
a)
customBuildArgs[${#customBuildArgs[*]}]=$OPTARG
;;
\?)
_usage
exit 1
;;
:)
echo "Option -$OPTARG requires an argument."
exit 1
;;
esac
done
case "$component" in
core)
mainpackage="kopano-server"
;;
webapp)
mainpackage="kopano-webapp"
;;
*)
_usage
exit 1
esac
if [ ! -z "$serial" ]
then
# get current version to brand and tag the image correctly
currentVersion=$(curl -s -S -L https://serial:$serial@download.kopano.io/supported/$component:/$branch/Debian_9.0/Packages.gz |\
gzip -d | grep -A 8 "^Package: $mainpackage$" | awk '/Version/ { print $2 }')
currentVersionDocker=$(echo $currentVersion | sed 's/+/plus/')
# check existence of network
isnetup=$(docker network ls | grep $networkname | wc -l)
if [ $isnetup -eq 0 ]
then
echo "Missing build network. Creating network $networkname..."
docker network create --attachable $networkname
fi
# check if buildproxy helper container is running
isproxyup=$(docker ps | grep kopano_buildproxy | wc -l)
if [ $isproxyup -eq 0 ]
then
echo "Build proxy container not runnning - now building..."
docker build -t kopano_buildproxy ${buildcontext_base}repoproxy
echo "Start buildproxy helper..."
proxyContainerId=$(docker run --rm -ti -d -e KOPANO_SERIAL=$serial --network $networkname --network-alias buildproxy kopano_buildproxy)
fi
else
currentVersion="newest"
currentVersionDocker="custom"
fi
# only tag the master branch with ":latest"
if [ "$branch" == "master" ]
then
tagLatest="-t zokradonh/kopano_$component:latest"
else
tagLatest=" "
fi
customBuildString=""
# prepare custom build args
for buildArg in "${customBuildArgs[@]}"
do
customBuildString="$customBuildString --build-arg $buildArg"
done
# build it
echo "Start building kopano $component image version ($currentVersion)..."
docker build \
--build-arg KOPANO_REPOSITORY_BRANCH=$branch \
--build-arg KOPANO_${component^^}_VERSION=$currentVersion \
$customBuildString \
$tagLatest \
-t zokradonh/kopano_$component:$currentVersionDocker \
-t zokradonh/kopano_$component:latest-$branch \
--network $networkname \
${buildcontext_base}${component}
# stop proxy container if we started it
if [ ! -z "$proxyContainerId" ]
then
docker stop $proxyContainerId
fi