1
1
#! /bin/sh
2
2
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
19
4
20
5
export version=" $1 "
6
+ db=${2:- install}
21
7
22
8
set -eux
23
9
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
-
39
10
PHPVERSION=$( php -r ' echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION."\n";' )
40
11
export PHPVERSION
41
12
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
-
49
13
section_start " Run composer"
50
14
export APP_ENV=" dev"
51
- composer install --no-scripts
15
+ cd webapp
16
+ composer install --no-scripts | tee " $ARTIFACTS " /composer_out.txt
17
+ cd ..
52
18
section_end
53
19
54
20
section_start " Set simple admin password"
@@ -58,59 +24,98 @@ section_end
58
24
59
25
section_start " Install domserver"
60
26
make configure
61
- ./configure --with-baseurl=' https://localhost/domjudge/' --enable-doc-build=no --prefix=" /opt/domjudge"
27
+ ./configure \
28
+ --with-baseurl=' https://localhost/domjudge/' \
29
+ --with-domjudge-user=root \
30
+ --enable-doc-build=no \
31
+ --enable-judgehost-build=no | tee " $ARTIFACTS " /configure.txt
62
32
63
33
make domserver
64
- sudo make install-domserver
34
+ make install-domserver
65
35
section_end
66
36
67
- section_start " Explicit start mysql + install DB"
68
- sudo /etc/init.d/mysql start
37
+ section_start " SQL settings"
38
+ cat > ~ /.my.cnf << EOF
39
+ [client]
40
+ host=sqlserver
41
+ user=root
42
+ password=root
43
+ EOF
44
+ cat ~ /.my.cnf
45
+
46
+ mysql_root " CREATE DATABASE IF NOT EXISTS \` domjudge\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
47
+ mysql_root " CREATE USER IF NOT EXISTS \` domjudge\` @'%' IDENTIFIED BY 'domjudge';"
48
+ mysql_root " GRANT SELECT, INSERT, UPDATE, DELETE ON \` domjudge\` .* TO 'domjudge'@'%';"
49
+ mysql_root " FLUSH PRIVILEGES;"
50
+
51
+ # Show some MySQL debugging
52
+ mysql_root " show databases"
53
+ mysql_root " SELECT CURRENT_USER();"
54
+ mysql_root " SELECT USER();"
55
+ mysql_root " SELECT user,host FROM mysql.user"
56
+ echo " unused:sqlserver:domjudge:domjudge:domjudge:3306" > /opt/domjudge/domserver/etc/dbpasswords.secret
57
+ mysql_user " SELECT CURRENT_USER();"
58
+ mysql_user " SELECT USER();"
59
+ section_end
69
60
61
+ section_start " Install DOMjudge database"
70
62
/opt/domjudge/domserver/bin/dj_setup_database -uroot -proot bare-install
71
63
section_end
72
64
65
+ section_start " Show PHP config"
66
+ php -v | tee -a " $ARTIFACTS " /php.txt
67
+ php -m | tee -a " $ARTIFACTS " /php.txt
68
+ section_end
69
+
70
+ section_start " Show general config"
71
+ printenv | tee -a " $ARTIFACTS " /environment.txt
72
+ cp /etc/os-release " $ARTIFACTS " /os-release.txt
73
+ cp /proc/cmdline " $ARTIFACTS " /cmdline.txt
74
+ section_end
75
+
73
76
section_start " Setup webserver"
74
- sudo cp /opt/domjudge/domserver/etc/domjudge-fpm.conf /etc/php/$PHPVERSION /fpm/pool.d/domjudge.conf
77
+ cp /opt/domjudge/domserver/etc/domjudge-fpm.conf /etc/php/" $PHPVERSION " /fpm/pool.d/domjudge.conf
75
78
76
- sudo rm -f /etc/nginx/sites-enabled/*
77
- sudo cp /opt/domjudge/domserver/etc/nginx-conf /etc/nginx/sites-enabled/domjudge
79
+ rm -f /etc/nginx/sites-enabled/*
80
+ cp /opt/domjudge/domserver/etc/nginx-conf /etc/nginx/sites-enabled/domjudge
78
81
79
82
openssl 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
83
+ cp /tmp/server.crt /usr/local/share/ca-certificates/
84
+ update-ca-certificates
82
85
# shellcheck disable=SC2002
83
- cat " $( pwd) /.github/jobs/data/nginx_extra" | sudo tee -a /etc/nginx/sites-enabled/domjudge
84
- sudo nginx -t
86
+ cat " $( pwd) /.github/jobs/data/nginx_extra" | tee -a /etc/nginx/sites-enabled/domjudge
87
+ nginx -t
85
88
section_end
86
89
87
90
section_start " Show webserver is up"
88
91
for service in nginx php${PHPVERSION} -fpm; do
89
- sudo systemctl restart $service
90
- sudo systemctl status $service
92
+ service " $service " restart
93
+ service " $service " status
91
94
done
92
95
section_end
93
96
94
- section_start " Install the example data"
95
- /opt/domjudge/domserver/bin/dj_setup_database -uroot -proot install-examples
96
- section_end
97
+ if [ " ${db} " = " install" ]; then
98
+ section_start " Install the example data"
99
+ /opt/domjudge/domserver/bin/dj_setup_database -uroot -proot install-examples | tee -a " $ARTIFACTS /mysql.txt"
100
+ section_end
101
+ fi
97
102
98
103
section_start " Setup user"
99
104
# We're using the admin user in all possible roles
100
- echo " DELETE FROM userrole WHERE userid=1;" | mysql -uroot -proot domjudge
105
+ mysql_root " DELETE FROM userrole WHERE userid=1;" domjudge
101
106
if [ " $version " = " team" ]; then
102
107
# 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
108
+ mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 3);" domjudge
109
+ mysql_root " UPDATE user SET teamid = 1 WHERE userid = 1;" domjudge
105
110
elif [ " $version " = " jury" ]; then
106
111
# Add jury to admin user
107
- echo " INSERT INTO userrole (userid, roleid) VALUES (1, 2);" | mysql -uroot -proot domjudge
112
+ mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 2);" domjudge
108
113
elif [ " $version " = " balloon" ]; then
109
114
# Add balloon to admin user
110
- echo " INSERT INTO userrole (userid, roleid) VALUES (1, 4);" | mysql -uroot -proot domjudge
115
+ mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 4);" domjudge
111
116
elif [ " $version " = " admin" ]; then
112
117
# Add admin to admin user
113
- echo " INSERT INTO userrole (userid, roleid) VALUES (1, 1);" | mysql -uroot -proot domjudge
118
+ mysql_root " INSERT INTO userrole (userid, roleid) VALUES (1, 1);" domjudge
114
119
fi
115
120
section_end
116
121
0 commit comments