ci: drizzle-mysql-smoke job — run #489 fixture against real MySQL (#804) - #2166
Merged
Merged
Conversation
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
force-pushed
the
phase2-mysql-ci-804
branch
from
May 28, 2026 09:55
55566f4 to
42a4ba9
Compare
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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-smokejob to.github/workflows/test.ymlwith aservices: mysql:8block.MYSQL_ALLOW_EMPTY_PASSWORD=yesandMYSQL_DATABASE=perry_drizzle_testmatch the fixture's expectations (root with no password, database pre-created). The job builds perry, waits for MySQL to accept connections, then invokesbash tests/release/packages/drizzle-mysql/fixture.sh.Why services-block (and not Docker in the fixture)
scripts/release_sweep_tiers/tier03_real_packages.shdocuments 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 runsubuntu-latest, the standard idiom for getting MySQL reachable on the runner is aservices:block (Docker behind the scenes, but transparent to the fixture). The fixture remains unchanged — it still skips gracefully when nomysqldis reachable, which is what happens on a macOS dev box without docker.Gating
Mirrors
compile-smoke/doc-tests/parity:github.event_name == 'push'),workflow_dispatchwithrun_extended_tests=true,run-extended-testslabel.Real-DB setup + perry release build + drizzle +
@perryts/mysqlcompile is ~15 min wall — PRs shouldn't pay it by default. Release tags still get the gate before publish.Verification
python -c "import yaml; yaml.safe_load(open('.github/workflows/test.yml'))"→ 10 jobs,drizzle-mysql-smokepresent with 8 steps + 1 service).PASS drizzle-mysql(the local mysqld on 127.0.0.1:3306 path the fixture already handled).run-extended-testslabel) 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.thenon drizzle'sMySqlSelectBasereturnsundefinedunder perry). Drop the.execute()calls when #2159 lands.