| #!/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 |