This directory contains the modernized GitHub Actions workflows for the mlscorecheck project.
Triggers: Push/PR to main/develop branches
Features:
- Code Quality: Linting with flake8
- Multi-platform Testing: Ubuntu, Windows, macOS
- Multi-version Testing: Python 3.10, 3.11, 3.12, 3.13
- Coverage Reporting: Integrated with Codecov
- Build Artifacts: Uploads wheel and source distribution
- Concurrency Control: Cancels redundant runs
Jobs:
lint- Code quality checkstest- Cross-platform testing with coveragebuild- Package building and artifact upload
Triggers: GitHub releases or manual dispatch
Features:
- Trusted Publishing: Secure PyPI publishing without tokens
- Test PyPI Support: Option to publish to test environment
- Release Validation: Runs tests before publishing
- GitHub Assets: Automatically uploads wheels to releases
- Dual Environment: Supports both PyPI and Test PyPI
Jobs:
validate-release- Pre-publish validationbuild-and-publish- Build and publish to PyPIcreate-github-release-assets- Upload to GitHub releases
Triggers: Changes to docs/ or mlscorecheck/ directories
Features:
- Sphinx Documentation: Builds HTML documentation
- Warning Detection: Fails on warnings/errors
- Artifact Upload: Stores built docs as artifacts
- Path-based Triggers: Only runs when relevant files change
Jobs:
build-docs- Build and validate documentation
- Trusted Publishing: Uses OIDC tokens instead of API keys
- Environment Protection: Release jobs require approval
- Minimal Permissions: Only grants necessary permissions
- Concurrency Control: Cancels redundant workflow runs
- Conditional Execution: Docs only build when needed
- Artifact Caching: Efficient dependency management
- Modern Actions: Uses latest action versions (v4, v5)
- Clear Job Names: Descriptive and organized
- Fail-Fast Strategy: Quick feedback on failures
- Comprehensive Testing: Multiple OS and Python versions
- Manual Dispatch: Test releases manually
- Clear Feedback: Detailed job names and status
- Artifact Downloads: Easy access to build outputs
- Path-based Triggers: Reduced unnecessary runs
The new workflows replace the previous files:
- ❌
pythonpackage.yml→ ✅build.yml - ❌
pythonpublish.yml→ ✅release.yml - ❌
codecov.yml→ ✅ Integrated intobuild.yml
All functionality is preserved while adding modern best practices and improved organization.