162 lines
3.2 KiB
Bash
Executable file
162 lines
3.2 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
# steps to take following a release of new code to keep things working.
|
|
#
|
|
# the following scripts may be created to customize behavior:
|
|
#
|
|
# site_utils/site_sync_code
|
|
#
|
|
# - pull code from a source repository
|
|
#
|
|
# site_utils/site_install_cli
|
|
#
|
|
# - install or update client code (new "atest" build?)
|
|
#
|
|
# site_utils/site_restart_apache
|
|
#
|
|
# - suid helper or similar?
|
|
#
|
|
# site_utils/site_restart_final
|
|
#
|
|
# - any finishing touches you may require.
|
|
|
|
# ---
|
|
|
|
INIT_SCR=/etc/init.d/autotest
|
|
|
|
# ---
|
|
|
|
print_status() {
|
|
STATUS=$1
|
|
|
|
echo "--- $STATUS"
|
|
}
|
|
|
|
fatal() {
|
|
echo "*** Fatal error. Giving up."
|
|
exit 1
|
|
}
|
|
|
|
# ---
|
|
|
|
MY_DIR=`dirname $0`
|
|
|
|
if (! test -f $INIT_SCR)
|
|
then
|
|
echo "Error: $INIT_SCR must be installed."
|
|
exit 1
|
|
fi
|
|
|
|
BECOME_USER=`grep ^BECOME_USER= $INIT_SCR`
|
|
|
|
if (test "$BECOME_USER" == "")
|
|
then
|
|
echo "Error: BECOME_USER not defined in $INIT_SCR"
|
|
exit 1
|
|
fi
|
|
|
|
BASE_DIR=`grep ^BASE_DIR= $INIT_SCR`
|
|
|
|
if (test "$BASE_DIR" == "")
|
|
then
|
|
echo "Error: BASE_DIR not defined in $INIT_SCR"
|
|
exit 1
|
|
fi
|
|
|
|
eval $BECOME_USER
|
|
eval $BASE_DIR
|
|
|
|
# --- stop autotest persistent code
|
|
|
|
print_status "Stopping autotest persistent code"
|
|
$INIT_SCR stop
|
|
|
|
# --- sync code (site-specific)
|
|
|
|
if (test -x $BASE_DIR/site_utils/site_sync_code)
|
|
then
|
|
print_status "Syncing code"
|
|
su $BECOME_USER -c $BASE_DIR/site_utils/site_sync_code || exit 1
|
|
fi
|
|
|
|
# --- run database migrations
|
|
|
|
# - AFE
|
|
|
|
print_status "Running AFE migrations"
|
|
( cd $BASE_DIR/frontend &&
|
|
su $BECOME_USER -c "python ../database/migrate.py \
|
|
--database=AUTOTEST_WEB safesync"
|
|
su $BECOME_USER -c "python manage.py syncdb --noinput"
|
|
su $BECOME_USER -c "python manage.py syncdb --noinput"
|
|
)
|
|
|
|
# - TKO
|
|
|
|
print_status "Running TKO migrations"
|
|
( cd $BASE_DIR/tko &&
|
|
su $BECOME_USER -c "python ../database/migrate.py \
|
|
--database=TKO safesync"
|
|
)
|
|
|
|
# - SITE_DB
|
|
|
|
print_status "Running site_db migrations"
|
|
( cd $BASE_DIR/site_db &&
|
|
su $BECOME_USER -c "python ../database/migrate.py \
|
|
--database=TKO safesync"
|
|
)
|
|
|
|
# - Django syncdb
|
|
|
|
print_status "Running syncdb on Django interface"
|
|
# Due to the way Django creates permissions objects, we sometimes need
|
|
# to run syncdb twice.
|
|
for i in 1 2; do
|
|
( cd $BASE_DIR/frontend &&
|
|
su $BECOME_USER -c "python manage.py syncdb --noinput"
|
|
)
|
|
done
|
|
|
|
# --- compile GWT
|
|
|
|
print_status "Compiling GWT code."
|
|
( cd $BASE_DIR &&
|
|
su $BECOME_USER -c "$BASE_DIR/utils/compile_gwt_clients.py -a" || fatal
|
|
)
|
|
|
|
# --- fix gwt permissions
|
|
|
|
print_status "Fixing permissions"
|
|
( cd $BASE_DIR/frontend/client &&
|
|
find | xargs chmod o+r &&
|
|
find -type d | xargs chmod o+rx ) || fatal
|
|
|
|
# --- update cli repository (site-specific)
|
|
|
|
if (test -x $BASE_DIR/site_utils/site_install_cli)
|
|
then
|
|
print_status "Updating cli repository"
|
|
su $BECOME_USER -c $BASE_DIR/site_utils/site_install_cli || fatal
|
|
fi
|
|
|
|
# --- restart autotest persistent code
|
|
|
|
print_status "Restarting autotest persistent code"
|
|
$INIT_SCR start || fatal
|
|
|
|
# --- possibly restart Apache (site-specific)
|
|
|
|
if (test -x $BASE_DIR/site_utils/site_restart_apache)
|
|
then
|
|
print_status "Restarting Apache"
|
|
su $BECOME_USER -c $BASE_DIR/site_utils/site_restart_apache || fatal
|
|
fi
|
|
|
|
# --- do any site-specific finalization
|
|
|
|
if (test -x $BASE_DIR/site_utils/site_restart_final)
|
|
then
|
|
print_status "Finalizing release"
|
|
su $BECOME_USER -c $BASE_DIR/site_utils/site_restart_final || fatal
|
|
fi
|