VibecoderMcSwaggins's picture
ci: upgrade to ironclad CI/CD configuration
e70a3b7
name: CI
on:
push:
branches: [main, dev]
pull_request:
branches: [main, dev]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "0.5.6"
enable-cache: true
cache-dependency-glob: "uv.lock"
- name: Set up Python 3.11
run: uv python install 3.11
- name: Install dependencies
run: uv sync --all-extras --locked
- name: Lint with ruff
run: uv run ruff check src tests
- name: Format check with ruff
run: uv run ruff format --check src tests
- name: Type check with mypy
run: uv run mypy src
- name: Security scan with bandit
run: uv run bandit -r src -ll -q
- name: Dependency vulnerability audit
run: uv run pip-audit
- name: Run tests with coverage
run: uv run pytest tests/unit/ -v --cov=src --cov-report=xml --cov-report=term-missing
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
files: ./coverage.xml
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
- name: Upload test artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results
path: coverage.xml