From 7511505aea3e825e1079d2b43f16e4d59a2dcc25 Mon Sep 17 00:00:00 2001 From: Jacky Date: Sat, 8 Aug 2026 22:42:18 +0800 Subject: [PATCH] ci: isolate MySQL test services --- .gitea/workflows/ci.yml | 32 ++++++++++++-------------------- .gitea/workflows/deploy.yml | 33 ++++++++++++--------------------- 2 files changed, 24 insertions(+), 41 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 4b554f2..bb66207 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -8,6 +8,17 @@ on: jobs: test: runs-on: ubuntu-latest + services: + mysql: + image: mysql:8.0.35 + env: + MYSQL_ROOT_PASSWORD: ci-root-password + MYSQL_DATABASE: hulumath + options: >- + --health-cmd "mysqladmin ping -h 127.0.0.1 -uroot -pci-root-password --silent" + --health-interval 5s + --health-timeout 5s + --health-retries 20 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 @@ -31,28 +42,9 @@ jobs: run: python -c "from config.asgi import application; print(type(application).__name__)" - name: Unit tests run: pytest -q - - name: Start MySQL 8.0.35 - run: | - docker rm -f hulumath-ci-mysql 2>/dev/null || true - docker run -d --name hulumath-ci-mysql \ - -p 3307:3306 \ - -e MYSQL_ROOT_PASSWORD=ci-root-password \ - -e MYSQL_DATABASE=hulumath \ - mysql:8.0.35 \ - --character-set-server=utf8mb4 \ - --collation-server=utf8mb4_0900_ai_ci - for i in $(seq 1 60); do - if docker exec hulumath-ci-mysql \ - mysqladmin ping -h 127.0.0.1 -uroot -pci-root-password --silent; then - exit 0 - fi - sleep 2 - done - docker logs hulumath-ci-mysql - exit 1 - name: MySQL migrations and tests env: - DATABASE_URL: mysql://root:ci-root-password@127.0.0.1:3307/hulumath + DATABASE_URL: mysql://root:ci-root-password@mysql:3306/hulumath run: | python backend/manage.py check --database default python backend/manage.py check_mysql diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 834779f..459626c 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -15,6 +15,17 @@ jobs: test: if: ${{ github.event.pull_request.merged == true }} runs-on: ubuntu-latest + services: + mysql: + image: mysql:8.0.35 + env: + MYSQL_ROOT_PASSWORD: ci-root-password + MYSQL_DATABASE: hulumath + options: >- + --health-cmd "mysqladmin ping -h 127.0.0.1 -uroot -pci-root-password --silent" + --health-interval 5s + --health-timeout 5s + --health-retries 20 steps: - name: 检出 main uses: actions/checkout@v4 @@ -50,29 +61,9 @@ jobs: - name: 运行测试 run: pytest -q - - name: 启动 MySQL 8.0.35 - run: | - docker rm -f hulumath-deploy-mysql 2>/dev/null || true - docker run -d --name hulumath-deploy-mysql \ - -p 3307:3306 \ - -e MYSQL_ROOT_PASSWORD=ci-root-password \ - -e MYSQL_DATABASE=hulumath \ - mysql:8.0.35 \ - --character-set-server=utf8mb4 \ - --collation-server=utf8mb4_0900_ai_ci - for i in $(seq 1 60); do - if docker exec hulumath-deploy-mysql \ - mysqladmin ping -h 127.0.0.1 -uroot -pci-root-password --silent; then - exit 0 - fi - sleep 2 - done - docker logs hulumath-deploy-mysql - exit 1 - - name: MySQL 迁移与全量测试 env: - DATABASE_URL: mysql://root:ci-root-password@127.0.0.1:3307/hulumath + DATABASE_URL: mysql://root:ci-root-password@mysql:3306/hulumath run: | python backend/manage.py check --database default python backend/manage.py check_mysql