From 5251554db75d18edce89e8983ebc94e4273d7015 Mon Sep 17 00:00:00 2001 From: kolaente Date: Sat, 11 Apr 2026 18:13:07 +0200 Subject: [PATCH] ci: add non-blocking mysql:8 leg to test-api and test-migration-smoke MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a real mysql:8 service container alongside the existing mariadb:12 leg so MySQL-specific strict parsing regressions (like #2589) are caught in CI. The leg is marked continue-on-error for now (via a matrix include that sets `experimental: true`) so surprise MySQL-8-only failures don't block unrelated PRs during the triage window. Once green on main for two weeks it will be flipped to blocking. The digest for mysql:8 was resolved from Docker Hub's registry API (sha256:da906917ca4ace3ba55538b7c2ee97a9bc865ef14a4b6920b021f0249d603f3d). VIKUNJA_DATABASE_TYPE is set to 'mysql' for the new leg because Vikunja's driver (go-sql-driver/mysql v1.9.3, which supports caching_sha2_password) is wire-compatible with both engines — the matrix name is a CI-side label only. Refs #2589 --- .github/workflows/test.yml | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index edf26be1f..c9532b3e5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -96,12 +96,17 @@ jobs: runs-on: ubuntu-latest needs: - api-build + continue-on-error: ${{ matrix.experimental == true }} strategy: matrix: db: - sqlite - postgres - mariadb + - mysql-8 + include: + - db: mysql-8 + experimental: true services: migration-smoke-db-mariadb: image: ${{ matrix.db == 'mariadb' && 'mariadb:12@sha256:f54db0cb3ccfe9431aba6d08c65a1763c499789b116b4cb651dd7fcf325965b3' || '' }} @@ -110,6 +115,13 @@ jobs: MYSQL_DATABASE: vikunjatest ports: - 3306:3306 + migration-smoke-db-mysql-8: + image: ${{ matrix.db == 'mysql-8' && 'mysql:8@sha256:da906917ca4ace3ba55538b7c2ee97a9bc865ef14a4b6920b021f0249d603f3d' || '' }} + env: + MYSQL_ROOT_PASSWORD: vikunjatest + MYSQL_DATABASE: vikunjatest + ports: + - 3306:3306 migration-smoke-db-postgres: image: postgres:18@sha256:5773fe724c49c42a7a9ca70202e11e1dff21fb7235b335a73f39297d200b73a2 env: @@ -128,7 +140,7 @@ jobs: name: vikunja_bin - name: run migration env: - VIKUNJA_DATABASE_TYPE: ${{ matrix.db == 'mariadb' && 'mysql' || matrix.db }} + VIKUNJA_DATABASE_TYPE: ${{ (matrix.db == 'mariadb' || matrix.db == 'mysql-8') && 'mysql' || matrix.db }} VIKUNJA_DATABASE_PATH: ./vikunja-migration-test.db VIKUNJA_DATABASE_USER: ${{ matrix.db == 'postgres' && 'postgres' || 'root' }} VIKUNJA_DATABASE_PASSWORD: vikunjatest @@ -167,6 +179,7 @@ jobs: runs-on: ubuntu-latest needs: - mage + continue-on-error: ${{ matrix.experimental == true }} strategy: matrix: db: @@ -174,10 +187,14 @@ jobs: - sqlite - postgres - mariadb + - mysql-8 - paradedb test: - feature - web + include: + - db: mysql-8 + experimental: true services: db-mariadb: image: ${{ matrix.db == 'mariadb' && 'mariadb:12@sha256:5b6a1eac15b85b981a61afb89aea2a22bf76b5f58809d05f0bcc13ab6ec44cb8' || '' }} @@ -186,6 +203,13 @@ jobs: MYSQL_DATABASE: vikunjatest ports: - 3306:3306 + db-mysql-8: + image: ${{ matrix.db == 'mysql-8' && 'mysql:8@sha256:da906917ca4ace3ba55538b7c2ee97a9bc865ef14a4b6920b021f0249d603f3d' || '' }} + env: + MYSQL_ROOT_PASSWORD: vikunjatest + MYSQL_DATABASE: vikunjatest + ports: + - 3306:3306 db-postgres: image: ${{ matrix.db == 'postgres' && 'postgres:18@sha256:073e7c8b84e2197f94c8083634640ab37105effe1bc853ca4d5fbece3219b0e8' || '' }} env: @@ -226,8 +250,8 @@ jobs: - name: test env: VIKUNJA_TESTS_USE_CONFIG: ${{ matrix.db != 'sqlite-in-memory' && 1 || 0 }} - VIKUNJA_DATABASE_TYPE: ${{ (matrix.db == 'paradedb' && 'postgres') || (matrix.db == 'mariadb' && 'mysql') || matrix.db }} - VIKUNJA_DATABASE_USER: ${{ matrix.db == 'mariadb' && 'root' || 'postgres' }} + VIKUNJA_DATABASE_TYPE: ${{ (matrix.db == 'paradedb' && 'postgres') || ((matrix.db == 'mariadb' || matrix.db == 'mysql-8') && 'mysql') || matrix.db }} + VIKUNJA_DATABASE_USER: ${{ (matrix.db == 'mariadb' || matrix.db == 'mysql-8') && 'root' || 'postgres' }} VIKUNJA_DATABASE_PASSWORD: vikunjatest VIKUNJA_DATABASE_DATABASE: vikunjatest VIKUNJA_DATABASE_SSLMODE: disable