docker build: Update saltstack repo URL, locale
[fuel.git] / ci / build.sh
index 313edae..3da6705 100755 (executable)
@@ -31,9 +31,19 @@ MCP_REPO_ROOT_PATH=$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")
 DEPLOY_DIR=$(cd "${MCP_REPO_ROOT_PATH}/mcp/scripts"; pwd)
 DOCKER_DIR=$(cd "${MCP_REPO_ROOT_PATH}/docker"; pwd)
 DOCKER_TAG=${1:-latest}
+DOCKER_PUSH=${2---push}  # pass an empty second arg to disable push
+CACHE_INVALIDATE=${CACHE_INVALIDATE:-0}
+SALT_VERSION='stable 2017.7'
 
 source "${DEPLOY_DIR}/globals.sh"
 source "${DEPLOY_DIR}/lib.sh"
+source "${DEPLOY_DIR}/lib_jump_common.sh"
+
+[ ! "${TERM:-unknown}" = 'unknown' ] || export TERM=vt220
+[ "${CACHE_INVALIDATE}" = 0 ] || CACHE_INVALIDATE=$(date +%s)
+
+export LC_ALL=en_US.utf-8
+export LANG=en_US.utf-8
 
 #
 # END of variables to customize
@@ -49,28 +59,46 @@ trap do_exit SIGINT SIGTERM EXIT
 # Set no restrictive umask so that Jenkins can remove any residuals
 umask 0000
 
-# Clone git submodules and apply our patches
-make -C "${MCP_REPO_ROOT_PATH}/mcp/patches" deepclean patches-import
-
-pushd "${DOCKER_DIR}" > /dev/null
+pushd "${DEPLOY_DIR}" > /dev/null
 
 # Install distro packages and pip-managed prerequisites
 notify "[NOTE] Installing required build-time distro and pip pkgs" 2
 jumpserver_pkg_install 'build'
-pip install pipenv --user
+PYTHON_BIN_PATH="$(python3 -m site --user-base)/bin"
+PATH="$PATH:$PYTHON_BIN_PATH"
+# Clone git submodules and apply our patches
+make -C "${MCP_REPO_ROOT_PATH}/mcp/patches" deepclean patches-import
+python3 -m pip install --upgrade pipenv --user
 docker_install
 
-pipenv --two
-pipenv install
-pipenv shell \
-  "invoke build saltmaster-reclass \
+popd > /dev/null
+pushd "${DOCKER_DIR}" > /dev/null
+
+env PIPENV_HIDE_EMOJIS=1 VIRTUALENV_ALWAYS_COPY=1 python3 -m pipenv --three install
+env PIPENV_HIDE_EMOJIS=1 VIRTUALENV_ALWAYS_COPY=1 python3 -m pipenv install invoke
+# shellcheck disable=SC2086
+env PIPENV_HIDE_EMOJIS=1 python3 -m pipenv run \
+  invoke build saltmaster-reclass \
     --require 'salt salt-formulas opnfv reclass tini-saltmaster' \
     --dist=ubuntu \
-    --dist-rel=xenial \
+    --dist-rel=bionic \
     --formula-rev=nightly \
-    --opnfv-tag='${DOCKER_TAG}' \
-    --salt='stable 2017.7'; \
-  exit"
+    --opnfv-tag="${DOCKER_TAG}" \
+    --salt="${SALT_VERSION}" \
+    --build-arg-extra " \
+        CACHE_INVALIDATE=\"${CACHE_INVALIDATE}\"" \
+    ${DOCKER_PUSH}
+
+env PIPENV_HIDE_EMOJIS=1 python3 -m pipenv run \
+  invoke build saltminion-maas \
+    --require 'maas' \
+    --dist=ubuntu \
+    --dist-rel=bionic \
+    --opnfv-tag="${DOCKER_TAG}" \
+    --salt="${SALT_VERSION}" \
+    --build-arg-extra " \
+        CACHE_INVALIDATE=\"${CACHE_INVALIDATE}\"" \
+    ${DOCKER_PUSH}
 
 popd > /dev/null