Post-release procedures for autotest, with site-specific hooks

Signed-off-by: Rachel Kroll <rkroll@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2860 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/utils/release b/utils/release
new file mode 100644
index 0000000..4e3a6f3
--- /dev/null
+++ b/utils/release
@@ -0,0 +1,129 @@
+#!/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
+
+# --- compile AfeClient 
+
+print_status "Compiling AfeClient"
+( cd $BASE_DIR/frontend/client && 
+  su $BECOME_USER -c ./AfeClient-compile ) || fatal
+
+# --- compile TkoClient
+
+print_status "Compiling TkoClient"
+( cd $BASE_DIR/frontend/client &&
+  su $BECOME_USER -c ./TkoClient-compile ) || 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
+