aboutsummaryrefslogtreecommitdiff
path: root/tools/build-docker-image
blob: 82d210d0ce029039519f5e23092c6aa44a52c04f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/bin/bash

TOPDIR=$(git rev-parse --show-toplevel)
IMGDIR="$(cd "$(dirname "$0")" && pwd)"

RELEASE_NAMESPACE=kollaglue
NAMESPACE=kollaglue
PREFIX=fedora-rdo-
TAG=$(git rev-parse --short HEAD)

usage () {
    cat <<EOF
Usage: $0 [options]

Options:

--namespace, -n <namespace>
--tag, -t <tag>
--push, -p
--no-cache, -N
--release
EOF
}

[ -f $TOPDIR/.buildconf ] && . $TOPDIR/.buildconf
[ -f $IMGDIR/.buildconf ] && . $IMGDIR/.buildconf

ARGS=$(getopt -o hn:t:pN -l help,namespace:,push,release,tag:,no-cache -- "$@") || { usage >&2; exit 2; }

eval set -- "$ARGS"

while :; do
    case "$1" in

    (--help|-h) usage
                exit 0
                ;;

    (--release) MODE=release
                NAMESPACE=$RELEASE_NAMESPACE
                TAG=latest
                ;;

    (--tag|-t)  shift
                TAG="$1"
                ;;

    (--push|-p) PUSH=1
                ;;

    (--no-cache|-N)
                BUILDFLAGS="${BUILDFLAGS} --no-cache"
                ;;

    (--namespace|-n)
                shift
                NAMESPACE="$1"
                ;;

    (--)        break
                ;;

    esac

    shift
done

if [ "$NAMESPACE" = "$RELEASE_NAMESPACE" ] \
    && [ "$TAG" = "latest" ] \
    && ! [ "$MODE" = "release" ]; then

    echo "ERROR: use --release to build a release image" >&2
    exit 1
fi

IMAGE="${PREFIX}${IMGDIR##*/}"
FULLIMAGE="${NAMESPACE}/${IMAGE}${TAG:+:${TAG}}"

cat <<EOF
======================================================================
$FULLIMAGE
======================================================================

EOF

if [ "$MODE" = "release" ]; then
    echo "*** YOU ARE BUILDING A RELEASE IMAGE ***"
    echo
fi

TMPDIR=$(mktemp -d /tmp/output.XXXXXXXXXX)
cp -aL $IMGDIR/* $TMPDIR

if ! docker build ${BUILDFLAGS} -t "$FULLIMAGE" $TMPDIR; then
    echo "ERROR: failed to build $FULLIMAGE"
    exit 1
fi
rm -rf $TMPDIR

echo "Built: $FULLIMAGE"

if [ "$PUSH" = 1 ]; then
    if ! docker push "$FULLIMAGE"; then
        echo "ERROR: failed to push $FULLIMAGE"
        exit 1
    fi

    echo "Pushed: $FULLIMAGE"
fi