Skip to content

Repository files navigation

provide.io CI Tooling

Shared GitHub Actions and reusable workflows for provide.io projects.

License GitHub release

Key Features

  • Shared composite actions for Python CI workflows.
  • Reusable workflows for standardized pipeline setups.
  • Project templates and scripts for consistent automation.

πŸš€ Quick Start

Using Individual Actions

name: CI
on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: provide-io/ci-tooling/actions/setup-python-env@v0
        with:
          python-version: '3.11'

      - uses: provide-io/ci-tooling/actions/python-ci@v0
        with:
          coverage-threshold: 80

Using Reusable Workflows

name: CI
on: [push, pull_request]

jobs:
  ci:
    uses: provide-io/ci-tooling/.github/workflows/python-ci.yml@v0
    with:
      python-version: '3.11'
      matrix-testing: true
      run-security: true
    secrets:
      CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

Documentation

Development

  • See CLAUDE.md for local development notes.
  • Run ./scripts/test-actions.sh to validate actions locally.

🀝 Contributing

We welcome contributions! Please see CLAUDE.md for local development guidance.

Development Setup

git clone https://github.com/provide-io/ci-tooling.git
cd ci-tooling

# Test actions locally
./scripts/test-actions.sh

# Validate workflows
./scripts/validate-workflows.sh

πŸ“„ License

Licensed under the Apache License, Version 2.0. See LICENSE for details.


provide.io llc - Simplifying CI/CD for Python projects

πŸ“¦ Available Actions

Core Actions

Action Description Documentation
setup-python-env Setup Python, UV, and workenv action.yml
setup-github-auth Configure GitHub authentication README
python-ci Combined lint, test, and build pipeline action.yml
python-release PyPI publishing action.yml
run-ci-tasks Run repo-specific CI tasks action.yml
build-psp Build PSP artifacts action.yml

Reusable Workflows

Workflow Description Documentation
python-ci.yml Complete CI pipeline workflow
python-release.yml Release workflow workflow

πŸ—οΈ Architecture

provide-io/ci-tooling/
β”œβ”€β”€ .github/workflows/        # Reusable workflows
β”‚   β”œβ”€β”€ python-ci.yml         # CI pipeline
β”‚   └── python-release.yml    # Release pipeline
β”œβ”€β”€ actions/                  # Composite actions
β”‚   β”œβ”€β”€ build-psp/            # Build PSP artifacts
β”‚   β”œβ”€β”€ python-ci/            # Lint, test, build pipeline
β”‚   β”œβ”€β”€ python-release/       # Publishing
β”‚   β”œβ”€β”€ run-ci-tasks/         # Repo-specific CI hooks
β”‚   β”œβ”€β”€ setup-github-auth/    # GitHub auth setup
β”‚   └── setup-python-env/     # Environment setup
β”œβ”€β”€ configs/                  # Action configuration
β”œβ”€β”€ scripts/                  # Utility scripts
└── templates/                # Project templates

πŸ”§ Migration Guide

From Custom CI to Shared Actions

  1. Identify your current workflow patterns
  2. Choose the appropriate approach:
    • Individual actions for granular control
    • Reusable workflows for standardization
  3. Update your .github/workflows/ files
  4. Test thoroughly

Example Migration

Before (custom workflow):

name: CI
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.11'
      - name: Install UV
        run: curl -LsSf https://astral.sh/uv/install.sh | sh
      - name: Install deps
        run: uv sync --group dev
      - name: Run ruff
        run: ruff check src/
      - name: Run tests
        run: pytest

After (using shared actions):

name: CI
on: [push, pull_request]
jobs:
  ci:
    uses: provide-io/ci-tooling/.github/workflows/python-ci.yml@v0
    with:
      python-version: '3.11'

πŸ“‹ Project Templates

A ready-to-use starting point, mirroring the workflows the provide.io Python repositories actually run:

  • Basic Python - a package published to PyPI via Trusted Publishing. CI, release, CycloneDX SBOM and sigstore signing. Its README covers the placeholders to fill in and why the release workflow separates the jobs the way it does.

Templates named "Terraform Provider" and "Full Featured" were listed here for a while but never existed; both links 404'd.

πŸ”„ Versioning

This repository uses semantic versioning:

  • v0 - Latest development (may have breaking changes)
  • v0.1 - Specific minor version
  • v0.1.0 - Exact version

Recommendation: Use v0 for latest features, pin to specific versions for stability.

πŸ“– Reference

πŸ†˜ Support

Copyright (c) provide.io LLC.

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages