11#! /bin/sh
22
3- # Functions to annotate the Github actions logs
4- alias trace_on=' set -x'
5- alias trace_off=' { set +x; } 2>/dev/null'
6-
7- section_start_internal () {
8- echo " ::group::$1 "
9- trace_on
10- }
11-
12- section_end_internal () {
13- echo " ::endgroup::"
14- trace_on
15- }
16-
17- alias section_start=' trace_off ; section_start_internal '
18- alias section_end=' trace_off ; section_end_internal '
3+ . .github/jobs/ci_settings.sh
194
205export version=" $1 "
6+ db=${2:- install}
217
228set -eux
239
24- section_start " Update packages"
25- sudo apt update
26- section_end
27-
28- section_start " Install needed packages"
29- sudo apt install -y acl zip unzip nginx php php-fpm php-gd \
30- php-cli php-intl php-mbstring php-mysql php-curl php-json \
31- php-xml php-zip ntp make sudo debootstrap \
32- libcgroup-dev lsof php-cli php-curl php-json php-xml \
33- php-zip procps gcc g++ default-jre-headless \
34- default-jdk-headless ghc fp-compiler autoconf automake bats \
35- python3-sphinx python3-sphinx-rtd-theme rst2pdf fontconfig \
36- python3-yaml latexmk curl
37- section_end
38-
3910PHPVERSION=$( php -r ' echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION."\n";' )
4011export PHPVERSION
4112
42- section_start " Install composer"
43- php -r " copy('https://getcomposer.org/installer', 'composer-setup.php');"
44- HASH=" $( wget -q -O - https://composer.github.io/installer.sig) "
45- php -r " if (hash_file('SHA384', 'composer-setup.php') === '$HASH ') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
46- sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
47- section_end
48-
4913section_start " Run composer"
5014export APP_ENV=" dev"
51- composer install --no-scripts
15+ cd webapp
16+ composer install --no-scripts | tee " $ARTIFACTS " /composer_out.txt
17+ cd ..
5218section_end
5319
5420section_start " Set simple admin password"
@@ -58,59 +24,119 @@ section_end
5824
5925section_start " Install domserver"
6026make configure
61- ./configure --with-baseurl=' https://localhost/domjudge/' --enable-doc-build=no --prefix=" /opt/domjudge"
27+ if [ " $version " = " all" ]; then
28+ # Note that we use http instead of https here as python requests doesn't
29+ # like our self-signed cert. We should fix this separately.
30+ ./configure \
31+ --with-baseurl=' http://localhost/domjudge/' \
32+ --with-domjudge-user=domjudge \
33+ --with-judgehost-chrootdir=/chroot/domjudge | tee " $ARTIFACTS " /configure.txt
34+ make build-scripts domserver judgehost docs
35+ make install-domserver install-judgehost install-docs
36+ else
37+ ./configure \
38+ --with-baseurl=' https://localhost/domjudge/' \
39+ --with-domjudge-user=root \
40+ --enable-doc-build=no \
41+ --enable-judgehost-build=no | tee " $ARTIFACTS " /configure.txt
42+ make domserver
43+ make install-domserver
44+ fi
45+
46+ section_end
6247
63- make domserver
64- sudo make install-domserver
48+ section_start " SQL settings"
49+ cat > ~ /.my.cnf << EOF
50+ [client]
51+ host=sqlserver
52+ user=root
53+ password=root
54+ EOF
55+ cat ~ /.my.cnf
56+
57+ mysql_root " CREATE DATABASE IF NOT EXISTS \` domjudge\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
58+ mysql_root " CREATE USER IF NOT EXISTS \` domjudge\` @'%' IDENTIFIED BY 'domjudge';"
59+ mysql_root " GRANT SELECT, INSERT, UPDATE, DELETE ON \` domjudge\` .* TO 'domjudge'@'%';"
60+ mysql_root " FLUSH PRIVILEGES;"
61+
62+ # Show some MySQL debugging
63+ mysql_root " show databases"
64+ mysql_root " SELECT CURRENT_USER();"
65+ mysql_root " SELECT USER();"
66+ mysql_root " SELECT user,host FROM mysql.user"
67+ echo " unused:sqlserver:domjudge:domjudge:domjudge:3306" > /opt/domjudge/domserver/etc/dbpasswords.secret
68+ mysql_user " SELECT CURRENT_USER();"
69+ mysql_user " SELECT USER();"
6570section_end
6671
67- section_start " Explicit start mysql + install DB"
68- sudo /etc/init.d/mysql start
72+ if [ " ${db} " = " install" ]; then
73+ section_start " Install DOMjudge database"
74+ /opt/domjudge/domserver/bin/dj_setup_database -uroot -proot bare-install
75+ section_end
76+ elif [ " ${db} " = " upgrade" ]; then
77+ section_start " Upgrade DOMjudge database"
78+ /opt/domjudge/domserver/bin/dj_setup_database -uroot -proot upgrade
79+ section_end
80+ fi
81+
82+ section_start " Show PHP config"
83+ php -v | tee -a " $ARTIFACTS " /php.txt
84+ php -m | tee -a " $ARTIFACTS " /php.txt
85+ section_end
6986
70- /opt/domjudge/domserver/bin/dj_setup_database -uroot -proot bare-install
87+ section_start " Show general config"
88+ printenv | tee -a " $ARTIFACTS " /environment.txt
89+ cp /etc/os-release " $ARTIFACTS " /os-release.txt
90+ cp /proc/cmdline " $ARTIFACTS " /cmdline.txt
7191section_end
7292
7393section_start " Setup webserver"
74- sudo cp /opt/domjudge/domserver/etc/domjudge-fpm.conf /etc/php/$PHPVERSION /fpm/pool.d/domjudge.conf
94+ cp /opt/domjudge/domserver/etc/domjudge-fpm.conf /etc/php/" $PHPVERSION " /fpm/pool.d/domjudge.conf
7595
76- sudo rm -f /etc/nginx/sites-enabled/*
77- sudo cp /opt/domjudge/domserver/etc/nginx-conf /etc/nginx/sites-enabled/domjudge
96+ rm -f /etc/nginx/sites-enabled/*
97+ cp /opt/domjudge/domserver/etc/nginx-conf /etc/nginx/sites-enabled/domjudge
7898
7999openssl req -nodes -new -x509 -keyout /tmp/server.key -out /tmp/server.crt -subj " /C=NL/ST=Noord-Holland/L=Amsterdam/O=TestingForPR/CN=localhost"
80- sudo cp /tmp/server.crt /usr/local/share/ca-certificates/
81- sudo update-ca-certificates
100+ cp /tmp/server.crt /usr/local/share/ca-certificates/
101+ update-ca-certificates
82102# shellcheck disable=SC2002
83- cat " $( pwd) /.github/jobs/data/nginx_extra" | sudo tee -a /etc/nginx/sites-enabled/domjudge
84- sudo nginx -t
103+ cat " $( pwd) /.github/jobs/data/nginx_extra" | tee -a /etc/nginx/sites-enabled/domjudge
104+ nginx -t
85105section_end
86106
87107section_start " Show webserver is up"
88108for service in nginx php${PHPVERSION} -fpm; do
89- sudo systemctl restart $service
90- sudo systemctl status $service
109+ service " $service " restart
110+ service " $service " status
91111done
92112section_end
93113
94- section_start " Install the example data"
95- /opt/domjudge/domserver/bin/dj_setup_database -uroot -proot install-examples
96- section_end
114+ if [ " ${db} " = " install" ]; then
115+ section_start " Install the example data"
116+ /opt/domjudge/domserver/bin/dj_setup_database -uroot -proot install-examples | tee -a " $ARTIFACTS /mysql.txt"
117+ section_end
118+ fi
97119
98120section_start " Setup user"
99121# We're using the admin user in all possible roles
100- echo " DELETE FROM userrole WHERE userid=1;" | mysql -uroot -proot domjudge
122+ mysql_root " DELETE FROM userrole WHERE userid=1;" domjudge
101123if [ " $version " = " team" ]; then
102124 # Add team to admin user
103- echo " INSERT INTO userrole (userid, roleid) VALUES (1, 3);" | mysql -uroot -proot domjudge
104- echo " UPDATE user SET teamid = 1 WHERE userid = 1;" | mysql -uroot -proot domjudge
125+ mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 3);" domjudge
126+ mysql_root " UPDATE user SET teamid = 1 WHERE userid = 1;" domjudge
105127elif [ " $version " = " jury" ]; then
106128 # Add jury to admin user
107- echo " INSERT INTO userrole (userid, roleid) VALUES (1, 2);" | mysql -uroot -proot domjudge
129+ mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 2);" domjudge
108130elif [ " $version " = " balloon" ]; then
109131 # Add balloon to admin user
110- echo " INSERT INTO userrole (userid, roleid) VALUES (1, 4);" | mysql -uroot -proot domjudge
132+ mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 4);" domjudge
111133elif [ " $version " = " admin" ]; then
112134 # Add admin to admin user
113- echo " INSERT INTO userrole (userid, roleid) VALUES (1, 1);" | mysql -uroot -proot domjudge
135+ mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 1);" domjudge
136+ elif [ " $version " = " all" ]; then
137+ mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 1);" domjudge
138+ mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 3);" domjudge
139+ mysql_root " UPDATE user SET teamid = 1 WHERE userid = 1;" domjudge
114140fi
115141section_end
116142
0 commit comments