This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Database Upgrade Test | |
on: | |
push: | |
branches: | |
- main | |
- '[0-9]+.[0-9]+' | |
- oldDBCI | |
pull_request: | |
branches: | |
- main | |
- '[0-9]+.[0-9]+' | |
jobs: | |
upgrade_test: | |
runs-on: ubuntu-latest | |
container: | |
image: domjudge/gitlabci:24.04 | |
services: | |
sqlserver: | |
image: mariadb | |
ports: | |
- 3306:3306 | |
env: | |
MYSQL_ROOT_PASSWORD: root | |
MYSQL_DATABASE: domjudge # 添加這行來自動創建數據庫 | |
MYSQL_USER: domjudge | |
MYSQL_PASSWORD: domjudge | |
options: >- | |
--health-cmd="mysqladmin ping" | |
--health-interval=10s | |
--health-timeout=5s | |
--health-retries=3 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install DOMjudge | |
run: .github/jobs/baseinstall.sh | |
- name: Wait and Import Database | |
run: | | |
# 安裝 MySQL client | |
apt-get update | |
apt-get install -y default-mysql-client | |
# 等待數據庫準備就緒 | |
while ! mysqladmin ping -h"sqlserver" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" --silent; do | |
echo "Waiting for database connection..." | |
sleep 2 | |
done | |
# 導入數據 | |
mysql -hsqlserver -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" domjudge < .github/jobs/old_database.sql | |
- name: Upgrade Database | |
run: | | |
/opt/domjudge/domserver/bin/dj_setup_database upgrade | |
- name: Check for Errors in the Upgrade | |
run: | | |
mysql -hsqlserver -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "SHOW TABLES FROM domjudge;" | |
- name: Debug Database Status | |
if: always() | |
run: | | |
echo "Testing database connection..." | |
mysql -hsqlserver -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "SELECT VERSION();" | |
echo "Checking database permissions..." | |
mysql -hsqlserver -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "SHOW GRANTS FOR CURRENT_USER;" | |
echo "Listing databases..." | |
mysql -hsqlserver -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "SHOW DATABASES;" |