cf32fdbd6b854881ddece3962819dc016bd81263
[arvados-dev.git] / jenkins / arvados-api-server-extras / arvados-api-server-upgrade.sh
1 #!/bin/bash
2
3 RELEASE_PATH=/var/www/arvados-api/current
4 SHARED_PATH=/var/www/arvados-api/shared
5 CONFIG_PATH=/etc/arvados/api/
6
7 echo "Assumption: nginx is configured to serve `hostname` from /var/www/`hostname`/current"
8 echo "Assumption: /var/www/`hostname` is symlinked to /var/www/arvados-api"
9 echo "Assumption: configuration files are in /etc/arvados/api/"
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/database.yml $RELEASE_PATH/config/database.yml
15 cp -f $RELEASE_PATH/config/environments/production.rb.example $RELEASE_PATH/config/environments/production.rb
16 cp -f $CONFIG_PATH/application.yml $RELEASE_PATH/config/application.yml
17 cp -f $CONFIG_PATH/omniauth.rb $RELEASE_PATH/config/initializers/omniauth.rb
18 echo "Done."
19
20 # Before we do anything else, make sure some directories and files are in place
21 if [[ ! -e $SHARED_PATH/log ]]; then mkdir -p $SHARED_PATH/log; fi
22 if [[ ! -e $RELEASE_PATH/tmp ]]; then mkdir -p $RELEASE_PATH/tmp; fi
23 if [[ ! -e $RELEASE_PATH/log ]]; then ln -s $SHARED_PATH/log $RELEASE_PATH/log; fi
24 if [[ ! -e $SHARED_PATH/log/production.log ]]; then touch $SHARED_PATH/log/production.log; fi
25
26 echo "Running bundle install"
27 (cd $RELEASE_PATH && RAILS_ENV=production bundle install --path $SHARED_PATH/vendor_bundle)
28 echo "Done."
29
30 echo "Precompiling assets"
31 # precompile assets; thankfully this does not take long
32 (cd $RELEASE_PATH; RAILS_ENV=production bundle exec rake assets:precompile)
33 echo "Done."
34
35 echo "Ensuring directory and file permissions"
36 # Ensure correct ownership of a few files
37 chown www-data:www-data $RELEASE_PATH/config/environment.rb
38 chown www-data:www-data $RELEASE_PATH/config.ru
39 chown www-data:www-data $RELEASE_PATH/config/database.yml
40 chown www-data:www-data $RELEASE_PATH/Gemfile.lock
41 chown -R www-data:www-data $RELEASE_PATH/tmp
42 chown -R www-data:www-data $SHARED_PATH/log
43 chown www-data:www-data $RELEASE_PATH/db/structure.sql
44 chmod 644 $SHARED_PATH/log/*
45 echo "Done."
46
47 echo "Running sanity check"
48 (cd $RELEASE_PATH; RAILS_ENV=production bundle exec rake config:check)
49 echo "Done."
50
51 SANITY_CHECK_EXIT_CODE=$?
52
53 if [[ "$SANITY_CHECK_EXIT_CODE" != "0" ]]; then
54   echo "Sanity check failed, aborting. Please roll back to the previous version of the package."
55   echo "The database has not been migrated yet, so reinstalling the previous version is safe."
56   exit $SANITY_CHECK_EXIT_CODE
57 fi
58
59 echo "Starting db:migrate"
60 (cd $RELEASE_PATH && bundle exec rake RAILS_ENV=production  db:migrate)
61 echo "Done."
62
63 echo "Restarting nginx"
64 service nginx restart
65 echo "Done."