diff --git a/.github/workflows/ai-review.yml b/.github/workflows/ai-review.yml
index 0bd1d75..af1e723 100644
--- a/.github/workflows/ai-review.yml
+++ b/.github/workflows/ai-review.yml
@@ -7,42 +7,24 @@ on:
jobs:
review:
runs-on: ubuntu-latest
- # Using an external Ollama server at 192.168.1.92:11434
- # Do NOT start a local Ollama service in the runner; the workflow will connect to the external host.
+ container:
+ image: python:3.11-bookworm
steps:
- name: Checkout
uses: actions/checkout@v4
- - name: Set up Python
- uses: actions/setup-python@v4
- with:
- python-version: '3.11.x'
- check-latest: true
-
- name: Show Python
run: python --version
- - name: Ensure Python 3.11 present (fallback)
+ - name: Install system deps (git + curl)
run: |
- set -e
- echo "Checking python version..."
- if command -v python >/dev/null 2>&1; then
- python --version || true
- fi
- if python --version 2>&1 | grep -q "Python 3.11"; then
- echo "Python 3.11 already installed"
- else
- echo "Attempting to install python3.11 via apt"
- sudo apt-get update
- sudo apt-get install -y python3.11 python3.11-venv python3.11-distutils python3-pip || true
- if [ -x "/usr/bin/python3.11" ]; then
- sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.11 1 || true
- fi
- python --version || /usr/bin/python3.11 --version || true
- fi
+ apt-get update
+ apt-get install -y --no-install-recommends git curl ca-certificates
+ git --version
+ curl --version
- - name: Create venv and install
+ - name: Create venv and install project
run: |
python -m venv venv
. venv/bin/activate
@@ -51,24 +33,25 @@ jobs:
- name: Wait for Ollama
run: |
- for i in $(seq 1 30); do
- if curl -sSf http://192.168.1.92:11434/ >/dev/null 2>&1; then
- echo "ollama ready" && break
+ for i in $(seq 1 60); do
+ if curl -sSf http://192.168.1.92:11434/api/tags >/dev/null 2>&1; then
+ echo "ollama ready" && exit 0
fi
sleep 1
done
-
- - name: (Optional) Pull model into Ollama
- run: |
- . venv/bin/activate
- ollama pull qwen2.5-coder:7b || true
+ echo "ollama not reachable" >&2
+ exit 1
- name: Run ai-reviewer
env:
OLLAMA_HOST: http://192.168.1.92:11434
run: |
. venv/bin/activate
- ai-reviewer review --repo . --base "${{ github.event.pull_request.base.ref }}" --head "${{ github.head_ref }}" --format json > review.json
+ ai-reviewer review \
+ --repo . \
+ --base "${{ github.event.pull_request.base.ref }}" \
+ --head "${{ github.head_ref }}" \
+ --format json > review.json
- name: Post PR comment with findings
uses: actions/github-script@v6
@@ -76,16 +59,21 @@ jobs:
script: |
const fs = require('fs');
let body = '{}';
- try {
- body = fs.readFileSync('review.json', 'utf8');
- } catch (e) {
+ try { body = fs.readFileSync('review.json', 'utf8'); } catch (e) {
body = JSON.stringify({ error: 'missing-review', message: String(e) });
}
let parsed = {};
- try { parsed = JSON.parse(body); } catch (e) { parsed = { error: 'invalid-json', raw: body }; }
+ try { parsed = JSON.parse(body); } catch (e) {
+ parsed = { error: 'invalid-json', raw: body };
+ }
const findings = parsed.findings || [];
- const summary = findings.length === 0 ? 'AI Reviewer: no findings.' : `AI Reviewer found ${findings.length} findings.`;
- const commentBody = `${summary}\n\nFull JSON
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n` + '```json\n' + JSON.stringify(parsed, null, 2) + '\n```\n ';
+ const summary = findings.length === 0
+ ? 'AI Reviewer: no findings.'
+ : `AI Reviewer found ${findings.length} findings.`;
+ const commentBody =
+ `${summary}\n\nFull JSON
\n\n` +
+ '```json\n' + JSON.stringify(parsed, null, 2) + '\n```\n' +
+ ' ';
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,