73 lines
2.3 KiB
Bash
73 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
source $HOME/jenkins_env
|
|
|
|
NODE_ENV_DIR=$HOME/nenv
|
|
NODE_VERSION=6.11.1
|
|
|
|
NODE_INSTALL_COMMAND="nodeenv --node=$NODE_VERSION --prebuilt $NODE_ENV_DIR --force"
|
|
|
|
# Clear the mongo database
|
|
# Note that this prevents us from running jobs in parallel on a single worker.
|
|
mongo --quiet --eval 'db.getMongo().getDBNames().forEach(function(i){db.getSiblingDB(i).dropDatabase()})'
|
|
|
|
# Ensure we have fetched origin/master
|
|
# Some of the reporting tools compare the checked out branch to origin/master;
|
|
# depending on how the GitHub plugin refspec is configured, this may
|
|
# not already be fetched.
|
|
git fetch origin master:refs/remotes/origin/master
|
|
|
|
# Reset the jenkins worker's virtualenv back to the
|
|
# state it was in when the instance was spun up.
|
|
if [ -e $HOME/edx-venv_clean.tar.gz ]; then
|
|
rm -rf $HOME/edx-venv
|
|
tar -C $HOME -xf $HOME/edx-venv_clean.tar.gz
|
|
fi
|
|
|
|
# Activate the Python virtualenv
|
|
source $HOME/edx-venv/bin/activate
|
|
|
|
# add the node packages dir to PATH
|
|
PATH=$PATH:node_modules/.bin
|
|
|
|
echo "setting up nodeenv"
|
|
pip install nodeenv
|
|
# Ensure we are starting with a clean node env directory
|
|
rm -rf $NODE_ENV_DIR
|
|
|
|
# Occasionally, the command to install node hangs. We need to catch that and retry.
|
|
# Note that this will retry even if the command itself fails.
|
|
WAIT_COUNT=0
|
|
until timeout 30s $NODE_INSTALL_COMMAND || [ $WAIT_COUNT -eq 2 ]; do
|
|
echo "re-trying to install node version..."
|
|
sleep 2
|
|
WAIT_COUNT=$((WAIT_COUNT+1))
|
|
done
|
|
|
|
# If we tried the max number of times, we need to quit.
|
|
if [ $WAIT_COUNT -eq 2 ]; then
|
|
echo "Node environment installation command was not successful. Exiting."
|
|
exit 1
|
|
fi
|
|
|
|
source $NODE_ENV_DIR/bin/activate
|
|
echo "done setting up nodeenv"
|
|
echo "node version is `node --version`"
|
|
echo "npm version is `npm --version`"
|
|
|
|
# TODO: Provide a cached node_modules/ directory for faster/smaller installs
|
|
|
|
# Manage the npm cache on Jenkins.
|
|
# (In this case, remove it. That ensures from run-to-run, it is a clean npm environment)
|
|
echo "--> Cleaning npm cache"
|
|
npm cache clean
|
|
|
|
# Log any paver or ansible command timing
|
|
TIMESTAMP=$(date +%s)
|
|
export PAVER_TIMER_LOG="test_root/log/timing.paver.$TIMESTAMP.log"
|
|
export ANSIBLE_TIMER_LOG="test_root/log/timing.ansible.$TIMESTAMP.log"
|
|
|
|
echo "This node is `curl http://169.254.169.254/latest/meta-data/hostname`"
|