Build API server and Workbench debian packages.
[arvados-dev.git] / jenkins / arvados-workbench-extras / arvados-workbench-upgrade.sh
diff --git a/jenkins/arvados-workbench-extras/arvados-workbench-upgrade.sh b/jenkins/arvados-workbench-extras/arvados-workbench-upgrade.sh
new file mode 100755 (executable)
index 0000000..33e05d3
--- /dev/null
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+RELEASE_PATH=/var/www/arvados-workbench/current
+SHARED_PATH=/var/www/arvados-workbench/shared
+CONFIG_PATH=/etc/arvados/workbench/
+
+echo "Assumption: nginx is configured to serve workbench.`hostname` from /var/www/workbench.`hostname`/current"
+echo "Assumption: /var/www/`hostname` is symlinked to /var/www/arvados-workbench"
+echo "Assumption: configuration files are in /etc/arvados/workbench/"
+echo "Assumption: nginx and passenger run as the www-data user"
+echo
+
+echo "Copying files from $CONFIG_PATH"
+cp -f $CONFIG_PATH/application.yml $RELEASE_PATH/config/application.yml
+cp -f $RELEASE_PATH/config/environments/production.rb.example $RELEASE_PATH/config/environments/production.rb
+echo "Done."
+
+# Before we do anything else, make sure some directories and files are in place
+if [[ ! -e $SHARED_PATH/log ]]; then mkdir -p $SHARED_PATH/log; fi
+if [[ ! -e $RELEASE_PATH/tmp ]]; then mkdir -p $RELEASE_PATH/tmp; fi
+if [[ ! -e $RELEASE_PATH/log ]]; then ln -s $SHARED_PATH/log $RELEASE_PATH/log; fi
+if [[ ! -e $SHARED_PATH/log/production.log ]]; then touch $SHARED_PATH/log/production.log; fi
+
+echo "Running bundle install"
+(cd $RELEASE_PATH && RAILS_ENV=production bundle install --path $SHARED_PATH/vendor_bundle)
+echo "Done."
+
+# We do not need to precompile assets, they are already part of the package.
+
+echo "Ensuring directory and file permissions"
+chown www-data:www-data $RELEASE_PATH/config/environment.rb
+chown www-data:www-data $RELEASE_PATH/config.ru
+chown www-data:www-data $RELEASE_PATH/config/database.yml
+chown www-data:www-data $RELEASE_PATH/Gemfile.lock
+chown -R www-data:www-data $RELEASE_PATH/tmp
+chown -R www-data:www-data $SHARED_PATH/log
+chown www-data:www-data $RELEASE_PATH/db/schema.rb
+chmod 644 $SHARED_PATH/log/*
+echo "Done."
+
+echo "Running sanity check"
+(cd $RELEASE_PATH; RAILS_ENV=production bundle exec rake config:check)
+echo "Done."
+
+SANITY_CHECK_EXIT_CODE=$?
+
+if [[ "$SANITY_CHECK_EXIT_CODE" != "0" ]]; then
+  echo "Sanity check failed, aborting. Please roll back to the previous version of the package."
+  exit $SANITY_CHECK_EXIT_CODE
+fi
+
+# We do not need to run db:migrate because Workbench is stateless
+
+echo "Restarting nginx"
+service nginx restart
+echo "Done."
+