pybuilder 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #!/usr/bin/env docker -i
  2. # Uncomment to debug:
  3. #set -x
  4. export NORAW=1
  5. IMG=shykes/pybuilder:11d4f58638a72935
  6. if [ $# -lt 3 ]; then
  7. echo "Usage: $0 build|run USER/REPO REV"
  8. echo "Example usage:"
  9. echo ""
  10. echo " REV=7d5f035432fe1453eea389b0f1b02a2a93c8009e"
  11. echo " $0 build shykes/helloflask \$REV"
  12. echo " $0 run shykes/helloflask \$REV"
  13. echo ""
  14. exit 1
  15. fi
  16. CMD=$1
  17. FORCE=0
  18. if [ "$2" = "-f" ]; then
  19. FORCE=1
  20. shift
  21. fi
  22. REPO=$2
  23. REV=$3
  24. BUILD_IMAGE=builds/github.com/$REPO/$REV
  25. if [ "$CMD" = "build" ]; then
  26. if [ ! -z "`images -q $BUILD_IMAGE`" ]; then
  27. if [ "$FORCE" -ne 1 ]; then
  28. echo "$BUILD_IMAGE already exists"
  29. exit
  30. fi
  31. fi
  32. # Allocate a TTY to work around python's aggressive buffering of stdout
  33. BUILD_JOB=`run -t $IMG /usr/local/bin/buildapp http://github.com/$REPO/archive/$REV.tar.gz`
  34. if [ -z "$BUILD_JOB" ]; then
  35. echo "Build failed"
  36. exit 1
  37. fi
  38. if attach $BUILD_JOB ; then
  39. BUILD_STATUS=`docker wait $BUILD_JOB`
  40. if [ -z "$BUILD_STATUS" -o "$BUILD_STATUS" != 0 ]; then
  41. echo "Build failed"
  42. exit 1
  43. fi
  44. else
  45. echo "Build failed"
  46. exit 1
  47. fi
  48. commit $BUILD_JOB $BUILD_IMAGE
  49. echo "Build saved at $BUILD_IMAGE"
  50. elif [ "$CMD" = "run" ]; then
  51. RUN_JOB=`run $BUILD_IMAGE /usr/local/bin/runapp`
  52. if [ -z "$RUN_JOB" ]; then
  53. echo "Run failed"
  54. exit 1
  55. fi
  56. attach $RUN_JOB
  57. fi