#!/usr/bin/env docker -i # Uncomment to debug: #set -x export NORAW=1 IMG=shykes/pybuilder:11d4f58638a72935 if [ $# -lt 3 ]; then echo "Usage: $0 build|run USER/REPO REV" echo "Example usage:" echo "" echo " REV=7d5f035432fe1453eea389b0f1b02a2a93c8009e" echo " $0 build shykes/helloflask \$REV" echo " $0 run shykes/helloflask \$REV" echo "" exit 1 fi CMD=$1 FORCE=0 if [ "$2" = "-f" ]; then FORCE=1 shift fi REPO=$2 REV=$3 BUILD_IMAGE=builds/github.com/$REPO/$REV if [ "$CMD" = "build" ]; then if [ ! -z "`images -q $BUILD_IMAGE`" ]; then if [ "$FORCE" -ne 1 ]; then echo "$BUILD_IMAGE already exists" exit fi fi # Allocate a TTY to work around python's aggressive buffering of stdout BUILD_JOB=`run -t $IMG /usr/local/bin/buildapp http://github.com/$REPO/archive/$REV.tar.gz` if [ -z "$BUILD_JOB" ]; then echo "Build failed" exit 1 fi if attach $BUILD_JOB ; then BUILD_STATUS=`docker wait $BUILD_JOB` if [ -z "$BUILD_STATUS" -o "$BUILD_STATUS" != 0 ]; then echo "Build failed" exit 1 fi else echo "Build failed" exit 1 fi commit $BUILD_JOB $BUILD_IMAGE echo "Build saved at $BUILD_IMAGE" elif [ "$CMD" = "run" ]; then RUN_JOB=`run $BUILD_IMAGE /usr/local/bin/runapp` if [ -z "$RUN_JOB" ]; then echo "Run failed" exit 1 fi attach $RUN_JOB fi