Open
Conversation
Replaces CircleCI configuration with native GitHub Actions workflows: - Deleted `.circleci/config.yml` and `.circleci/continue_config.yml` - Moved helper scripts from `.circleci/` to `.github/scripts/` - Added comprehensive `pr.yaml` with all test jobs (doc tests, style checks, Windows tests, migration tests, UI tests, engine tests for 8 local + 8 cloud databases) - Created `release.yaml` for PyPI publishing and GitHub releases on version tags - Removed private repo integration (deleted `private-repo-test.yaml`) - Updated `Makefile` to reference new script location - Implemented path-based filtering using `dorny/paths-filter@v3` to replicate CircleCI's conditional job execution All CircleCI jobs are now running in GitHub Actions with proper dependencies, caching, and secret management. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
- Run prettier on pr.yaml to fix formatting check - Add UV=1 env var to all Python jobs so Makefile uses `uv pip` instead of `pip3`, ensuring packages install into the venv Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
e81673f to
2e5b5b0
Compare
- engine-tests-docker "Run tests" step needs venv activated for pytest - test_migration.sh needs to create and activate venv before make install-dev Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
The second uv venv call fails because the venv already exists from the first call. Adding --clear allows it to recreate the venv. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
- Reduce PYTEST_XDIST_AUTO_NUM_WORKERS from 8 to 4 for style-and-cicd-tests to prevent OOM errors with Spark tests on GHA runners - Add fetch-depth: 0 to style-and-cicd-tests checkout so setuptools_scm can resolve the version from git tags (fixes test_version_schema failure) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
tobymao
approved these changes
Mar 12, 2026
4 workers still caused OOM on GHA runners (7GB RAM). Reducing to 2 to give Spark tests enough memory headroom. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
The Playwright container had slow I/O causing the webServer build to exceed the 120s timeout. Running directly on ubuntu-latest with explicit Playwright browser installation avoids container overhead and enables pnpm caching. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
Using ubuntu-latest with --with-deps downloads hundreds of system packages. Revert to using the Playwright container which has all browser dependencies pre-installed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
The Playwright webServer command (npm run build && npm run preview) was timing out in CI because the full TypeScript + Vite build exceeds the 120s timeout inside the container. Pre-build the UI in a separate step and set PLAYWRIGHT_SKIP_BUILD so Playwright only starts the preview server. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
The Playwright webServer was timing out because vite preview defaulted to binding on localhost which may resolve to IPv6 ::1 in the container, while Playwright checks 127.0.0.1:8005. Explicitly bind to 127.0.0.1 and split unit/e2e test steps for better isolation of the env var. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
GitHub Actions sets HOME=/github/home (owned by uid 1001) but the container runs as root. Firefox refuses to launch when HOME is owned by a different user. Setting HOME=/root fixes the ownership mismatch. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
The freeze was causing a mismatch: the in-test yesterday_ds() call was frozen but the one inside init_example_project() was not (likely a pytest-xdist interaction). Both sides naturally agree on the date without the freeze. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
GHA standard runners have ~7GB RAM. Spark's JVM OOMs with the default worker count. Limiting to 2 workers keeps memory usage in check. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
The integration test config uses OAuth (databricks-oauth) which requires these credentials. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
…tests Newer snowflake-connector-python versions require the authenticator to be explicitly set to SNOWFLAKE_JWT when using private key auth. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
The integration test config expects FABRIC_HOST (not FABRIC_SERVER) and FABRIC_WORKSPACE_ID which was missing entirely. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
The manage-test-db.sh script uses `snow sql --temporary-connection` which reads SNOWFLAKE_AUTHENTICATOR from the environment. Without it, the CLI defaults to password auth and fails with private key. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
The guard-% macro used shell indirect expansion which breaks when the variable contains JSON (quotes, newlines). Use printenv instead which just checks if the variable is set without expanding its value. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
The init function runs for both 'up' and 'down'. On teardown, curl fails writing the binary (exit code 23) because the running proxy holds it. Skip download if binary exists and skip proxy start if already running. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
The Databricks CLI unified auth requires DATABRICKS_HOST to know which workspace to authenticate against. Set it from DATABRICKS_SERVER_HOSTNAME. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
The Databricks CLI unified auth prioritizes OAuth M2M (client_id + client_secret) over PAT when both are present. The OAuth credentials are for the test suite, not the CLI. Unset OAuth vars and set DATABRICKS_TOKEN from DATABRICKS_ACCESS_TOKEN for CLI commands. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
The integration tests use OAuth (client_id + client_secret), not PAT. Revert the CLI workaround and remove DATABRICKS_ACCESS_TOKEN so the CLI uses the same OAuth credentials. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
…ions The external volume doesn't have LIST privileges on the dynamically generated CI database paths. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
Both are required by the Athena integration test config. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: eakmanrq <6326532+eakmanrq@users.noreply.github.com>
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.
Description
Replaces CircleCI configuration with native GitHub Actions workflows. All CI/CD jobs have been migrated, including comprehensive test coverage across Python versions, database engines, UI testing, and release processes.
Key changes:
.circleci/config.ymland.circleci/continue_config.yml).github/scripts/and updated referencespr.yamlwith path-based filtering and all test jobsrelease.yamlfor automated PyPI publishing and GitHub releasesWorkflows:
v*.*.*). Builds UI, publishes Python packages, creates GitHub releases using native GitHub release notes generationTest Plan
Checklist