Skip to content

Latest commit

 

History

History
261 lines (199 loc) · 6.23 KB

File metadata and controls

261 lines (199 loc) · 6.23 KB

GitHub Actions Simple

Batteries-included GitHub Actions pack for data science teams. Fast, reliable, and easy to use.

Why This Pack Wins

  • Huge Adoption: GitHub Actions has massive adoption across the industry
  • Python-First: Optimized for Python, the top language for data science
  • Data/ML Ready: Purpose-built for data science and ML project workflows
  • Drop-in Ready: Templates and examples lower friction to adoption
  • Performance Focused: Uses UV package manager for 10-100x faster builds

Quick Start

name: Data Science CI
on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: ./actions/setup-python-uv
      - uses: ./actions/pytest-uv
      - uses: ./actions/code-quality-uv
      - uses: ./actions/notebook-test-uv

Want to customize? See USAGE.md for complete configuration options and how to pick only the actions you need.

Actions Included

Core Actions

Action Description When to Use
setup-python-uv Python setup with UV Always (required for other actions)
pytest-uv Test runner with coverage If you have tests (recommended)
code-quality-uv Linting and type checking For code quality (recommended)
notebook-test-uv Jupyter notebook testing If you have .ipynb files

All actions are optional except setup-python-uv. Mix and match based on your needs!

Performance Benefits

Traditional pip-based setup:

Installing dependencies... 2m 34s

UV-based setup:

Installing dependencies... 8s

Example Workflows

Basic Data Science Project

name: Test Data Science Project
on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: ./actions/setup-python-uv
        with:
          python-version: '3.11'
      - uses: ./actions/pytest-uv
        with:
          coverage-threshold: 85
      - uses: ./actions/code-quality-uv
      - uses: ./actions/notebook-test-uv

Comprehensive ML Pipeline

name: ML Pipeline
on: [push, pull_request]

jobs:
  quality:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: ./actions/setup-python-uv
        with:
          python-version: '3.11'
          dev-dependencies: true
      - uses: ./actions/code-quality-uv
        with:
          fail-on-violations: true
          check-notebooks: true

  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ['3.9', '3.10', '3.11', '3.12']
    steps:
      - uses: actions/checkout@v4
      - uses: ./actions/setup-python-uv
        with:
          python-version: ${{ matrix.python-version }}
      - uses: ./actions/pytest-uv
        with:
          parallel: true
          coverage-threshold: 90

  notebooks:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: ./actions/setup-python-uv
      - uses: ./actions/notebook-test-uv
        with:
          timeout: 1200
          generate-html: true

Pre-installed Packages

Each action comes with carefully curated package sets:

Data Science Core

  • pandas, numpy, matplotlib, seaborn, plotly
  • scikit-learn, scipy, statsmodels
  • jupyter, ipykernel, nbconvert

Development Tools

  • pytest, pytest-cov, pytest-xdist
  • ruff, mypy, black, isort
  • bandit, safety (security)

Notebook Tools

  • papermill, nbqa, nbformat
  • ipywidgets for interactive notebooks

Configuration

Customize Python Setup

- uses: ./actions/setup-python-uv
  with:
    python-version: '3.11'
    cache: true
    dev-dependencies: true
    requirements-file: 'requirements.txt'

Configure Testing

- uses: ./actions/pytest-uv
  with:
    test-path: 'tests/'
    coverage-threshold: 90
    parallel: true
    pytest-args: '--benchmark-only'

Set Quality Standards

- uses: ./actions/code-quality-uv
  with:
    fail-on-violations: true
    fix-violations: false
    check-notebooks: true

Project Structure

This pack works best with standard Python project structures:

your-project/
├── src/                    # Source code
├── tests/                  # Test files
├── notebooks/              # Jupyter notebooks
├── requirements.txt        # Dependencies
├── pyproject.toml         # Project configuration
└── .github/
    └── workflows/
        └── ci.yml         # Your workflow

Why UV?

UV is the next-generation Python package manager:

  • 10-100x Faster: Rust-based implementation
  • Better Dependency Resolution: Handles complex data science dependencies
  • Drop-in Replacement: Compatible with pip workflows
  • Built-in Virtual Environments: No need for separate venv management
  • Production Ready: Used by major companies and open source projects

Migration from pip

Replace this:

- name: Set up Python
  uses: actions/setup-python@v4
  with:
    python-version: '3.11'
- name: Install dependencies
  run: |
    python -m pip install --upgrade pip
    pip install -r requirements.txt

With this:

- uses: ./actions/setup-python-uv
  with:
    python-version: '3.11'

Documentation

Community

  • Issues: Report bugs and request features on GitHub Issues
  • Discussions: Share workflows and ask questions in GitHub Discussions
  • Contributing: Submit PRs for new actions or improvements (see CONTRIBUTING.md)
  • Examples: Check /examples for complete project setups

License

MIT License - See LICENSE file for details. Free for personal and commercial use.

Security

This project follows security best practices. See SECURITY.md for details on:

  • Safe action design and implementation
  • Vulnerability reporting procedures
  • Security guidelines for users

Built for data teams, by the open source community.