-
Notifications
You must be signed in to change notification settings - Fork 10
Add Modal integration for CI/CD workflows #465
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Replace self-hosted GCP runners with Modal serverless compute for data builds and local area publishing workflows. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
The --upgrade flag causes platform-specific wheel differences between local and CI environments. Using --locked just validates consistency. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Modal CLI uses --flag/--no-flag syntax, not --flag=value. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Use github.head_ref for PRs (falls back to github.ref_name for pushes). github.ref_name returns '465/merge' for PRs which isn't a valid branch. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Write GOOGLE_APPLICATION_CREDENTIALS_JSON to temp file for google.auth.default() - Increase data build timeout from 2h to 4h 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add local area calibration dataset builds to Modal - Add local area calibration tests to Modal - Add main pytest suite to Modal - Only run basic tests on GitHub runner when full_suite=false - Install dev dependencies for pytest 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
The local area calibration scripts should run WITHOUT TEST_LITE, matching the original workflow where only the main data build had the TEST_LITE env var set. This fixes the size mismatch error where main CPS was built with TEST_LITE (28k tax units) but local area expected full size (76k tax units). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
PR Review✅ Overall Assessment: APPROVEThis is a solid infrastructure PR migrating from self-hosted GCP runners to Modal serverless compute. CI passes and the core implementation looks correct. 🟡 Should Address
🟢 Suggestions
💰 Cost ValidationBased on current Modal pricing:
This is likely cheaper than self-hosted GCP runners with the benefit of no infrastructure maintenance. Validation Summary
🤖 Generated with Claude Code |
- Remove data_volume which was mounted at /data but never used - Document 24h timeout in local_area.py (processes all states/districts) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
|
Here are the decisions behind what's running now: |
Summary
modal_app/data_build.pyfor dataset builds (32GB, 8 CPU)modal_app/local_area.pyfor local area publishing (8GB, 4 CPU)Closes #464
Test plan
modal run modal_app/data_build.py --test-lite --no-uploadsuccessfully🤖 Generated with Claude Code