44
55export version=" $1 "
66db=${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
813
914MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:- root}
1015
1116set -eux
1217
1318if [ -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";' )
1520fi
1621
17- show_phpinfo " $PHPVERSION "
22+ show_phpinfo " $phpversion "
1823
1924section_start " Run composer"
2025export APP_ENV=" dev"
4752 --enable-judgehost-build=no | tee " $ARTIFACTS " /configure.txt
4853 make domserver
4954 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
5058fi
51-
5259section_end
5360
5461section_start " SQL settings"
5562cat > ~ /.my.cnf << EOF
5663[client]
5764host=sqlserver
5865user=root
59- password=root
66+ password=${MYSQL_ROOT_PASSWORD}
6067EOF
6168cat ~ /.my.cnf
6269
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;"
6471mysql_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'@'%';"
6673mysql_root " FLUSH PRIVILEGES;"
6774
6875# Show some MySQL debugging
@@ -73,7 +80,7 @@ mysql_root "SELECT user,host FROM mysql.user"
7380mysql_root " SET GLOBAL max_allowed_packet=1073741824"
7481mysql_root " SHOW GLOBAL STATUS LIKE 'Connection_errors_%'"
7582mysql_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
7784mysql_user " SELECT CURRENT_USER();"
7885mysql_user " SELECT USER();"
7986section_end
@@ -100,7 +107,7 @@ cp /proc/cmdline "$ARTIFACTS"/cmdline.txt
100107section_end
101108
102109section_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
104111
105112rm -f /etc/nginx/sites-enabled/*
106113cp /opt/domjudge/domserver/etc/nginx-conf /etc/nginx/sites-enabled/domjudge
@@ -114,38 +121,41 @@ nginx -t
114121section_end
115122
116123section_start " Show webserver is up"
117- for service in nginx php${PHPVERSION } -fpm; do
124+ for service in nginx php${phpversion } -fpm; do
118125 service " $service " restart
119126 service " $service " status
120127done
121128section_end
122129
123130if [ " ${db} " = " install" ]; then
124131 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
125136 /opt/domjudge/domserver/bin/dj_setup_database -uroot -p${MYSQL_ROOT_PASSWORD} install-examples | tee -a " $ARTIFACTS /mysql.txt"
126137 section_end
127138fi
128139
129140section_start " Setup user"
130141# 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
132143if [ " $version " = " team" ]; then
133144 # 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
136147elif [ " $version " = " jury" ]; then
137148 # 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
139150elif [ " $version " = " balloon" ]; then
140151 # 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
142153elif [ " $version " = " admin" ]; then
143154 # 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
149160fi
150161section_end
151-
0 commit comments