-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupgrade_attached
executable file
·58 lines (48 loc) · 1.77 KB
/
upgrade_attached
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
set -e
# stop server
sudo service tomcat9 stop
tar xf upgrade.tar
MAJOR=`cat major.version`
MINOR=`cat minor.version`
BUILD=`cat build.version`
VERSION="${MAJOR}.${MINOR}.${BUILD}"
MIGRATE=`cat migrate.json | jq .migrate`
MIGRATE_LENGTH=`echo $MIGRATE | jq length`
# backup current database and app
REV=`date +%s`
mkdir /home/ubuntu/$REV
mysqldump -u root -proot coredb > /home/ubuntu/$REV/coredb.sql
cp /var/lib/tomcat9/webapps/app.war /home/ubuntu/$REV/
cp /opt/diatum/coredb.version /home/ubuntu/$REV/
cp /home/ubuntu/stat.sh /home/ubuntu/$REV/
cp /home/ubuntu/renew.sh /home/ubuntu/$REV/
crontab -l > /home/ubuntu/$REV/crontab.l
# migrate backup
BUNDLE_SCHEMA=`cat migrate.json | jq .schema_version`
NODE_SCHEMA=`cat /opt/diatum/coredb.version | jq .schema`
echo "versions: n.$NODE_SCHEMA b.$BUNDLE_SCHEMA"
for (( v = 0; v < $MIGRATE_LENGTH; v++ ))
do
MIGRATE_VERSION=`echo $MIGRATE | jq .[$v].schema_version`
DELTA=`echo $MIGRATE | jq -r .[$v].delta`
if [ "$NODE_SCHEMA" == "$MIGRATE_VERSION" ]; then
echo "applying delta ${MIGRAGE_VERSION}.${DELTA}"
mysql -u root -proot coredb < $DELTA || {
echo 'failed to apply delta to migration'
exit 1;
}
NODE_SCHEMA=$(($NODE_SCHEMA + 1))
fi
done
# update app
sudo cp app.war /var/lib/tomcat9/webapps/
echo "{ \"major\": $MAJOR, \"minor\": $MINOR, \"build\": $BUILD, \"schema\": $BUNDLE_SCHEMA }" > /opt/diatum/coredb.version
# reset cron scripts
cp stat.sh /home/ubuntu
cp renew.sh /home/ubuntu
crontab -r || true
echo -e '*/15 * * * * bash /home/ubuntu/stat.sh\n43 6 * * * certbot renew --renew-hook "bash /home/ubuntu/renew.sh"' | crontab
# update server version
mysql -u root -proot coredb -e "update config set str_value='$VERSION' where config_id='server_version'"
# restart app server
sudo service tomcat9 restart