Skip to content

[38;5;243m 1[0m [38;5;249mfix(security): skip JWT audience che… #96

[38;5;243m 1[0m [38;5;249mfix(security): skip JWT audience che…

[38;5;243m 1[0m [38;5;249mfix(security): skip JWT audience che… #96

Workflow file for this run

name: CI
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
on:
push:
branches: [main]
paths:
- "**.py"
- "pyproject.toml"
- "uv.lock"
- "tests/**"
- ".github/workflows/ci.yml"
pull_request:
branches: [main]
paths:
- "**.py"
- "pyproject.toml"
- "uv.lock"
- "tests/**"
- ".github/workflows/ci.yml"
workflow_dispatch:
concurrency:
group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}"
cancel-in-progress: true
permissions:
contents: read
jobs:
# ─────────────────────────────────────────────────────
# 1. LINT — Ruff check + format verification
# ─────────────────────────────────────────────────────
lint:
name: Lint & Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Install dependencies
run: uv sync --group dev
- name: Ruff check
run: uv run ruff check src/agentomatic/ tests/
- name: Ruff format check
run: uv run ruff format --check src/agentomatic/ tests/
# ─────────────────────────────────────────────────────
# 2. TEST — Multi-Python matrix with coverage
# ─────────────────────────────────────────────────────
test:
name: Test (Python ${{ matrix.python-version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Install dependencies
run: uv sync --all-extras --group dev
- name: Run tests
run: |
uv run pytest tests/ -v \
--cov=agentomatic \
--cov-report=xml \
--cov-report=term \
-m "not slow" \
--override-ini="addopts="
timeout-minutes: 15
- name: Upload coverage
if: matrix.python-version == '3.12'
uses: codecov/codecov-action@v7
with:
files: coverage.xml
token: ${{ secrets.CODECOV_TOKEN }}
flags: unittests
fail_ci_if_error: false
continue-on-error: true
- name: Upload test artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-${{ matrix.python-version }}
path: |
coverage.xml
htmlcov/
retention-days: 7
# ─────────────────────────────────────────────────────
# 3. TYPECHECK — Mypy static analysis
# ─────────────────────────────────────────────────────
typecheck:
name: Type Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Install dependencies
run: uv sync --all-extras --group dev
- name: Mypy
run: uv run mypy src/agentomatic/ --ignore-missing-imports
# ─────────────────────────────────────────────────────
# 4. DOCS — Verify documentation builds cleanly
# ─────────────────────────────────────────────────────
docs:
name: Docs Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Install dependencies
run: uv sync --group docs
- name: Build docs (strict)
run: uv run mkdocs build --strict
# ─────────────────────────────────────────────────────
# 5. SMOKE — Import and basic runtime validation
# ─────────────────────────────────────────────────────
smoke:
name: Import Smoke Test
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Install package
run: uv sync --all-extras
- name: Verify imports
run: |
uv run python -c "
from agentomatic import (
AgentPlatform, AgentManifest, BaseAgentState,
AgentRegistry, PromptManager, GraphInspector,
RunTracker, __version__,
)
print(f'✅ agentomatic v{__version__} imports OK')
print(f' Platform: {AgentPlatform.__name__}')
print(f' Manifest: {AgentManifest.__name__}')
print(f' State: {BaseAgentState.__name__}')
print(f' Registry: {AgentRegistry.__name__}')
print(f' Studio: {GraphInspector.__name__}, {RunTracker.__name__}')
"
- name: Verify CLI
run: |
uv run agentomatic --help
uv run agentomatic doctor
# ─────────────────────────────────────────────────────
# 6. BUILD — Validate package builds correctly
# ─────────────────────────────────────────────────────
build:
name: Build Package
needs: [lint, test, typecheck, docs, smoke]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Build
run: uv build
- name: Verify wheel contents
run: |
echo "📦 Wheel contents:"
python -m zipfile -l dist/*.whl | head -30
echo "📊 Total files: $(python -m zipfile -l dist/*.whl | wc -l)"
- name: Upload dist
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/