Skip to content

ci: drizzle-mysql-smoke job — run #489 fixture against real MySQL (#804) - #2166

Merged
proggeramlug merged 2 commits into
mainfrom
phase2-mysql-ci-804
May 28, 2026
Merged

proggeramlug merged 2 commits into
mainfrom
phase2-mysql-ci-804

Conversation

@proggeramlug

Copy link
Copy Markdown
Contributor

What

Closes #804 — wires the tests/release/packages/drizzle-mysql/ fixture (added in #2160) into CI against a real MySQL.

Adds a new drizzle-mysql-smoke job to .github/workflows/test.yml with a services: mysql:8 block. MYSQL_ALLOW_EMPTY_PASSWORD=yes and MYSQL_DATABASE=perry_drizzle_test match the fixture's expectations (root with no password, database pre-created). The job builds perry, waits for MySQL to accept connections, then invokes bash tests/release/packages/drizzle-mysql/fixture.sh.

Why services-block (and not Docker in the fixture)

scripts/release_sweep_tiers/tier03_real_packages.sh documents the project preference: fixtures themselves use mock/embedded backends — no Docker in fixture.sh. That's about the local sweep on macOS. CI is a separate context: GH Actions runs ubuntu-latest, the standard idiom for getting MySQL reachable on the runner is a services: block (Docker behind the scenes, but transparent to the fixture). The fixture remains unchanged — it still skips gracefully when no mysqld is reachable, which is what happens on a macOS dev box without docker.

Gating

Mirrors compile-smoke / doc-tests / parity:

  • runs on tag push (github.event_name == 'push'),
  • runs on workflow_dispatch with run_extended_tests=true,
  • opt-in on a PR via the run-extended-tests label.

Real-DB setup + perry release build + drizzle + @perryts/mysql compile is ~15 min wall — PRs shouldn't pay it by default. Release tags still get the gate before publish.

Verification

  • YAML parses (python -c "import yaml; yaml.safe_load(open('.github/workflows/test.yml'))" → 10 jobs, drizzle-mysql-smoke present with 8 steps + 1 service).
  • Fixture re-run locally: PASS drizzle-mysql (the local mysqld on 127.0.0.1:3306 path the fixture already handled).
  • The CI run for this PR (with the run-extended-tests label) is the actual end-to-end check — it's the first time real MySQL has run in this repo's CI.

#489 status after this lands

Together with #2160, both #489 (local e2e) and #804 (CI version) close. The compiler/runtime path through drizzle + @perryts/mysql + real MySQL is verifiable both locally and in CI.

Workaround note carried forward: the fixture entry uses explicit .execute() to dodge #2159 (inherited .then on drizzle's MySqlSelectBase returns undefined under perry). Drop the .execute() calls when #2159 lands.

@proggeramlug proggeramlug added run-extended-tests Opt PR into compile-smoke/parity/doc-tests/drizzle-mysql-smoke and removed run-extended-tests Opt PR into compile-smoke/parity/doc-tests/drizzle-mysql-smoke labels May 28, 2026
Ralph Küpper added 2 commits May 28, 2026 11:54
Adds a new job that runs tests/release/packages/drizzle-mysql/ against a
MySQL service container on ubuntu-latest. Fixture itself stays Docker-free
(tier-3 'no Docker' preference); the services: block is runner-side
setup, transparent to the fixture.

MYSQL_ALLOW_EMPTY_PASSWORD=yes + MYSQL_DATABASE=perry_drizzle_test match
the fixture's expectations (root with no password, DB pre-created). Job
waits for MySQL to accept connections before building perry + running
the fixture.

Gating mirrors compile-smoke / doc-tests / parity: tag pushes,
workflow_dispatch with run_extended_tests, or the run-extended-tests PR
label. Real-DB setup + perry release build + drizzle + @perryts/mysql
compile is ~15 min wall — PRs don't pay the bill by default. Release
tags still get the gate before publish.

Together with #2160, closes #489 (local e2e) + #804 (CI version).
@proggeramlug
proggeramlug force-pushed the phase2-mysql-ci-804 branch from 55566f4 to 42a4ba9 Compare May 28, 2026 09:55
@proggeramlug
proggeramlug merged commit 807f2a3 into main May 28, 2026
11 checks passed
@proggeramlug
proggeramlug deleted the phase2-mysql-ci-804 branch May 28, 2026 10:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

compat: Drizzle + MySQL end-to-end CI job

1 participant