fix: enable proper semantic versioning for breaking changes#61
Conversation
Deploy workflow functionality has been integrated into ci.yml with workflow_dispatch support. Updates documentation to reflect unified CI/CD approach.
There was a problem hiding this comment.
Pull request overview
This PR removes pre-major versioning settings from Release Please configuration to enable proper semantic versioning for breaking changes, ensuring that breaking changes bump the major version (e.g., 0.8.0 → 1.0.0) instead of only the minor version.
Changes:
- Removed
bump-minor-pre-majorandbump-patch-for-minor-pre-majorsettings fromrelease-please-config.json - Deleted
.github/workflows/deploy.ymlworkflow file - Updated documentation in
CLAUDE.mdto reflect consolidated CI/CD workflow
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| release-please-config.json | Removed pre-major version bump settings to enable standard semantic versioning |
| CLAUDE.md | Updated workflow documentation to reflect removal of separate deploy workflow and correction of Docker tag naming |
| .github/workflows/deploy.yml | Removed entire deploy workflow file (functionality consolidated into ci.yml) |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Python matrix: 5 versions → 2 on PRs (60% reduction), 5 on main/release - Test execution: Consolidated to single coverage run on PRs (66% reduction) - Docker builds: Parallelize with lint dependency instead of test (saves ~3 min) - Disk cleanup: Right-size for image type (CPU: manual, GPU: aggressive) - Validation gate: Centralized quality control before release - Cache optimization: Add explicit cache-dependency-glob for uv Expected improvement: PR validation 12-17 min → 6-8 min (50-60% faster)
Mock the sleep function in test_maybe_unpack_propagates_exceptions to prevent 60-second pause during test execution. The test was triggering retry logic with real 30-second sleep calls. Matches pattern already used in test_maybe_unpack_logs_error_on_failure. Test now completes in <1 second instead of ~60 seconds.
Add pytest-xdist dependency and configure all test targets to run in parallel using auto-detected worker count with loadscope distribution strategy. Reduces test execution time while maintaining test isolation via fixture-aware scheduling. - Add pytest-xdist>=3.5.0 to dev dependencies - Update test, test-unit, and test-coverage targets to use -n auto --dist loadscope - All 240 tests pass with parallel execution (12 workers on this system)
Move the import runpod statement into the if __name__ == "__main__" block to defer it until actually running the handler on RunPod's serverless platform. This allows the handler module to be imported during local testing without requiring the runpod package to be available in the test environment. The runpod.serverless.start() call is only executed when the handler runs directly on the platform. Fixes: Handler test failures when runpod package is unavailable during local execution of test_handler.sh script.
Changed test-handler.sh to always use 'uv run' instead of trying to detect whether system python is available. The previous logic checked for system python and would use it directly, but in CI environments like GitHub Actions, the system python doesn't have the project dependencies installed. By using 'uv run', we ensure the virtual environment with all dependencies is used, consistent with how the rest of the project runs tests and builds.
The test-handler.sh script requires root access for apt-get operations to install system dependencies. This works in Docker containers but fails in the GitHub Actions runner environment. Keep handler tests running only in Docker jobs where they have proper permissions.
Removed all four docker-main-* jobs (gpu, cpu, lb, lb-cpu) that built :main tagged images on every main branch push. Docker images are now only built during releases with semantic versioning. This simplifies the workflow and reduces GitHub Actions minutes usage.
Fixed test_dependencies.json CI failure by detecting Docker environment and using system Python instead of uv run. This ensures test handler uses the same Python environment as dependency_installer.py, which installs packages to system Python with --system flag in Docker. In Docker: uses system Python with pre-installed packages In local: uses uv run for proper dependency management
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 10 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Summary
This PR improves the CI/CD pipeline, test infrastructure, and handler execution environment:
Release Management:
CI/CD Optimizations:
Test Infrastructure:
Handler Improvements:
Impact