Merge branch '6096-package-rails-apps'
[arvados-dev.git] / jenkins / arvados-workbench-extras / arvados-workbench-upgrade.sh
1 #!/bin/bash
2
3 RELEASE_PATH=/var/www/arvados-workbench/current
4 SHARED_PATH=/var/www/arvados-workbench/shared
5 CONFIG_PATH=/etc/arvados/workbench/
6
7 echo "Assumption: nginx is configured to serve workbench.`hostname` from /var/www/workbench.`hostname`/current"
8 echo "Assumption: /var/www/`hostname` is symlinked to /var/www/arvados-workbench"
9 echo "Assumption: configuration files are in /etc/arvados/workbench/"
10 echo "Assumption: nginx and passenger run as the www-data user"
11 echo
12
13 echo "Copying files from $CONFIG_PATH"
14 cp -f $CONFIG_PATH/application.yml $RELEASE_PATH/config/application.yml
15 cp -f $RELEASE_PATH/config/environments/production.rb.example $RELEASE_PATH/config/environments/production.rb
16 echo "Done."
17
18 # Before we do anything else, make sure some directories and files are in place
19 if [[ ! -e $SHARED_PATH/log ]]; then mkdir -p $SHARED_PATH/log; fi
20 if [[ ! -e $RELEASE_PATH/tmp ]]; then mkdir -p $RELEASE_PATH/tmp; fi
21 if [[ ! -e $RELEASE_PATH/log ]]; then ln -s $SHARED_PATH/log $RELEASE_PATH/log; fi
22 if [[ ! -e $SHARED_PATH/log/production.log ]]; then touch $SHARED_PATH/log/production.log; fi
23
24 echo "Running bundle install"
25 (cd $RELEASE_PATH && RAILS_ENV=production bundle install --path $SHARED_PATH/vendor_bundle)
26 echo "Done."
27
28 # We do not need to precompile assets, they are already part of the package.
29
30 echo "Ensuring directory and file permissions"
31 chown www-data:www-data $RELEASE_PATH/config/environment.rb
32 chown www-data:www-data $RELEASE_PATH/config.ru
33 chown www-data:www-data $RELEASE_PATH/config/database.yml
34 chown www-data:www-data $RELEASE_PATH/Gemfile.lock
35 chown -R www-data:www-data $RELEASE_PATH/tmp
36 chown -R www-data:www-data $SHARED_PATH/log
37 chown www-data:www-data $RELEASE_PATH/db/schema.rb
38 chmod 644 $SHARED_PATH/log/*
39 echo "Done."
40
41 echo "Running sanity check"
42 (cd $RELEASE_PATH; RAILS_ENV=production bundle exec rake config:check)
43 echo "Done."
44
45 SANITY_CHECK_EXIT_CODE=$?
46
47 if [[ "$SANITY_CHECK_EXIT_CODE" != "0" ]]; then
48   echo "Sanity check failed, aborting. Please roll back to the previous version of the package."
49   exit $SANITY_CHECK_EXIT_CODE
50 fi
51
52 # We do not need to run db:migrate because Workbench is stateless
53
54 echo "Restarting nginx"
55 service nginx restart
56 echo "Done."
57