docker build: Update saltstack repo URL, locale
[fuel.git] / ci / build.sh
1 #!/bin/bash -e
2 # shellcheck disable=SC1004,SC1090
3 ##############################################################################
4 # Copyright (c) 2018 Mirantis Inc., Enea AB and others.
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9 ##############################################################################
10
11 ##############################################################################
12 # BEGIN of Exit handlers
13 #
14 do_exit () {
15     local RC=$?
16     if [ ${RC} -eq 0 ]; then
17         notify_n "[OK] MCP: Docker build finished succesfully!" 2
18     else
19         notify_n "[ERROR] MCP: Docker build threw a fatal error!"
20     fi
21 }
22 #
23 # End of Exit handlers
24 ##############################################################################
25
26 ##############################################################################
27 # BEGIN of variables to customize
28 #
29 CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x
30 MCP_REPO_ROOT_PATH=$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")
31 DEPLOY_DIR=$(cd "${MCP_REPO_ROOT_PATH}/mcp/scripts"; pwd)
32 DOCKER_DIR=$(cd "${MCP_REPO_ROOT_PATH}/docker"; pwd)
33 DOCKER_TAG=${1:-latest}
34 DOCKER_PUSH=${2---push}  # pass an empty second arg to disable push
35 CACHE_INVALIDATE=${CACHE_INVALIDATE:-0}
36 SALT_VERSION='stable 2017.7'
37
38 source "${DEPLOY_DIR}/globals.sh"
39 source "${DEPLOY_DIR}/lib.sh"
40 source "${DEPLOY_DIR}/lib_jump_common.sh"
41
42 [ ! "${TERM:-unknown}" = 'unknown' ] || export TERM=vt220
43 [ "${CACHE_INVALIDATE}" = 0 ] || CACHE_INVALIDATE=$(date +%s)
44
45 export LC_ALL=en_US.utf-8
46 export LANG=en_US.utf-8
47
48 #
49 # END of variables to customize
50 ##############################################################################
51
52 ##############################################################################
53 # BEGIN of main
54 #
55
56 # Enable the automatic exit trap
57 trap do_exit SIGINT SIGTERM EXIT
58
59 # Set no restrictive umask so that Jenkins can remove any residuals
60 umask 0000
61
62 pushd "${DEPLOY_DIR}" > /dev/null
63
64 # Install distro packages and pip-managed prerequisites
65 notify "[NOTE] Installing required build-time distro and pip pkgs" 2
66 jumpserver_pkg_install 'build'
67 PYTHON_BIN_PATH="$(python3 -m site --user-base)/bin"
68 PATH="$PATH:$PYTHON_BIN_PATH"
69 # Clone git submodules and apply our patches
70 make -C "${MCP_REPO_ROOT_PATH}/mcp/patches" deepclean patches-import
71 python3 -m pip install --upgrade pipenv --user
72 docker_install
73
74 popd > /dev/null
75 pushd "${DOCKER_DIR}" > /dev/null
76
77 env PIPENV_HIDE_EMOJIS=1 VIRTUALENV_ALWAYS_COPY=1 python3 -m pipenv --three install
78 env PIPENV_HIDE_EMOJIS=1 VIRTUALENV_ALWAYS_COPY=1 python3 -m pipenv install invoke
79 # shellcheck disable=SC2086
80 env PIPENV_HIDE_EMOJIS=1 python3 -m pipenv run \
81   invoke build saltmaster-reclass \
82     --require 'salt salt-formulas opnfv reclass tini-saltmaster' \
83     --dist=ubuntu \
84     --dist-rel=bionic \
85     --formula-rev=nightly \
86     --opnfv-tag="${DOCKER_TAG}" \
87     --salt="${SALT_VERSION}" \
88     --build-arg-extra " \
89         CACHE_INVALIDATE=\"${CACHE_INVALIDATE}\"" \
90     ${DOCKER_PUSH}
91
92 env PIPENV_HIDE_EMOJIS=1 python3 -m pipenv run \
93   invoke build saltminion-maas \
94     --require 'maas' \
95     --dist=ubuntu \
96     --dist-rel=bionic \
97     --opnfv-tag="${DOCKER_TAG}" \
98     --salt="${SALT_VERSION}" \
99     --build-arg-extra " \
100         CACHE_INVALIDATE=\"${CACHE_INVALIDATE}\"" \
101     ${DOCKER_PUSH}
102
103 popd > /dev/null
104
105 #
106 # END of main
107 ##############################################################################