-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathghostupgrade.sh
56 lines (55 loc) · 3.43 KB
/
ghostupgrade.sh
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
#!/bin/bash
#set -v
GHOSTDIR=~/ghost
PACKAGE_VERSION_OLD=$(sed -nE 's/^\s*"version": "(.*?)",$/\1/p' $GHOSTDIR/current/package.json)
CURRENT_GHOST=$(curl -s https://api.github.com/repos/TryGhost/Ghost/releases/latest | grep \"name\": | head -n 1 | cut -d '"' -f 4)
CURRENT_GHOST_DOWNLOAD=$(curl -s https://api.github.com/repos/TryGhost/Ghost/releases/latest | grep browser_download_url | cut -d '"' -f 4)
CURRENT_GHOST_FILE=$(echo $CURRENT_GHOST_DOWNLOAD | sed 's:.*/::')
echo "Installierte Version von Ghost: $PACKAGE_VERSION_OLD"
echo " Verfuegbare Version von Ghost: $CURRENT_GHOST"
cd $GHOSTDIR
if [[ $CURRENT_GHOST > $PACKAGE_VERSION_OLD ]]
then
read -r -p "Soll Ghost jetzt von Version $PACKAGE_VERSION_OLD auf $CURRENT_GHOST aktualisiert werden? [J/n] " response
if [[ $response =~ ^([jJ][aA]|[jJ]|"")$ ]]
then
echo "Pruefe auf Aktualisierung von npm..."
echo "Node.js version: $( node -v)" && echo "Bisherige npm version: $(npm -v)"
npm install -g npm
echo "Neue npm version: $(npm -v)"
echo "Pruefe auf Aktualisierung von knex-migrator..."
echo "Bisherige knex-migrator version: $(knex-migrator -v)"
npm install -g knex-migrator
echo "Neue knex-migrator version: $(knex-migrator -v)"
echo "Pruefe auf Aktualisierung von yarn..."
echo "Bisherige yarn version: $(yarn --version)"
npm install -g yarn
echo "Neue yarn version: $(yarn --version)"
echo "Ghost $CURRENT_GHOST wird heruntergeladen und entpackt..."
cd $GHOSTDIR/versions/
curl -LOk $CURRENT_GHOST_DOWNLOAD
unzip $GHOSTDIR/versions/$CURRENT_GHOST_FILE -d $CURRENT_GHOST
rm $GHOSTDIR/versions/$CURRENT_GHOST_FILE
echo "Ghost wird jetzt aktualisiert..."
cd $GHOSTDIR/versions/$CURRENT_GHOST
yarn install --production
echo "Die Datenbank von Ghost wird auf die neue Version migriert..."
cd $GHOSTDIR
NODE_ENV=production knex-migrator migrate --mgpath $GHOSTDIR/versions/$CURRENT_GHOST
ln -sfn $GHOSTDIR/versions/$CURRENT_GHOST $GHOSTDIR/current
PACKAGE_VERSION=$(sed -nE 's/^\s*"version": "(.*?)",$/\1/p' $GHOSTDIR/current/package.json)
echo "Ghost wurde von Version $PACKAGE_VERSION_OLD auf Version $PACKAGE_VERSION aktualisiert und wird neu gestartet. Dies kann ein paar Sekunden dauern..."
supervisorctl restart ghost
supervisorctl status
dir=$(cd $GHOSTDIR/versions && ls -1rd */ | tail -n +4)
keep=$(cd $GHOSTDIR/versions && ls -1rd */ | head -3)
echo "Loesche alte Versionen" && echo $dir && echo "Behalte die letzten drei Versionen" && echo $keep
cd $GHOSTDIR/versions && ls -1rd */ | tail -n +4 | xargs rm -rf
echo "Bei Fehlern Logfile ueberpruefen: 'supervisorctl tail ghost'"
echo "Zum Zuruecksetzen auf Ghost $PACKAGE_VERSION_OLD folgenden Befehl ausfuehren: 'ln -sfn $GHOSTDIR/versions/$PACKAGE_VERSION_OLD $GHOSTDIR/current' und dann per 'supervisorctl restart ghost' neustarten."
else
echo "-> Ghost wird nicht aktualisiert"
fi
else
echo "-> Ghost ist bereits auf dem aktuellen Stand, keine Aktualisierung notwendig"
fi