From eef1c2e7d3e454932b593fcae02a2b64ef4d0ea6 Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Thu, 12 Mar 2026 13:37:57 +0100 Subject: [PATCH] fix(rag): Use docker cp to inject checked-out scripts The runner container can't access host paths directly, so the deploy dir scripts were always stale. Now uses docker create + docker cp + docker start to copy the freshly checked-out scripts into the ingestion container before starting it. Co-Authored-By: Claude Opus 4.6 --- .gitea/workflows/rag-ingest.yaml | 34 ++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/.gitea/workflows/rag-ingest.yaml b/.gitea/workflows/rag-ingest.yaml index 9c4258f..9d23040 100644 --- a/.gitea/workflows/rag-ingest.yaml +++ b/.gitea/workflows/rag-ingest.yaml @@ -35,7 +35,6 @@ jobs: run: | set -euo pipefail PHASE="${{ github.event.inputs.phase }}" - DEPLOY_DIR="/opt/breakpilot-compliance" echo "=== RAG Ingestion: Phase ${PHASE} ===" echo "" @@ -48,7 +47,6 @@ jobs: # Netzwerk finden in dem die bp-Services laufen BP_NETWORK=$(docker inspect bp-core-rag-service --format '{{range $k,$v := .NetworkSettings.Networks}}{{$k}}{{end}}' 2>/dev/null || echo "") if [ -z "$BP_NETWORK" ]; then - # Fallback: Netzwerk vom Compliance-Backend nehmen BP_NETWORK=$(docker inspect bp-compliance-backend --format '{{range $k,$v := .NetworkSettings.Networks}}{{$k}}{{end}}' 2>/dev/null || echo "") fi @@ -67,16 +65,12 @@ jobs: echo "BreakPilot Netzwerk: $BP_NETWORK" echo "" - # Scripts aus dem Deploy-Dir aktualisieren (git pull) - # damit die neuesten Fixes verfuegbar sind - cd "${DEPLOY_DIR}" && git pull --no-rebase origin main 2>/dev/null || true - cd - - - # Ingestion in einem Container auf dem BP-Netzwerk ausfuehren, - # mit Zugriff auf die Scripts aus dem Deploy-Dir - docker run --rm \ + # Ingestion-Container erstellen (noch nicht starten), + # dann Scripts aus dem Checkout per docker cp hineinkopieren. + # So verwenden wir IMMER die neueste Version der Scripts, + # unabhaengig vom Deploy-Dir auf dem Host. + CONTAINER_ID=$(docker create \ --network "$BP_NETWORK" \ - -v "${DEPLOY_DIR}/scripts:/workspace/scripts:ro" \ -e "WORK_DIR=/tmp/rag-ingestion" \ -e "RAG_URL=http://bp-core-rag-service:8097/api/v1/documents/upload" \ -e "QDRANT_URL=https://qdrant-dev.breakpilot.ai" \ @@ -92,14 +86,28 @@ jobs: elif [ '${PHASE}' = 'download' ]; then bash scripts/ingest-legal-corpus.sh --only download else - # Download-Phase muss immer zuerst laufen (erstellt Textdateien) echo '=== Running download phase first ===' bash scripts/ingest-legal-corpus.sh --only download echo '' echo '=== Running phase: ${PHASE} ===' bash scripts/ingest-legal-corpus.sh --only '${PHASE}' fi - " + ") + + echo "Container: $CONTAINER_ID" + + # Scripts aus dem Git-Checkout in den Container kopieren + docker cp scripts/. "${CONTAINER_ID}:/workspace/scripts/" + echo "Scripts kopiert (aus Git-Checkout)" + + # Container starten und Output streamen + docker start -a "${CONTAINER_ID}" || EXITCODE=$? + + # Container aufraeumen + docker rm -f "${CONTAINER_ID}" 2>/dev/null || true echo "" echo "=== Ingestion abgeschlossen ===" + + # Exit mit dem Original-Exitcode + exit ${EXITCODE:-0}