Build source with docker technology
[anna.git] / tools / build-with-docker
1 #!/bin/bash
2
3 #############
4 # VARIABLES #
5 #############
6
7 REPO_DIR="$(git rev-parse --show-toplevel 2>/dev/null)"
8 [ -z "$REPO_DIR" ] && { echo "You must execute under a valid git repository !" ; exit 1 ; }
9
10 #############
11 # FUNCTIONS #
12 #############
13
14 # $1: image directory
15 build_image() {
16   local imgdir=$1
17
18   local imgname=$(basename ${imgdir})
19   local imgtag=${TAG}
20
21   echo "Building ${imgname}:${imgtag} ..."
22   cd ${imgdir}
23
24   # Dockerfile for other contexts:
25   local dck_opt=
26   local preferred=Dockerfile.$(arch)
27   [ -f ${preferred} ] && { dck_opt="-f ${preferred}" ; echo "Selected '${preferred}' for current architecture." ; }
28   [ -z "${dck_opt}" -a ! -f Dockerfile ] && { echo "No Dockerfile for this directory. Ignoring ..." ; cd - >/dev/null ; return 1 ; }
29
30   docker build -t ${imgname}:${imgtag} ${dck_opt} .
31   [ $? -ne 0 ] && { echo "An error ocurred. Aborting ..." ; cd - >/dev/null ; return 1 ; }
32   cd - >/dev/null
33 }
34
35 #############
36 # EXECUTION #
37 #############
38
39 TAG=$(${REPO_DIR}/tools/version)
40
41 # Build compilation image:
42 build_image ${REPO_DIR}/docker-images/anna-build-nodb # this image has neither oracle nor mysql installed
43
44 # Build source with previous compilation image:
45 docker run --rm -it -u $(id -u):$(id -g) -v ${REPO_DIR}:/code -w /code anna-build-nodb:${TAG}
46