Shared GitHub Actions and reusable workflows for provide.io projects.
- Shared composite actions for Python CI workflows.
- Reusable workflows for standardized pipeline setups.
- Project templates and scripts for consistent automation.
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: 80name: 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 }}- See CLAUDE.md for local development notes.
- Run
./scripts/test-actions.shto validate actions locally.
We welcome contributions! Please see CLAUDE.md for local development guidance.
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.shLicensed under the Apache License, Version 2.0. See LICENSE for details.
provide.io llc - Simplifying CI/CD for Python projects
| 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 |
| Workflow | Description | Documentation |
|---|---|---|
python-ci.yml |
Complete CI pipeline | workflow |
python-release.yml |
Release workflow | workflow |
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
- Identify your current workflow patterns
- Choose the appropriate approach:
- Individual actions for granular control
- Reusable workflows for standardization
- Update your
.github/workflows/files - Test thoroughly
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: pytestAfter (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'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.
This repository uses semantic versioning:
v0- Latest development (may have breaking changes)v0.1- Specific minor versionv0.1.0- Exact version
Recommendation: Use v0 for latest features, pin to specific versions for stability.
- π Issue Tracker
- π¬ Discussions
Copyright (c) provide.io LLC.