Skip to content

Commit f832b11

Browse files
committed
Set a more grep-able mysql root password in CI jobs, drop domjudge user
The domjudge mysql user should be created by our setup scripts, so that we test these and need to set the password only in one place. Also don't explicitly pass root user/password to dj_setup_database script. It will infer it from `~/.my.cnf`. Rename mysql_root to mysql_log helper to clarify behaviour.
1 parent 49357f1 commit f832b11

File tree

5 files changed

+34
-47
lines changed

5 files changed

+34
-47
lines changed

.github/jobs/baseinstall.sh

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export APP_ENV="${4:-prod}"
1111
# In the test environment, we need to use a different database
1212
[ "$APP_ENV" = "prod" ] && DATABASE_NAME=domjudge || DATABASE_NAME=domjudge_test
1313

14-
MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-root}
14+
MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-mysql_root_password}
1515

1616
set -euxo pipefail
1717

@@ -67,31 +67,29 @@ password=${MYSQL_ROOT_PASSWORD}
6767
EOF
6868
cat ~/.my.cnf
6969

70-
mysql_root "CREATE DATABASE IF NOT EXISTS \`$DATABASE_NAME\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
71-
mysql_root "CREATE USER IF NOT EXISTS \`domjudge\`@'%' IDENTIFIED BY 'domjudge';"
72-
mysql_root "GRANT SELECT, INSERT, UPDATE, DELETE ON \`$DATABASE_NAME\`.* TO 'domjudge'@'%';"
73-
mysql_root "FLUSH PRIVILEGES;"
70+
mysql_log "CREATE DATABASE IF NOT EXISTS \`$DATABASE_NAME\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
71+
mysql_log "CREATE USER IF NOT EXISTS \`domjudge\`@'%' IDENTIFIED BY 'domjudge';"
72+
mysql_log "GRANT SELECT, INSERT, UPDATE, DELETE ON \`$DATABASE_NAME\`.* TO 'domjudge'@'%';"
73+
mysql_log "FLUSH PRIVILEGES;"
74+
echo "unused:sqlserver:$DATABASE_NAME:domjudge:domjudge:3306" > /opt/domjudge/domserver/etc/dbpasswords.secret
7475

7576
# Show some MySQL debugging
76-
mysql_root "show databases"
77-
mysql_root "SELECT CURRENT_USER();"
78-
mysql_root "SELECT USER();"
79-
mysql_root "SELECT user,host FROM mysql.user"
80-
mysql_root "SET GLOBAL max_allowed_packet=1073741824"
81-
mysql_root "SHOW GLOBAL STATUS LIKE 'Connection_errors_%'"
82-
mysql_root "SHOW VARIABLES LIKE '%_timeout'"
83-
echo "unused:sqlserver:$DATABASE_NAME:domjudge:domjudge:3306" > /opt/domjudge/domserver/etc/dbpasswords.secret
84-
mysql_user "SELECT CURRENT_USER();"
85-
mysql_user "SELECT USER();"
77+
mysql_log "show databases"
78+
mysql_log "SELECT CURRENT_USER();"
79+
mysql_log "SELECT USER();"
80+
mysql_log "SELECT user,host FROM mysql.user"
81+
mysql_log "SET GLOBAL max_allowed_packet=1073741824"
82+
mysql_log "SHOW GLOBAL STATUS LIKE 'Connection_errors_%'"
83+
mysql_log "SHOW VARIABLES LIKE '%_timeout'"
8684
section_end
8785

8886
if [ "${db}" = "install" ]; then
8987
section_start "Install DOMjudge database"
90-
/opt/domjudge/domserver/bin/dj_setup_database -uroot -p${MYSQL_ROOT_PASSWORD} bare-install
88+
/opt/domjudge/domserver/bin/dj_setup_database bare-install
9189
section_end
9290
elif [ "${db}" = "upgrade" ]; then
9391
section_start "Upgrade DOMjudge database"
94-
/opt/domjudge/domserver/bin/dj_setup_database -uroot -p${MYSQL_ROOT_PASSWORD} upgrade
92+
/opt/domjudge/domserver/bin/dj_setup_database upgrade
9593
section_end
9694
fi
9795

@@ -131,31 +129,31 @@ if [ "${db}" = "install" ]; then
131129
section_start "Install the example data"
132130
if [ "$version" = "unit" ]; then
133131
# 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
132+
mysql_log "UPDATE user SET teamid=null WHERE userid=1;" $DATABASE_NAME
135133
fi
136-
/opt/domjudge/domserver/bin/dj_setup_database -uroot -p${MYSQL_ROOT_PASSWORD} install-examples | tee -a "$ARTIFACTS/mysql.txt"
134+
/opt/domjudge/domserver/bin/dj_setup_database install-examples | tee -a "$ARTIFACTS/mysql.txt"
137135
section_end
138136
fi
139137

140138
section_start "Setup user"
141139
# We're using the admin user in all possible roles
142-
mysql_root "DELETE FROM userrole WHERE userid=1;" $DATABASE_NAME
140+
mysql_log "DELETE FROM userrole WHERE userid=1;" $DATABASE_NAME
143141
if [ "$version" = "team" ]; then
144142
# Add team to admin user
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
143+
mysql_log "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" $DATABASE_NAME
144+
mysql_log "UPDATE user SET teamid = 1 WHERE userid = 1;" $DATABASE_NAME
147145
elif [ "$version" = "jury" ]; then
148146
# Add jury to admin user
149-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 2);" $DATABASE_NAME
147+
mysql_log "INSERT INTO userrole (userid, roleid) VALUES (1, 2);" $DATABASE_NAME
150148
elif [ "$version" = "balloon" ]; then
151149
# Add balloon to admin user
152-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 4);" $DATABASE_NAME
150+
mysql_log "INSERT INTO userrole (userid, roleid) VALUES (1, 4);" $DATABASE_NAME
153151
elif [ "$version" = "admin" ]; then
154152
# Add admin to admin user
155-
mysql_root "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" $DATABASE_NAME
153+
mysql_log "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" $DATABASE_NAME
156154
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
155+
mysql_log "INSERT INTO userrole (userid, roleid) VALUES (1, 1);" $DATABASE_NAME
156+
mysql_log "INSERT INTO userrole (userid, roleid) VALUES (1, 3);" $DATABASE_NAME
157+
mysql_log "UPDATE user SET teamid = 1 WHERE userid = 1;" $DATABASE_NAME
160158
fi
161159
section_end

.github/jobs/ci_settings.sh

100644100755
Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,9 @@ section_end_internal () {
2424
trace_on
2525
}
2626

27-
mysql_root () {
27+
mysql_log () {
2828
# shellcheck disable=SC2086
29-
echo "$1" | mysql -uroot -proot ${2:-} | tee -a "$ARTIFACTS"/mysql.txt
30-
}
31-
32-
mysql_user () {
33-
# shellcheck disable=SC2086
34-
echo "$1" | mysql -udomjudge -pdomjudge ${2:-} | tee -a "$ARTIFACTS"/mysql.txt
29+
echo "$1" | mysql ${2:-} | tee -a "$ARTIFACTS"/mysql.txt
3530
}
3631

3732
show_phpinfo() {

.github/workflows/database-upgrade.yml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,17 @@ jobs:
1818
ports:
1919
- 3306:3306
2020
env:
21-
MYSQL_ROOT_PASSWORD: root
22-
MYSQL_USER: domjudge
23-
MYSQL_PASSWORD: domjudge
21+
MYSQL_ROOT_PASSWORD: mysql_root_password
2422
options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3
2523
steps:
2624
- uses: actions/checkout@v4
2725
- name: Import Database
28-
run: mysql -hsqlserver -uroot -proot < .github/jobs/data/dj733.sql
26+
run: mysql -hsqlserver -uroot -pmysql_root_password < .github/jobs/data/dj733.sql
2927
- name: Upgrade DOMjudge
3028
run: .github/jobs/baseinstall.sh default upgrade
3129
- name: Setting initial Admin Password
3230
run: echo "pass" > /opt/domjudge/domserver/etc/initial_admin_password.secret
3331
- name: Check for Errors in the Upgrade
34-
run: mysql -hsqlserver -uroot -proot -e "SHOW TABLES FROM domjudge;"
32+
run: mysql -hsqlserver -uroot -pmysql_root_password -e "SHOW TABLES FROM domjudge;"
3533
- name: Check for Errors in DOMjudge Webinterface
3634
run: .github/jobs/webstandard.sh none admin

.github/workflows/integration.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@ jobs:
1919
ports:
2020
- 3306:3306
2121
env:
22-
MYSQL_ROOT_PASSWORD: root
23-
MYSQL_USER: domjudge
24-
MYSQL_PASSWORD: domjudge
22+
MYSQL_ROOT_PASSWORD: mysql_root_password
2523
options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3
2624
steps:
2725
- uses: actions/checkout@v4
@@ -81,7 +79,7 @@ jobs:
8179
done
8280
- name: dump the db
8381
if: ${{ !cancelled() }}
84-
run: mysqldump -uroot -proot --quick --max_allowed_packet=1024M domjudge > /tmp/db.sql
82+
run: mysqldump -uroot -pmysql_root_password --quick --max_allowed_packet=1024M domjudge > /tmp/db.sql
8583
- name: Upload database dump for debugging
8684
if: ${{ !cancelled() }}
8785
uses: actions/upload-artifact@v4

.github/workflows/webstandard.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ jobs:
1717
ports:
1818
- 3306:3306
1919
env:
20-
MYSQL_ROOT_PASSWORD: root
21-
MYSQL_USER: domjudge
22-
MYSQL_PASSWORD: domjudge
20+
MYSQL_ROOT_PASSWORD: mysql_root_password
2321
options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3
2422
strategy:
2523
matrix:

0 commit comments

Comments
 (0)