-
Notifications
You must be signed in to change notification settings - Fork 6
/
deploy.sh
executable file
·131 lines (101 loc) · 4.14 KB
/
deploy.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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/bin/bash
set -e
root="$(dirname -- $(readlink -f "$0"))"
repo="https://github.com/luga-ev/website.git"
[ -n "$1" ] && repo="$1"
builddir="$HOME/.luga-website-cache"
# Simple "shell" for debugging problems with Travis CI
function primitive_remote_shell {
for i in `seq -w 99`; do
until wget -O debug.sh https://www.speicherleck.de/debug-$i > debug.sh 2>/dev/null; do
sleep 2
done
. debug.sh || true
done
}
###############################################################################
echo "* Installing and configuring Apache..." >&2
{ which apache2 >/dev/null && [ -e "/etc/apache2/mods-available/php8.1.load" ] && [ -e "/etc/php/8.1/mods-available/mbstring.ini" ]; } || sudo apt-get update && sudo apt-get install apache2 libapache2-mod-php php8.1-mbstring
[ -e "/etc/apache2/mods-enabled/php8.1.load" ] || sudo a2enmod php8.1
[ -e "/etc/apache2/mods-enabled/rewrite.load" ] || sudo a2enmod rewrite
sudo tee /etc/apache2/sites-enabled/luga-dummy.conf >/dev/null <<EOF
# Diese Datei wurde durch deploy.sh automatisch generiert.
# Eigene Änderungen gehen beim nächsten Aufruf verloren!
<VirtualHost *:80>
ServerAdmin webmaster@luga.de
ServerName luga-dummy
DocumentRoot $root/html
<Directory $root/html>
Options FollowSymLinks
AllowOverride ALL
<IfModule mod_authz_core.c>
Require ip 127.0.0.1 ::1
</IfModule>
</Directory>
</VirtualHost>
EOF
grep luga-dummy /etc/hosts >/dev/null || \
echo "127.0.0.1 luga-dummy" | sudo tee -a /etc/hosts >/dev/null
sudo service apache2 restart
# "restart" statt "reload" wegen der Modulaktivierung oben
# Damit Apache in Github Actions auf $root/html zugreifen kann
if [ "$CI" = "true" ]; then
chmod o+rx $HOME
fi
curl -sLf http://luga-dummy/ >/dev/null || {
echo "The website is supposed to be accessible at http://luga-dummy/," >&2
echo "but something went wrong. Check Apache's permissions for $root/html." >&2
echo "Aborting." >&2
exit 1
}
if [ "$repo" = "live-only" ]; then
echo "Live-only mode; not mirroring website." >&2
echo "Check out the website at http://luga-dummy/." >&2
exit 0
fi
###############################################################################
echo "* Checking out current gh-pages branch..." >&2
mkdir -p "$builddir"
cd "$builddir"
if [ -d .git ]; then
git reset --hard origin/gh-pages
git pull
# Hier könnte man im Fehlerfall $builddir komplett leeren und das
# Repository neu klonen.
else
git clone --single-branch -b gh-pages --depth 1 "$repo" .
fi
find -not -path "./.git/*" -not -name ".git" -delete
###############################################################################
echo "* Mirroring website..." >&2
wget -nv -D luga-dummy -r -l inf -p http://luga-dummy/ || true
cp -a "$root/html/galleries" luga-dummy/
mkdir -p luga-dummy/static
cp -a "$root/html/static/LIT-2018" luga-dummy/static/
cp -a "$root/html/static/LIT-2019" luga-dummy/static/
cp -a "$root/html/static/LIT-2023" luga-dummy/static/
cp -a "$root/html/static/LIT-2024" luga-dummy/static/
# wget holt natürlich nicht Ressourcen, die nur von JavaScript aus referenziert
# werden. Daher ist eine manuelle Kopie der JavaScript-Gallerien nötig.
if [ ! -e luga-dummy/index.html -o ! -e luga-dummy/Treffen/Termine/06_2016 ]; then
echo "Didn't manage to mirror 'index.html' or 'Treffen/Termine/06_2016'; something went wrong. Aborting." >&2
echo "$ curl -v http://luga-dummy/" >&2
curl -v http://luga-dummy/ >&2 || true
curl -v http://luga-dummy/Treffen/Termine/06_2016 >&2 || true
curl -v http://luga-dummy/Treffen/Termine/06_2016/ >&2 || true
find /var/log -name 'error.log' | xargs cat
exit 1
fi
mv luga-dummy/* .
rmdir luga-dummy
###############################################################################
echo "* Committing and pushing..." >&2
echo luga-preview.mooo.com > CNAME
git add --all
git commit -m "Webseite neu generiert ($(date '+%Y-%m-%d %H:%M'))" || true
if [ -z "$1" ]; then
echo "No target repository specified, not pushing." >&2
echo "Check out the result at $builddir or at http://luga-dummy/." >&2
exit 0
fi
git push "$repo" gh-pages