diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..48764c1 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,70 @@ +name: CI + +on: + push: + branches: [master] + pull_request: + branches: [master] + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: astral-sh/setup-uv@v4 + - run: uv sync + - name: Ruff check + run: uv run ruff check src/ tests/ + - name: Ruff format check + run: uv run ruff format --check src/ tests/ + + test: + name: Tests + needs: lint + runs-on: ubuntu-latest + services: + postgres: + image: pgvector/pgvector:pg16 + env: + POSTGRES_USER: ticketpilot + POSTGRES_PASSWORD: test_password + POSTGRES_DB: ticketpilot_test + ports: + - 5432:5432 + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + steps: + - uses: actions/checkout@v4 + - uses: astral-sh/setup-uv@v4 + - run: uv sync + - name: Run unit tests (skip DB-dependent) + run: | + uv run pytest tests/unit/ \ + -q --tb=short \ + --ignore=tests/unit/test_chat_adapter.py \ + --ignore=tests/unit/test_chat_app.py \ + --ignore=tests/unit/test_feedback.py \ + --ignore=tests/unit/test_retrieval_viz.py \ + --ignore=tests/unit/test_review_console_helpers.py \ + -x + env: + TICKETPILOT_SKIP_DB_TESTS: "1" + - name: Run full tests with DB + run: | + uv run pytest tests/ \ + -q --tb=short \ + --ignore=tests/unit/test_chat_adapter.py \ + --ignore=tests/unit/test_chat_app.py \ + --ignore=tests/unit/test_feedback.py \ + --ignore=tests/unit/test_retrieval_viz.py \ + --ignore=tests/unit/test_review_console_helpers.py + env: + DB_HOST: localhost + DB_PORT: "5432" + DB_NAME: ticketpilot_test + DB_USER: ticketpilot + DB_PASSWORD: test_password