fix(ci): pin Qdrant image, upgrade health-check to HTTP probe, fix deprecated Codecov action#26
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
WalkthroughPins Qdrant to v1.17.0, replaces Codecov action with v5 and test-results reporting, adds a GitHub Actions step that polls Neo4j and Qdrant readiness and conditionally skips integration tests when none exist, and inserts a duplicated Git workflow section into copilot instructions. Changes
Sequence Diagram(s)sequenceDiagram
participant Runner as "GH Actions Runner"
participant Neo4j as "Neo4j (docker)"
participant Qdrant as "Qdrant (docker)"
participant Tests as "pytest"
participant Codecov as "Codecov Action"
rect rgba(200,200,255,0.5)
Runner->>Neo4j: poll TCP readiness (port 7687)
Runner->>Qdrant: poll TCP readiness (port 6333)
end
alt services ready
Runner->>Tests: run integration tests (pytest)
alt tests found
Tests-->>Runner: produce ./junit.xml
Runner->>Codecov: upload ./junit.xml (report_type: test_results) via codecov/codecov-action@v5
else no tests
Tests-->>Runner: skip (no test_*.py)
end
else services timeout
Runner-->>Runner: fail workflow / abort tests
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
- Pin qdrant image from 'latest' to 'v1.17.0' for reproducibility - Upgrade health-check from bare TCP to HTTP /healthz probe via bash TCP so the job waits for Qdrant to be fully serving, not just port-open - Replace deprecated codecov/test-results-action@v1 with codecov/codecov-action@v5 using report_type: test_results - Guard integration test step: skip gracefully when no test_*.py files exist yet (avoids pytest exit code 4 on empty directory)
04c5089 to
0f4cc6e
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/copilot-instructions.md:
- Around line 85-88: Update the instruction that currently shows "git checkout
master && git reset --hard origin/master" to fetch remote refs first;
specifically insert a fetch (e.g., run "git fetch origin" or "git fetch --all
--prune") before the reset so the sequence becomes fetch then checkout/reset,
ensuring "git reset --hard origin/master" uses up-to-date remote-tracking refs;
reference the existing command text "git checkout master && git reset --hard
origin/master" when making the change.
In @.github/workflows/ci.yml:
- Line 112: The current health-cmd uses /dev/tcp redirection which fails in the
Qdrant image; replace that expression with a simple HTTP probe using curl (or
nc) so the container health check works reliably. Update the health-cmd entry
(the string after --health-cmd) to run a POSIX shell one-liner that calls curl
-sSf http://127.0.0.1:6333/healthz (or uses nc to test TCP + an HTTP GET) and
exits non‑zero on failure, ensuring the CI job's health check for the qdrant
service succeeds.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 6a2dcf8e-955b-4e77-9f6b-95dd20943d50
📒 Files selected for processing (2)
.github/copilot-instructions.md.github/workflows/ci.yml
… add runner-side wait step qdrant/qdrant:v1.17.0 (debian:bookworm-slim) ships no curl, wget, or nc, and Debian's bash does not compile with --enable-net-redirections so /dev/tcp is also unavailable. Any --health-cmd inside the container fails. Fix: remove --health-cmd from the qdrant service block entirely and add a 'Wait for services' step in the job where the ubuntu-latest runner's own curl polls http://localhost:6333/healthz until Qdrant is fully up. Neo4j health-check is unaffected (cypher-shell is in that image). Also add 'git fetch origin' before reset in copilot-instructions as requested by CodeRabbit.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/ci.yml:
- Around line 125-136: Replace the failing "Wait for services" step that calls
cypher-shell with a pure bash TCP check against Neo4j's BOLT port (7687) using
/dev/tcp and add a proper timeout (e.g., 60s) and non-zero exit if it never
becomes available; keep the Qdrant check against http://localhost:6333/healthz
but add a similar timeout and exit-on-failure behavior so the workflow fails
fast if either service doesn't start. Specifically, remove the cypher-shell
invocation and use a loop that attempts /dev/tcp localhost 7687, breaking on
success, and another loop that curls /healthz with -sf and a timeout, and if
either loop exhausts retries, print a clear error and exit 1.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 2986af67-b237-4e6d-bf10-1e9fd3a64065
📒 Files selected for processing (2)
.github/copilot-instructions.md.github/workflows/ci.yml
🚧 Files skipped from review as they are similar to previous changes (1)
- .github/copilot-instructions.md
…iness cypher-shell is not installed on ubuntu-latest runners so the wait step was failing immediately. Use bash built-in /dev/tcp to probe the bolt port (7687) instead — works on ubuntu-latest without any external tools. Also add explicit failure exits for both Neo4j and Qdrant if they do not become ready within 60 s, surfacing the real cause instead of continuing silently into a broken integration run.
Follow-up to #25 addressing all CodeRabbit review comments.
Changes
1. Pin Qdrant image to
v1.17.0qdrant/qdrant:latestis unpinned — future base image changes could silently break the health check or integration tests. Pinned to the version validated by #25 to match Neo4j's pinning strategy.2. Upgrade health-check from bare TCP to HTTP
/healthzprobeThe previous bare TCP check marks the container healthy as soon as the port accepts connections, which can happen before Qdrant's HTTP server is fully serving. Replaced with a proper HTTP probe over bash TCP:
This validates a real HTTP 200 from
/healthz— same strictness as the oldcurlprobe, no external tooling needed.3. Fix deprecated
codecov/test-results-action@v1CI logs warned this action is deprecated. Replaced with
codecov/codecov-action@v5usingreport_type: test_resultsas recommended.4. Guard integration test step against empty directory
When
tests/integration/has notest_*.pyfiles, pytest exits with code 4 (no tests collected), failing the job. Added afindguard to skip gracefully until integration tests are written.5. Add Git branch discipline rules to copilot instructions
Documented the branching workflow in
.github/copilot-instructions.mdso AI agents and contributors always create a feature branch before making any commits, never pushing directly tomaster.Testing
Add the
run-integrationlabel to trigger the integration tests job.Summary by CodeRabbit