name: CI on: push: branches: [main] pull_request: branches: [main] jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" cache: "pip" - name: Install dependencies run: pip install -e ".[dev]" - name: Lint with ruff run: ruff check src/ tests/ - name: Check formatting with ruff run: ruff format --check src/ tests/ type-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" cache: "pip" - name: Install dependencies run: pip install -e ".[dev]" - name: Type check with mypy # TODO: Remove continue-on-error after fixing #48 continue-on-error: true run: mypy src/ test: runs-on: ubuntu-latest services: postgres: image: postgres:15 env: POSTGRES_DB: test_db POSTGRES_USER: test POSTGRES_PASSWORD: test ports: - "5432:5432" options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 redis: image: redis:7 ports: - "6379:6379" options: >- --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" cache: "pip" - name: Install dependencies run: pip install -e ".[dev]" - name: Run tests with coverage run: pytest --cov=src --cov-report=xml --cov-report=term-missing env: DATABASE_URL: postgresql://test:test@localhost:5432/test_db REDIS_URL: redis://localhost:6379 - name: Upload coverage to Codecov uses: codecov/codecov-action@v4 with: files: ./coverage.xml fail_ci_if_error: false env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}