Skip to content

psmman/github-actions-simple

Repository files navigation

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.

About

Simple, reliable GitHub Actions for Python data science workflows

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •