X-Git-Url: https://git.arvados.org/arvados-dev.git/blobdiff_plain/170c33818a1ac6a3e35f411d80cf77a008bd6e07..c6d5c89d0581b6f93793ed9e43d3ec28bc3488e1:/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 cc23396..d39cdd4 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 + if [[ "$?" != "0" ]]; then + $COMMAND_PREFIX gem install bundle + fi + set -e + echo "... done." + echo -n "Running bundle install ..." $COMMAND_PREFIX bundle install --path $SHARED_PATH/vendor_bundle --quiet || exit $? echo "... done." @@ -109,7 +152,7 @@ EOF echo "... done." set +e - DB_MIGRATE_STATUS=`$COMMAND_PREFIX bundle exec rake db:migrate:status 2>/dev/null` + DB_MIGRATE_STATUS=`$COMMAND_PREFIX bundle exec rake db:migrate:status 2>&1` DB_MIGRATE_STATUS_CODE=$? set -e @@ -117,30 +160,88 @@ EOF # 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 <