lamassu-server/bin/lamassu-update
Rafael Taranto 06f8c57608 Save migrations file on db (#215)
* Revert "Migration sql changes (#199)"

This reverts commit 12c834469c.

* Save migrate file on db

* Add message on migration error in lamassu-update
2018-11-18 10:15:22 +01:00

103 lines
3.3 KiB
Bash
Executable file

#!/usr/bin/env bash
set -e
export LOG_FILE=/tmp/update.$(date +"%Y%m%d").log
export NPM_BIN=$(npm -g bin)
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
rm -f ${LOG_FILE}
decho () {
echo `date +"%H:%M:%S"` $1
echo `date +"%H:%M:%S"` $1 >> ${LOG_FILE}
}
cat <<'FIG'
_
| | __ _ _ __ ___ __ _ ___ ___ _ _ ___ ___ _ ____ _____ _ __
| |/ _` | '_ ` _ \ / _` / __/ __| | | |_____/ __|/ _ \ '__\ \ / / _ \ '__|
| | (_| | | | | | | (_| \__ \__ \ |_| |_____\__ \ __/ | \ V / __/ |
|_|\__,_|_| |_| |_|\__,_|___/___/\__,_| |___/\___|_| \_/ \___|_|
FIG
echo -e "\nStarting \033[1mlamassu-server\033[0m update. This will take a few minutes...\n"
if [ "$(whoami)" != "root" ]; then
echo -e "This script has to be run as \033[1mroot\033[0m user"
exit 3
fi
# Use a lock file so failed scripts cannot be imediately retried
# If not the backup created on this script would be replaced
if ! mkdir /var/lock/lamassu-update; then
echo "Script is locked because of a failure." >&2
exit 1
fi
decho "stopping lamassu-server"
supervisorctl stop lamassu-server >> ${LOG_FILE} 2>&1
supervisorctl stop lamassu-admin-server >> ${LOG_FILE} 2>&1
decho "unlinking ${NPM_BIN}/lamassu* old executables"
find ${NPM_BIN} -type l \( -name "lamassu-*" -or -name "hkdf" \) -exec rm -fv {} \; >> ${LOG_FILE} 2>&1
if [ -d "/usr/lib/node_modules/lamassu-server" ]; then
decho "renaming old lamassu-server instance to lamassu-server-old"
mv -v "/usr/lib/node_modules/lamassu-server" "/usr/lib/node_modules/lamassu-server-old" >> ${LOG_FILE} 2>&1
fi
decho "updating node"
npm install n -g >> ${LOG_FILE} 2>&1
n lts >> ${LOG_FILE} 2>&1
decho "version installed $(node -v)"
export NPM_BIN=$(npm -g bin)
decho "updating lamassu-server#dev"
npm -g install lamassu/lamassu-server#dev --unsafe-perm >> ${LOG_FILE} 2>&1
decho "rebuilding npm deps"
cd $(npm root -g)/lamassu-server/ >> ${LOG_FILE} 2>&1
npm rebuild >> ${LOG_FILE} 2>&1
{
decho "running migration"
lamassu-migrate >> ${LOG_FILE} 2>&1
} || { echo "Failure running migrations" ; exit 1 ; }
lamassu-migrate-config >> ${LOG_FILE} 2>&1
decho "update to mnemonic"
$SCRIPTPATH/bin/lamassu-update-to-mnemonic --prod
decho "updating supervisor conf"
perl -i -pe 's/command=.*/command=$ENV{NPM_BIN}\/lamassu-server/g' /etc/supervisor/conf.d/lamassu-server.conf >> ${LOG_FILE} 2>&1
perl -i -pe 's/command=.*/command=$ENV{NPM_BIN}\/lamassu-admin-server/g' /etc/supervisor/conf.d/lamassu-admin-server.conf >> ${LOG_FILE} 2>&1
decho "updating lamassu-server"
supervisorctl update lamassu-server >> ${LOG_FILE} 2>&1
supervisorctl update lamassu-admin-server >> ${LOG_FILE} 2>&1
supervisorctl start lamassu-server >> ${LOG_FILE} 2>&1
supervisorctl start lamassu-admin-server >> ${LOG_FILE} 2>&1
decho "updating backups conf"
BACKUP_CMD=${NPM_BIN}/lamassu-backup-pg
BACKUP_CRON="@daily $BACKUP_CMD > /dev/null"
( (crontab -l 2>/dev/null || echo -n "") | grep -v '@daily.*lamassu-backup-pg'; echo $BACKUP_CRON ) | crontab - >> $LOG_FILE 2>&1
$BACKUP_CMD >> $LOG_FILE 2>&1
decho "updating motd scripts"
set +e
chmod -x /etc/update-motd.d/*-release-upgrade
chmod -x /etc/update-motd.d/*-updates-available
chmod -x /etc/update-motd.d/*-reboot-required
chmod -x /etc/update-motd.d/*-help-text
chmod -x /etc/update-motd.d/*-cloudguest
set -e
# reset terminal to link new executables
hash -r
rm -r /var/lock/lamassu-update
decho "Update complete!"