diff --git a/examples/pybuilder b/examples/pybuilder new file mode 100755 index 0000000000..a9a2e8276f --- /dev/null +++ b/examples/pybuilder @@ -0,0 +1,73 @@ +#!/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 ps -a | sed -E -n "s/^$BUILD_JOB.*Exit ([0-9]+) *$/\1/p"` + 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