solum/contrib/lp-dockerfile/docker/build-app
Ed Cranford 296508575a Retry git clone in scripts
Sometimes git cloning fails while trying to unittest
or build an image. This patch adds a function that
retries the clone on failure five times, waiting five
seconds between attempts.

Change-Id: I179ee242eafcad508f99c09f0aaab9f4b4ee054b
2015-03-25 10:16:21 -05:00

62 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
LOG=${SOLUM_BUILD_LOG:="/opt/stack/logs/solum_build.log"}
# TLOG, PRUN, etc. defined in common/utils
HERE=$(dirname $0)
source $HERE/../../common/utils
PRUN silent docker ps
[[ $? != 0 ]] && TLOG cannot talk to docker. && exit 1
# Check command line arguments
if [ $# -lt 4 ]; then
TLOG Usage: $0 git_url appname project_id base_image [git_private_key]
exit 1
fi
GIT=$1
shift
APP=$1
shift
TENANT=$1
shift
BASE_IMAGE=$1
shift
GIT_PRIVATE_KEY=$1
shift
DOCKER_REGISTRY=${DOCKER_REGISTRY:-'127.0.0.1:5042'}
if [[ -z $OS_USERNAME ]]; then
TLOG OpenStack credentials not passed via ENV.
[[ -f ./openrc ]] && . ./openrc
[[ -f ~/devstack/openrc ]] && . ~/devstack/openrc
fi
APP_DIR=/opt/solum/apps/$TENANT/$APP
PRUN mkdir -p $APP_DIR
add_ssh_creds "$GIT_PRIVATE_KEY" "$APP_DIR"
[[ -d $APP_DIR/build ]] && rm -rf $APP_DIR/build
git_clone_with_retry $GIT $APP_DIR/build
remove_ssh_creds "$GIT_PRIVATE_KEY"
TLOG "===>" Building App
cd $APP_DIR/build
PRUN sudo docker build -t $DOCKER_REGISTRY/$APP .
PRUN sudo docker push $DOCKER_REGISTRY/$APP
sudo docker save "$DOCKER_REGISTRY/$APP" | glance image-create --container-format=docker --disk-format=raw --name "$APP" > /dev/null
image_id=$(glance image-show $APP | grep " id " | cut -d"|" -f3 | tr -d " ")
TLOG created_image_id=$image_id
# Need stdout for solum-worker to parse the image_id
echo created_image_id=$image_id
exit 0