addons-server/scripts/build.sh

100 строки
2.6 KiB
Bash
Executable File

# This script should be called from within Hudson
cd $WORKSPACE
VENV=$WORKSPACE/venv
VENDOR=$WORKSPACE/vendor
LOCALE=$WORKSPACE/locale
SETTINGS=default
echo "Starting build on executor $EXECUTOR_NUMBER..." `date`
if [ -z $1 ]; then
echo "Warning: You should provide a unique name for this job to prevent database collisions."
echo "Usage: ./build.sh <name>"
echo "Continuing, but don't say you weren't warned."
fi
if [ -z $2 ]; then
echo "Warning: no settings file specified, using: default"
echo "Usage: ./build.sh <name> <settings>"
else
SETTINGS=$2
fi
echo "Setup..." `date`
# Make sure there's no old pyc files around.
find . -name '*.pyc' | xargs rm
if [ ! -d "$VENV/bin" ]; then
echo "No virtualenv found. Making one..."
virtualenv $VENV --system-site-packages
fi
source $VENV/bin/activate
pip install -U --exists-action=w --no-deps -q -r requirements/compiled.txt -r requirements/test.txt
# Create paths we want for addons
if [ ! -d "/tmp/warez" ]; then
mkdir /tmp/warez
fi
if [ ! -d "$LOCALE" ]; then
echo "No locale dir? Cloning..."
svn co http://svn.mozilla.org/addons/trunk/site/app/locale/ $LOCALE
fi
if [ ! -d "$VENDOR" ]; then
echo "No vendor lib? Cloning..."
git clone --recursive git://github.com/mozilla/zamboni-lib.git $VENDOR
fi
# Update the vendor lib.
echo "Updating vendor..."
git submodule --quiet foreach 'git submodule --quiet sync'
git submodule --quiet sync && git submodule update --init --recursive
cat > settings_local.py <<SETTINGS
from lib.settings_base import *
from ${SETTINGS}.settings import *
ROOT_URLCONF = 'lib.urls_base'
LOG_LEVEL = logging.ERROR
DATABASES['default']['NAME'] = 'zamboni_$1'
DATABASES['default']['HOST'] = 'localhost'
DATABASES['default']['USER'] = 'hudson'
DATABASES['default']['ENGINE'] = 'mysql_pool'
DATABASES['default']['TEST_NAME'] = 'test_zamboni_$1'
DATABASES['default']['TEST_CHARSET'] = 'utf8'
DATABASES['default']['TEST_COLLATION'] = 'utf8_general_ci'
CACHE_BACKEND = 'caching.backends.locmem://'
CELERY_ALWAYS_EAGER = True
ADDONS_PATH = '/tmp/warez'
STATIC_URL = ''
SETTINGS
# Update product details to pull in any changes (namely, 'dbg' locale)
echo "Updating product details..."
python manage.py update_product_details
echo "Starting tests..." `date`
export FORCE_DB='yes sir'
if [[ $3 = 'with-coverage' ]]; then
coverage run manage.py test -v 2 --noinput --logging-clear-handlers --with-xunit
coverage xml $(find apps lib -name '*.py')
else
python manage.py test -v 2 --noinput --logging-clear-handlers --with-xunit
fi
echo "Building documentation..." `date`
cd docs
make clean dirhtml SPHINXOPTS='-q'
cd $WORKSPACE
echo 'shazam!'