Test CI Templates / test-python-code-quality (3.11) (pull_request) Successful in 5s
Test CI Templates / test-python-code-quality (3.12) (pull_request) Successful in 4s
Test CI Templates / test-python-code-quality (true, false, skip-mypy) (pull_request) Successful in 4s
Test CI Templates / test-python-pytest (false, 3.11) (pull_request) Successful in 4s
Test CI Templates / test-python-pytest (true, 3.11) (pull_request) Successful in 5s
Test CI Templates / test-python-pytest (true, 3.12) (pull_request) Successful in 5s
Test CI Templates / test-web-formatting (false, false, 18) (pull_request) Successful in 5s
Test CI Templates / test-web-formatting (false, false, 20) (pull_request) Successful in 5s
Test CI Templates / test-web-formatting (false, true, 20) (pull_request) Successful in 6s
Test CI Templates / test-web-formatting (true, false, 18) (pull_request) Successful in 5s
Test CI Templates / test-web-formatting (true, true, 20) (pull_request) Successful in 4s
Test CI Templates / test-monorepo (pull_request) Successful in 4s
Test CI Templates / validate-syntax (pull_request) Successful in 10s
Test CI Templates / test-python-code-quality (3.10) (pull_request) Successful in 5s
Test CI Templates / test-python-code-quality (false, false, basic) (pull_request) Successful in 4s
Test CI Templates / test-python-code-quality (false, true, skip-pyupgrade) (pull_request) Successful in 4s
Test CI Templates / test-python-pytest (false, 3.12) (pull_request) Successful in 5s
Test CI Templates / test-web-formatting (false, true, 18) (pull_request) Successful in 5s
Test CI Templates / test-web-formatting (true, false, 20) (pull_request) Successful in 4s
Test CI Templates / test-web-formatting (true, true, 18) (pull_request) Successful in 4s
Test CI Templates / test-edge-cases (pull_request) Successful in 4s
Test CI Templates / test-results (pull_request) Successful in 3s
3.2 KiB
3.2 KiB
Python Code Quality Pipeline Template
A reusable Gitea Actions workflow for Python code quality checks including type checking, linting, and formatting.
Features
- Type checking with mypy
- Linting with ruff
- Code formatting with ruff
- Python version upgrades with pyupgrade
- Flexible configuration with optional steps and customizable inputs
Usage
To use this reusable workflow in your repository, create a workflow file (e.g., .gitea/workflows/python/code-quality.yml) in your target repository:
Basic Usage
name: Code Quality
on:
push:
branches:
- main
pull_request:
jobs:
code-quality:
uses: gitea.gt-proj.com/brian/CI-templates/.gitea/workflows/python/code-quality.yml@v1.0.0
Advanced Usage with Custom Inputs
name: Code Quality
on:
push:
branches:
- main
pull_request:
jobs:
code-quality:
uses: gitea.gt-proj.com/brian/CI-templates/.gitea/workflows/python/code-quality.yml@v1.0.0
with:
python-version: "3.11"
working-directory: "./backend"
uv-extras: "dev,test"
Available Inputs
| Input | Description | Required | Default | Type |
|---|---|---|---|---|
python-version |
Python version to use (e.g., "3.12") | No | "3.12" | string |
working-directory |
Working directory for the project | No | "." | string |
skip-mypy |
Skip mypy type checking | No | false | boolean |
skip-pyupgrade |
Skip pyupgrade check | No | false | boolean |
uv-extras |
UV extras to install (e.g., "dev,test") | No | "all-extras" | string |
Requirements
Your Python project should have:
- A
pyproject.tomlfile with uv dependency management - Properly configured tools:
mypyfor type checking (if not skipped)rufffor linting and formattingpyupgradefor Python version upgrades (if not skipped)
- Optional: prettier configuration for non-Python files (if not skipped)
Examples
Skip mypy for a project without type hints
jobs:
code-quality:
uses: gitea.gt-proj.com/brian/CI-templates/.gitea/workflows/python/code-quality.yml@v1.0.0
with:
skip-mypy: true
Use specific Python version and extras
jobs:
code-quality:
uses: gitea.gt-proj.com/brian/CI-templates/.gitea/workflows/python/code-quality.yml@v1.0.0
with:
python-version: "3.11"
uv-extras: "dev,lint"
Monorepo with specific working directory
jobs:
backend-quality:
uses: gitea.gt-proj.com/brian/CI-templates/.gitea/workflows/python/code-quality.yml@v1.0.0
with:
working-directory: "./backend"
ml-service-quality:
uses: gitea.gt-proj.com/brian/CI-templates/.gitea/workflows/python/code-quality.yml@v1.0.0
with:
working-directory: "./ml-service"
python-version: "3.11"
Repository Structure
For this template to work properly, ensure your repository has the workflow file in the correct location:
.gitea/
workflows/
python/
code-quality.yml # This reusable workflow
Contributing
To update this template, modify the workflow file and ensure all changes are backward compatible or properly versioned using git tags.