Add lint and typecheck jobs to AI agent CI #10
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: AI Agent CI | |
| on: | |
| push: | |
| paths: | |
| - 'apps/ai_agent/**' | |
| - '.github/workflows/ai-agent-ci.yml' | |
| pull_request: | |
| paths: | |
| - 'apps/ai_agent/**' | |
| - '.github/workflows/ai-agent-ci.yml' | |
| jobs: | |
| lint: | |
| name: Lint · Format | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: apps/ai_agent | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup uv | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: 'apps/ai_agent/uv.lock' | |
| - name: Install dependencies | |
| run: uv sync --group dev | |
| - name: Ruff check | |
| run: uv run ruff check . | |
| - name: Ruff format check | |
| run: uv run ruff format --check . | |
| typecheck: | |
| name: Typecheck | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: apps/ai_agent | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup uv | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: 'apps/ai_agent/uv.lock' | |
| - name: Install dependencies | |
| run: uv sync --group dev | |
| - name: Mypy | |
| run: uv run mypy main.py | |
| test: | |
| name: Test · Coverage | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: apps/ai_agent | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup uv | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: 'apps/ai_agent/uv.lock' | |
| - name: Install dependencies | |
| run: uv sync --group dev | |
| - name: Run tests with coverage | |
| run: uv run pytest --cov=main --cov-report=xml --cov-report=term-missing | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v5 | |
| continue-on-error: true | |
| with: | |
| files: apps/ai_agent/coverage.xml | |
| flags: ai-agent | |
| - name: Post coverage summary | |
| if: always() | |
| run: | | |
| echo "## Coverage Report" >> $GITHUB_STEP_SUMMARY | |
| uv run coverage report --format=markdown >> $GITHUB_STEP_SUMMARY 2>/dev/null || \ | |
| echo "Coverage data not available." >> $GITHUB_STEP_SUMMARY |