echo "--------------------------------------------------------"
echo
-
-if [[ -n $(ps -ef|grep 'docker build'|grep -v grep) ]]; then
- echo "There is already another build process in progress:"
- echo $(ps -ef|grep 'docker build'|grep -v grep)
- # Abort this job since it will collide and might mess up the current one.
- echo "Aborting..."
- exit 1
-fi
+count=30 # docker build jobs might take up to ~30 min
+while [[ -n `ps -ef|grep 'docker build'|grep -v grep` ]]; do
+ echo "Build in progress. Waiting..."
+ sleep 60
+ count=$(( $count - 1 ))
+ if [ $count -eq 0 ]; then
+ echo "Timeout. Aborting..."
+ exit 1
+ fi
+done
# Remove previous running containers if exist
if [[ -n "$(docker ps -a | grep $DOCKER_REPO_NAME)" ]]; then
done
fi
-cd $WORKSPACE/docker
-if [ ! -f ${DOCKERFILE} ]; then
- echo "ERROR: Dockerfile not found."
- exit 1
+cd $WORKSPACE/$DOCKER_DIR
+HOST_ARCH=$(uname -m)
+if [ ! -f "${DOCKERFILE}" ]; then
+ # If this is expected to be a Dockerfile for other arch than x86
+ # and it does not exist, but there is a patch for the said arch,
+ # then apply the patch and create the Dockerfile.${HOST_ARCH} file
+ if [[ "${DOCKERFILE}" == *"${HOST_ARCH}" && \
+ -f "Dockerfile.${HOST_ARCH}.patch" ]]; then
+ patch -o Dockerfile."${HOST_ARCH}" Dockerfile \
+ Dockerfile."${HOST_ARCH}".patch
+ else
+ echo "ERROR: No Dockerfile or ${HOST_ARCH} patch found."
+ exit 1
+ fi
fi
# Get tag version
echo "Current branch: $BRANCH"
+BUILD_BRANCH=$BRANCH
+
if [[ "$BRANCH" == "master" ]]; then
DOCKER_TAG="latest"
+elif [[ -n "${RELEASE_VERSION-}" ]]; then
+ DOCKER_TAG=${BRANCH##*/}.${RELEASE_VERSION}
+ # e.g. danube.1.0, danube.2.0, danube.3.0
else
- if [[ "$RELEASE_VERSION" != "" ]]; then
- release=${BRANCH##*/}
- DOCKER_TAG=${release}.${RELEASE_VERSION}
- # e.g. colorado.1.0, colorado.2.0, colorado.3.0
- else
- DOCKER_TAG="stable"
- fi
+ DOCKER_TAG="stable"
+fi
+
+if [[ -n "${COMMIT_ID-}" && -n "${RELEASE_VERSION-}" ]]; then
+ DOCKER_TAG=$RELEASE_VERSION
+ BUILD_BRANCH=$COMMIT_ID
+fi
+
+ARCH_BUILD_ARG=""
+ARCH_TAG=${ARCH_TAG:-}
+if [[ -n "${ARCH_TAG}" ]]; then
+ DOCKER_TAG=${ARCH_TAG}-${DOCKER_TAG}
+ ARCH_BUILD_ARG="--build-arg ARCH=${ARCH_TAG}"
fi
# Start the build
echo "Building docker image: $DOCKER_REPO_NAME:$DOCKER_TAG"
echo "--------------------------------------------------------"
echo
-if [[ $DOCKER_REPO_NAME == *"dovetail"* ]]; then
- cmd="docker build --no-cache -t $DOCKER_REPO_NAME:$DOCKER_TAG -f $DOCKERFILE ."
-else
- cmd="docker build --no-cache -t $DOCKER_REPO_NAME:$DOCKER_TAG --build-arg BRANCH=$BRANCH
- -f $DOCKERFILE ."
-fi
+cmd="docker build --no-cache -t $DOCKER_REPO_NAME:$DOCKER_TAG --build-arg BRANCH=$BUILD_BRANCH
+ $ARCH_BUILD_ARG
+ -f $DOCKERFILE ."
echo ${cmd}
${cmd}