blob: 7463e552a9c7fc16eb4336238ad1d09a26027ed9 (
plain) (
blame)
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
|
#!/usr/bin/env bash
version_file="versions.txt"
checksum_file="sha256checksum.txt"
deploy_dir="public"
mode_url="https://manaplus.germantmw.de/versions/"
mode_file="mode.txt"
mirror_file="mirrorlist"
if [[ ${CI_PROJECT_DIR} == "" ]]; then
project="docker-testing" # change me
namespace="jak89_1" # change me
version_url="https://${namespace}.gitlab.io/${project}/${version_file}"
version_url2="https://gitlab.com/${project}/${project}/-/jobs/artifacts/master/raw/$deploy_dir/${version_file}?job=pages"
echo "[NON CI] : using local paths"
local=1
else
version_url="${CI_PAGES_URL}/${version_file}"
version_url2="https://gitlab.com/${CI_PROJECT_PATH}/-/jobs/artifacts/master/raw/$deploy_dir/${version_file}?job=${CI_JOB_NAME}"
local=0
fi
version_url3="https://manaplus.germantmw.de/versions/${version_file}" # fallback to my server if gitlab breaks its own pages *blames gitlab*
#add new mirrors to the end of BOTH lines
mirror_names=("gitlab.io gertmw.de")
mirror_urls=("https://themanaworld.gitlab.io/manaplus/builder/ https://manaplus.germantmw.de/versions/") # change me
last_checksum="https://gitlab.com/${CI_PROJECT_PATH}/-/jobs/artifacts/master/raw/build/${checksum_file}?job=mxe_gcc5"
#last_checksum_d="https://gitlab.com/${CI_PROJECT_PATH}/-/jobs/artifacts/master/raw/build/debug-${checksum_file}?job=mxe_gcc5" # not handled yet
# end of variable-scrabble (move this to gitlab-ci.yml laterâ„¢)
if [[ ! -d $deploy_dir ]]; then
mkdir -p $deploy_dir
fi
# buffer for .html
_b(){
BUFFER_HTML=${BUFFER_HTML}${1}
}
# buffer for .xml
_x(){
BUFFER_XML=${BUFFER_XML}${1}
}
# buffer for .json
_j(){
BUFFER_JSON=${BUFFER_JSON}${1}
}
gen_page(){
_b "<!DOCTYPE html><html>"
_b "<head><title>MirrorList</title></head>"
_b "<body><center>"
_b "<h1>ManaPlus Mirror & Version List</h1>"
_b "<sup>hover to see checksums</sup>"
_b "<table border='1px solid black'>"
_b "<tr>"
for mirror in $mirror_names; do
_b "<th>$mirror</th>"
done
_b "</tr>"
_x "<?xml version='1.0' encoding='utf-8'?>\n"
_x "<!--\n Authors: jak1\n Copyright: (C) 2021 TheManaWorld Developers\n Generated by: Gitlab deploy (manual changes will get overwritten)\n-->\n"
_j "{\n"
_j " \"#comment\": \"Authors: jak1 Copyright: (C) 2021 TheManaWorld Developers Generated by: Gitlab deploy (manual changes will get overwritten)\",\n"
_j " \"versions\": {\n"
_x "<versions>\n";
while IFS= read -r line; do
# ${line#* } = checksum
# ${line% *} = filename
_b "<tr>"
_x " <version file='${line#* }' checksum='${line% *}'>\n";
_j " \"version\": {\n \"-file\": \"${line#* }\",\n \"-checksum\": \"${line% *}\",\n \"mirror\": [\n"
c=0
for mirror_url in $mirror_urls; do
_b "<td><a title='sha256:${line% *}' href='${mirror_url}${line#* }'>${line#* }</a></td>";
_x " <mirror url='${mirror_url}${line#* }' />\n";
_j " {\n \"-url\": \"${mirror_url}${line#* }\"\n }"
if [[ $c == ${#mirror_urls[@]} ]]; then
_j "\n"
else
_j ",\n"
fi
((c++))
done
_j " ]\n }\n }\n"
_x " </version>\n";
_b "</tr>"
done < $version_file
_x "</versions>\n";
_j "}\n"
_b "</table>"
_b "<a href='$version_file'>$version_file</a>"
_b "</center></body>"
_b "</html>"
#write out files (keep source formating for xml & json)
echo $BUFFER_HTML > $deploy_dir/$mirror_file.html
echo -e "$BUFFER_XML" > $deploy_dir/$mirror_file.xml
echo -e "$BUFFER_JSON" > $deploy_dir/$mirror_file.json
}
add_new_release(){
wget $last_checksum -O $checksum_file -q
#if #TODO: check if new tag/version exists, of if the pipeline got trigerred manualy
checksum=$(<${checksum_file})
echo $checksum >> $version_file
#fi
}
get_version_file(){
# -O is needed for artifacts!
# getting version file from deployed pages (this can break)
wget $version_url -O $version_file -q
if [[ ! -f $version_file ]]; then
echo "cant download '${version_file}' from '${version_url}'"
# getting version file from last artifacts (this can break)
wget $version_url2 -O $version_file -q
if [[ ! -f $version_file ]]; then
echo "cant download '${version_file}' from '${version_url2}'"
# getting version file from my server as fallback
wget $version_url3 -O $version_file -q
if [[ ! -f $version_file ]]; then
echo "cant download '${version_file}' from '${version_url3}'"
# this should only happen for the first build!
touch $version_file
fi
fi
fi
}
# simple mode check for testings only
get_mode(){
mode=""
wget $mode_url$mode_file -q
if grep -q testing "$mode_file"; then
echo "[deploy] test only!"
mode="test"
return 0
elif grep -q release "$mode_file"; then
echo "[deploy] release/stable!"
return 1
else # we can also add other modes here, atm just to dont deploy tonns of test versions :)
echo "[deploy] ERR: unknown mode!"
exit 1
fi
}
local_cleanup(){
rm $checksum_file
rm $mode_file
}
deploy(){
mv $version_file $deploy_dir || exit 1
if [[ $local == 0 ]]; then
scp -o StrictHostKeyChecking=no $deploy_dir/$version_file $DEPLOY_HOST:$DEPLOY_LOCATION$mode || echo "WARN: cant deploy to Server!"
scp -o StrictHostKeyChecking=no $deploy_dir/$mirror_file.xml $DEPLOY_HOST:$DEPLOY_LOCATION$mode || echo "WARN: cant deploy to Server!"
scp -o StrictHostKeyChecking=no $deploy_dir/$mirror_file.json $DEPLOY_HOST:$DEPLOY_LOCATION$mode || echo "WARN: cant deploy to Server!"
scp -o StrictHostKeyChecking=no $deploy_dir/$mirror_file.html $DEPLOY_HOST:$DEPLOY_LOCATION$mode || echo "WARN: cant deploy to Server!"
fi
# i guess i need to get old artifacts to keep pages in case it was a test build
if get_mode; then
find $deploy_dir -type f -not -name '*.xsd' -delete
#else
# deploying versions
#scp -o StrictHostKeyChecking=no $deploy_dir/.zip $DEPLOY_HOST:$DEPLOY_LOCATION$mode || echo "WARN: cant deploy to Server!"
#scp -o StrictHostKeyChecking=no $checksum_file.txt $DEPLOY_HOST:$DEPLOY_LOCATION$mode || echo "WARN: cant deploy to Server!"
fi
}
linters(){
xmllint --schema $deploy_dir/$mirror_file.xsd $deploy_dir/$mirror_file.xml --noout || exit 1
jsonlint-php $deploy_dir/$mirror_file.json || exit 1
}
get_version_file
add_new_release
gen_page
linters
deploy
local_cleanup
echo "${mode}deploy passed \\o/"
|