4
4
5
5
export version=" $1 "
6
6
db=${2:- install}
7
- phpversion=" ${3} "
7
+ phpversion=" ${3:- 8.1} "
8
+ # If this script is called from unit-tests.sh, we use the test environment
9
+ export APP_ENV=" ${4:- prod} "
10
+
11
+ # In the test environment, we need to use a different database
12
+ [ " $APP_ENV " = " prod" ] && DATABASE_NAME=domjudge || DATABASE_NAME=domjudge_test
8
13
9
14
MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:- root}
10
15
11
16
set -eux
12
17
13
18
if [ -z " $phpversion " ]; then
14
- PHPVERSION =$( php -r ' echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION."\n";' )
19
+ phpversion =$( php -r ' echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION."\n";' )
15
20
fi
16
21
17
- show_phpinfo " $PHPVERSION "
22
+ show_phpinfo " $phpversion "
18
23
19
24
section_start " Run composer"
20
25
export APP_ENV=" dev"
47
52
--enable-judgehost-build=no | tee " $ARTIFACTS " /configure.txt
48
53
make domserver
49
54
make install-domserver
55
+ rm -rf /opt/domjudge/domserver/webapp/public/doc
56
+ cp -r doc /opt/domjudge/domserver/webapp/public/
57
+ find /opt/domjudge/domserver -name DOMjudgelogo.pdf
50
58
fi
51
-
52
59
section_end
53
60
54
61
section_start " SQL settings"
55
62
cat > ~ /.my.cnf << EOF
56
63
[client]
57
64
host=sqlserver
58
65
user=root
59
- password=root
66
+ password=${MYSQL_ROOT_PASSWORD}
60
67
EOF
61
68
cat ~ /.my.cnf
62
69
63
- mysql_root " CREATE DATABASE IF NOT EXISTS \` domjudge \` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
70
+ mysql_root " CREATE DATABASE IF NOT EXISTS \` $DATABASE_NAME \` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
64
71
mysql_root " CREATE USER IF NOT EXISTS \` domjudge\` @'%' IDENTIFIED BY 'domjudge';"
65
- mysql_root " GRANT SELECT, INSERT, UPDATE, DELETE ON \` domjudge \` .* TO 'domjudge'@'%';"
72
+ mysql_root " GRANT SELECT, INSERT, UPDATE, DELETE ON \` $DATABASE_NAME \` .* TO 'domjudge'@'%';"
66
73
mysql_root " FLUSH PRIVILEGES;"
67
74
68
75
# Show some MySQL debugging
@@ -73,7 +80,7 @@ mysql_root "SELECT user,host FROM mysql.user"
73
80
mysql_root " SET GLOBAL max_allowed_packet=1073741824"
74
81
mysql_root " SHOW GLOBAL STATUS LIKE 'Connection_errors_%'"
75
82
mysql_root " SHOW VARIABLES LIKE '%_timeout'"
76
- echo " unused:sqlserver:domjudge :domjudge:domjudge:3306" > /opt/domjudge/domserver/etc/dbpasswords.secret
83
+ echo " unused:sqlserver:$DATABASE_NAME :domjudge:domjudge:3306" > /opt/domjudge/domserver/etc/dbpasswords.secret
77
84
mysql_user " SELECT CURRENT_USER();"
78
85
mysql_user " SELECT USER();"
79
86
section_end
@@ -100,7 +107,7 @@ cp /proc/cmdline "$ARTIFACTS"/cmdline.txt
100
107
section_end
101
108
102
109
section_start " Setup webserver"
103
- cp /opt/domjudge/domserver/etc/domjudge-fpm.conf /etc/php/" $PHPVERSION " /fpm/pool.d/domjudge.conf
110
+ cp /opt/domjudge/domserver/etc/domjudge-fpm.conf /etc/php/" $phpversion " /fpm/pool.d/domjudge.conf
104
111
105
112
rm -f /etc/nginx/sites-enabled/*
106
113
cp /opt/domjudge/domserver/etc/nginx-conf /etc/nginx/sites-enabled/domjudge
@@ -114,38 +121,41 @@ nginx -t
114
121
section_end
115
122
116
123
section_start " Show webserver is up"
117
- for service in nginx php${PHPVERSION } -fpm; do
124
+ for service in nginx php${phpversion } -fpm; do
118
125
service " $service " restart
119
126
service " $service " status
120
127
done
121
128
section_end
122
129
123
130
if [ " ${db} " = " install" ]; then
124
131
section_start " Install the example data"
132
+ if [ " $version " = " unit" ]; then
133
+ # Make sure admin has no team associated so we will not insert submissions during unit tests.
134
+ mysql_root " UPDATE user SET teamid=null WHERE userid=1;" $DATABASE_NAME
135
+ fi
125
136
/opt/domjudge/domserver/bin/dj_setup_database -uroot -p${MYSQL_ROOT_PASSWORD} install-examples | tee -a " $ARTIFACTS /mysql.txt"
126
137
section_end
127
138
fi
128
139
129
140
section_start " Setup user"
130
141
# We're using the admin user in all possible roles
131
- mysql_root " DELETE FROM userrole WHERE userid=1;" domjudge
142
+ mysql_root " DELETE FROM userrole WHERE userid=1;" $DATABASE_NAME
132
143
if [ " $version " = " team" ]; then
133
144
# Add team to admin user
134
- mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 3);" domjudge
135
- mysql_root " UPDATE user SET teamid = 1 WHERE userid = 1;" domjudge
145
+ mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 3);" $DATABASE_NAME
146
+ mysql_root " UPDATE user SET teamid = 1 WHERE userid = 1;" $DATABASE_NAME
136
147
elif [ " $version " = " jury" ]; then
137
148
# Add jury to admin user
138
- mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 2);" domjudge
149
+ mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 2);" $DATABASE_NAME
139
150
elif [ " $version " = " balloon" ]; then
140
151
# Add balloon to admin user
141
- mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 4);" domjudge
152
+ mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 4);" $DATABASE_NAME
142
153
elif [ " $version " = " admin" ]; then
143
154
# Add admin to admin user
144
- mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 1);" domjudge
145
- elif [ " $version " = " all" ]; then
146
- mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 1);" domjudge
147
- mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 3);" domjudge
148
- mysql_root " UPDATE user SET teamid = 1 WHERE userid = 1;" domjudge
155
+ mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 1);" $DATABASE_NAME
156
+ elif [ " $version " = " all" ] || [ " $version " = " unit " ] ; then
157
+ mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 1);" $DATABASE_NAME
158
+ mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 3);" $DATABASE_NAME
159
+ mysql_root " UPDATE user SET teamid = 1 WHERE userid = 1;" $DATABASE_NAME
149
160
fi
150
161
section_end
151
-
0 commit comments