diff --git a/bin/steps/collectstatic b/bin/steps/collectstatic index 54a911268bb29d4fa5492b639f2c7a5b54952e63..c2856d8beb6cf1e3fc255f81116e72f25c231b01 100755 --- a/bin/steps/collectstatic +++ b/bin/steps/collectstatic @@ -1,21 +1,35 @@ #!/usr/bin/env bash +# Django Collectstatic runner. If you have Django installed, collectstatic will +# automatically be executed as part of the build process. If collectstatic +# fails, your build fails. + +# This functionality will only activate if Django is in requirements.txt. + +# Runtime arguments: +# - $DISABLE_COLLECTSTATIC: disables this functionality. +# - $DEBUG_COLLECTSTATIC: upon failure, print out environment variables. + source $BIN_DIR/utils +# Location of 'manage.py', if it exists. MANAGE_FILE=$(find . -maxdepth 3 -type f -name 'manage.py' -printf '%d\t%P\n' | sort -nk1 | cut -f2 | head -1) MANAGE_FILE=${MANAGE_FILE:-fakepath} +# Legacy file-based support for $DISABLE_COLLECTSTATIC [ -f .heroku/collectstatic_disabled ] && DISABLE_COLLECTSTATIC=1 + +# Ensure that Django is explicitily specified in requirments.txt pip-grep -s requirements.txt django Django && DJANGO_INSTALLED=1 -bpwatch start collectstatic +bpwatch start collectstatic # metrics collection if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ] && [ "$DJANGO_INSTALLED" ]; then set +e echo "-----> Preparing static assets with 'collectstatic'." - echo " Running collectstatic..." + # Run collectstatic, cleanup some of the noisy output. python $MANAGE_FILE collectstatic --noinput 2>&1 | sed '/^Copying/d;/^$/d;/^ /d' | indent # Display a warning if collectstatic failed. @@ -23,6 +37,16 @@ if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ] && [ "$DJANGO_INSTALL echo " ! Error while runnning '$ python $MANAGE_FILE collectstatic --noinput'." echo " See traceback above for more details." echo " More info: http://devcenter.heroku.com/articles/django-assets" + + # Additionally, dump out the environment, if debug mode is on. + if [ "$DEBUG_COLLECTSTATIC" ]; then + echo + echo "****** Collectstatic environment variables:" + echo + env + fi + + # Abort the build. exit 1 } @@ -30,4 +54,4 @@ if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ] && [ "$DJANGO_INSTALL echo fi -bpwatch stop collectstatic +bpwatch stop collectstatic # metrics collection