ci: add non-blocking mysql:8 leg to test-api and test-migration-smoke

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
This commit is contained in:
kolaente 2026-04-11 18:13:07 +02:00
parent 71e524d7c1
commit 5251554db7
1 changed files with 27 additions and 3 deletions

View File

@ -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