Skip to content

chore: set up CI/CD pipeline with testing and linting #17

@rorybyrne

Description

@rorybyrne

Summary

Set up a CI/CD pipeline to ensure code quality and catch regressions early. The pipeline should run on pull requests and pushes to main.

Requirements

Testing

  • Run unit tests (pytest tests/unit/)
  • Run integration tests (pytest tests/integration/) if present
  • Generate coverage reports
  • Fail on test failures

Linting & Type Checking

  • Run ruff check for linting
  • Run ruff format --check for formatting verification
  • Run ty check for type checking
  • Fail on any lint/type errors

Pipeline Configuration

  • GitHub Actions workflow (.github/workflows/ci.yml)
  • Matrix testing for Python 3.11+ versions
  • Cache dependencies (uv/pip cache) for faster runs
  • Run on: push to main, pull requests

Optional Enhancements

  • Pre-commit hook validation in CI
  • Docker build verification
  • Database integration tests with PostgreSQL service container
  • Qdrant service container for index tests

Acceptance Criteria

  1. All PRs must pass CI before merge
  2. CI feedback within ~5 minutes for unit tests
  3. Clear failure messages pointing to specific issues
  4. Coverage report visible in PR comments or CI output

Notes

Current tooling:

  • ruff for linting and formatting
  • ty for type checking
  • pytest for tests
  • Pre-commit hooks configured

The project uses uv as the package manager.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions