Skip to content

docs: refresh portfolio docs #16

docs: refresh portfolio docs

docs: refresh portfolio docs #16

Workflow file for this run

# =============================================================================
# quickforge - GitHub Actions CI Workflow
# =============================================================================
# Generated by quickforge v0.1.0
#
# This workflow runs on every push and pull request to ensure code quality.
# It performs the following checks:
# - Linting with ruff
# - Formatting with ruff
# - Type checking with basedpyright
# - Testing with pytest across multiple Python versions
# =============================================================================
name: CI
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
# Allow manual triggering
workflow_dispatch:
# Cancel in-progress runs on new commits to same branch
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
# Force color output in CI
FORCE_COLOR: "1"
# uv settings
UV_SYSTEM_PYTHON: "1"
jobs:
# ===========================================================================
# Quality Checks (fast, single Python version)
# ===========================================================================
quality:
name: Code Quality
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up uv
uses: astral-sh/setup-uv@v4
with:
version: "latest"
enable-cache: true
- name: Install Python 3.11
run: uv python install 3.11
- name: Install dependencies
run: uv sync --extra dev
- name: Run ruff linter
run: uv run ruff check . --output-format=github
- name: Run ruff formatter
run: uv run ruff format --check .
- name: Run type checker
run: uv run basedpyright
# ===========================================================================
# Tests (multiple Python versions)
# ===========================================================================
test:
name: Test (Python ${{ matrix.python-version }})
runs-on: ubuntu-latest
needs: quality # Only run tests if quality checks pass
strategy:
fail-fast: false
matrix:
python-version:
- "3.11"
- "3.12"
- "3.13"
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up uv
uses: astral-sh/setup-uv@v4
with:
version: "latest"
enable-cache: true
- name: Install Python ${{ matrix.python-version }}
run: uv python install ${{ matrix.python-version }}
- name: Install dependencies
run: uv sync --extra dev
- name: Run tests
run: uv run pytest --cov-report=xml
- name: Upload coverage to Codecov
if: matrix.python-version == '3.11'
uses: codecov/codecov-action@v4
with:
file: ./coverage.xml
fail_ci_if_error: false
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
# ===========================================================================
# All Checks Passed
# ===========================================================================
# This job is used as a required status check in branch protection rules.
# It only succeeds if all other jobs pass.
all-checks:
name: All Checks Passed
runs-on: ubuntu-latest
needs: [quality, test]
if: always()
steps:
- name: Check all jobs passed
run: |
if [[ "${{ needs.quality.result }}" != "success" ]] || \
[[ "${{ needs.test.result }}" != "success" ]]; then
echo "One or more jobs failed"
exit 1
fi
echo "All checks passed! ✅"