Skip to content

feat: Industry-grade API Copilot rebuild #1

feat: Industry-grade API Copilot rebuild

feat: Industry-grade API Copilot rebuild #1

Workflow file for this run

name: Test
on:
push:
branches: [main, staging]
pull_request:
branches: [main, staging]
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install ruff
run: pip install ruff
- name: Run ruff linter
run: ruff check src/ tests/
- name: Run ruff formatter check
run: ruff format --check src/ tests/
type-check:
name: Type Check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install --upgrade pip
pip install mypy
pip install -r requirements.txt
- name: Run mypy
run: mypy src/ --ignore-missing-imports || true # Non-blocking for now
test:
name: Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Cache pip dependencies
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: |
pip install --upgrade pip
pip install -r requirements.txt
- name: Run unit tests
env:
REDIS_ENABLED: "false"
QDRANT_URL: ""
GEMINI_API_KEY: "test_key"
TELEGRAM_BOT_TOKEN: "test_token"
run: |
pytest tests/unit/ -v --tb=short -m "unit" || true
integration-test:
name: Integration Tests
runs-on: ubuntu-latest
needs: [lint, test]
services:
redis:
image: redis:7-alpine
ports:
- 6379:6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install --upgrade pip
pip install -r requirements.txt
- name: Run integration tests
env:
REDIS_ENABLED: "true"
REDIS_URL: "redis://localhost:6379"
QDRANT_URL: ""
GEMINI_API_KEY: "test_key"
TELEGRAM_BOT_TOKEN: "test_token"
run: |
pytest tests/integration/ -v --tb=short -m "integration" || true
security-scan:
name: Security Scan
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install bandit
run: pip install bandit
- name: Run security scan
run: bandit -r src/ -ll || true # Non-blocking for now
coverage:
name: Code Coverage
runs-on: ubuntu-latest
needs: [test]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install --upgrade pip
pip install -r requirements.txt
- name: Run tests with coverage
env:
REDIS_ENABLED: "false"
QDRANT_URL: ""
GEMINI_API_KEY: "test_key"
TELEGRAM_BOT_TOKEN: "test_token"
run: |
pytest tests/ -v --cov=src --cov-report=xml --cov-report=html || true
- name: Upload coverage report
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: htmlcov/
retention-days: 7