X-Git-Url: https://git.arvados.org/arvados-dev.git/blobdiff_plain/c21753f5f91a3144395f4b259b09fb16b39b4b2d..1c82c1f875ca2681ff36e804fde8f6beb8f36c77:/jenkins/arvados-sso-server-extras/arvados-sso-server.postinst diff --git a/jenkins/arvados-sso-server-extras/arvados-sso-server.postinst b/jenkins/arvados-sso-server-extras/arvados-sso-server.postinst index e6db44c..436f5bd 100755 --- a/jenkins/arvados-sso-server-extras/arvados-sso-server.postinst +++ b/jenkins/arvados-sso-server-extras/arvados-sso-server.postinst @@ -6,6 +6,10 @@ INSTALL_PATH=/var/www/arvados-sso RELEASE_PATH=$INSTALL_PATH/current SHARED_PATH=$INSTALL_PATH/shared CONFIG_PATH=/etc/arvados/sso +PACKAGE_NAME=arvados-sso-server + +DATABASE_READY=1 +APPLICATION_READY=1 VERSION=`cat $RELEASE_PATH/git-commit.version` @@ -31,56 +35,86 @@ configure_version() { [ "$VERSION" ] || { echo "Error: configure_version: need version parameter" >&2; exit 1; } - if [ -e /etc/redhat-release ]; then - WWW_OWNER=nginx:nginx - else - # Assume we're on a Debian-based system for now. - WWW_OWNER=www-data:www-data - fi + WEB_SERVICE=${WEB_SERVICE:-$(service --status-all 2>/dev/null \ + | grep -Eo '\bnginx|httpd[^[:space:]]*' || true)} + if [ -z "$WEB_SERVICE" ]; then + cat >&2 </dev/null \ - | grep -Eo '\bnginx[^[:space:]]*' || true)} - if [ -z "$NGINX_SERVICE" ]; then - cat >&2 <&2 <&2 </dev/null; then - echo -n "Running db:migrate ..." - $COMMAND_PREFIX bundle exec rake db:migrate || exit $? - elif [ 0 -eq ${PIPESTATUS[0]} ]; then - # The database exists, but the migrations table doesn't. - echo -n "Setting up database ..." - $COMMAND_PREFIX bundle exec rake db:schema:load db:seed || exit $? + set +e + DB_MIGRATE_STATUS=`$COMMAND_PREFIX bundle exec rake db:migrate:status 2>&1` + DB_MIGRATE_STATUS_CODE=$? + set -e + + if echo $DB_MIGRATE_STATUS | grep 'Schema migrations table does not exist yet.' >/dev/null; then + # The database exists, but the migrations table doesn't. + echo -n "Setting up database ..." + $COMMAND_PREFIX bundle exec rake db:schema:load db:seed || exit $? + echo "... done." + elif echo $DB_MIGRATE_STATUS | grep '^database: ' >/dev/null; then + echo -n "Running db:migrate ..." + $COMMAND_PREFIX bundle exec rake db:migrate || exit $? + echo "... done." + elif echo $DB_MIGRATE_STATUS | grep 'database .* does not exist' >/dev/null; then + echo -n "Running db:setup ..." + set +e + $COMMAND_PREFIX bundle exec rake db:setup 2>/dev/null + if [ "$?" = "0" ]; then + echo "... done." + else + echo "... failed." + echo "Warning: unable to set up database." >&2 + DATABASE_READY=0 + fi + set -e else - echo "Error: Database is not ready to set up. Aborting." >&2 - exit 1 + echo "Warning: Database is not ready to set up. Skipping database setup." >&2 + DATABASE_READY=0 fi - echo "... done." echo -n "Precompiling assets ..." # precompile assets; thankfully this does not take long - $COMMAND_PREFIX bundle exec rake assets:precompile -q -s || exit $? + if [ "$APPLICATION_READY" = "1" ]; then + set +e + $COMMAND_PREFIX bundle exec rake assets:precompile -q -s 2>/dev/null + if [ "$?" = "0" ]; then + echo "... done." + else + echo "... failed." + APPLICATION_READY=0 + fi + set -e + else + echo "... skipped." + fi chown -R "$WWW_OWNER" $RELEASE_PATH/tmp - echo "... done." - echo -n "Restarting nginx ..." - service "$NGINX_SERVICE" restart || exit $? - echo "... done." - echo + if [ ! -z "$WEB_SERVICE" ]; then + echo -n "Restarting $WEB_SERVICE ..." + service "$WEB_SERVICE" restart >/dev/null || exit $? + echo "... done." + fi } if [ "$1" = configure ]; then + # This is a debian-based system setup_ruby_environment configure_version $VERSION "$2" +elif [ "$1" = "0" ] || [ "$1" = "1" ] || [ "$1" = "2" ]; then + # This is an rpm-based system + setup_ruby_environment + configure_version $VERSION fi +if [ "$DATABASE_READY" = "0" ]; then + cat <