From d4d73a6f76b57c100c4b25ab48a61713823e82e1 Mon Sep 17 00:00:00 2001 From: pr-daaif Date: Fri, 17 Jul 2026 12:27:03 +0100 Subject: [PATCH] fix(ci): PostgreSQL de CI = l'image infra (pgvector + PostGIS) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La migration r5_ia exige pgvector, absent de postgis/postgis — la bascule annoncée en R1 (« pgvector arrivera en R5 ») est faite : les jobs api et e2e construisent infra/postgres et le démarrent par étape (les services GitHub ne savent pas builder). La migration crée aussi l'extension elle-même (idempotent, même patron que PostGIS en r1). Co-Authored-By: Claude Fable 5 --- .github/workflows/ci.yml | 44 +++++++++---------- .../20260717111229_r5_ia/migration.sql | 3 ++ 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d306b0b..4336678 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -59,18 +59,8 @@ jobs: name: api (tests + couverture ≥ 70 %) runs-on: ubuntu-latest services: - # R1+ : la migration r1_referentiel exige PostGIS (colonne générée geography). - # pgvector arrivera en R5 (bascule alors sur l’image infra/postgres). - postgres: - image: postgis/postgis:18-3.6 - env: - POSTGRES_USER: siop - POSTGRES_PASSWORD: siop - POSTGRES_DB: siop - ports: ['5432:5432'] - options: >- - --health-cmd "pg_isready -U siop -d siop" - --health-interval 5s --health-timeout 3s --health-retries 10 + # PostgreSQL vient d'infra/postgres (pgvector + PostGIS — R5) : les + # services ne savent pas builder, il démarre donc par étape ci-dessous. redis: image: redis:7.4-alpine ports: ['6379:6379'] @@ -86,6 +76,15 @@ jobs: MINIO_SECRET_KEY: siop-minio steps: - uses: actions/checkout@v5 + - name: Démarrer PostgreSQL (image infra — pgvector + PostGIS, comme partout) + run: | + docker build -t siop2/postgres infra/postgres + docker run -d --name postgres -p 5432:5432 \ + -e POSTGRES_USER=siop -e POSTGRES_PASSWORD=siop -e POSTGRES_DB=siop \ + siop2/postgres + for i in $(seq 1 30); do + docker exec postgres pg_isready -U siop -d siop && break; sleep 2; + done - name: Démarrer MinIO (l'image officielle exige une commande — pas un service) run: | docker run -d --name minio -p 9000:9000 \ @@ -150,16 +149,8 @@ jobs: name: e2e (parcours démo Playwright) runs-on: ubuntu-latest services: - postgres: - image: postgis/postgis:18-3.6 - env: - POSTGRES_USER: siop - POSTGRES_PASSWORD: siop - POSTGRES_DB: siop - ports: ['5432:5432'] - options: >- - --health-cmd "pg_isready -U siop -d siop" - --health-interval 5s --health-timeout 3s --health-retries 10 + # PostgreSQL vient d'infra/postgres (pgvector + PostGIS — R5) : les + # services ne savent pas builder, il démarre donc par étape ci-dessous. redis: image: redis:7.4-alpine ports: ['6379:6379'] @@ -175,6 +166,15 @@ jobs: MINIO_SECRET_KEY: siop-minio steps: - uses: actions/checkout@v5 + - name: Démarrer PostgreSQL (image infra — pgvector + PostGIS, comme partout) + run: | + docker build -t siop2/postgres infra/postgres + docker run -d --name postgres -p 5432:5432 \ + -e POSTGRES_USER=siop -e POSTGRES_PASSWORD=siop -e POSTGRES_DB=siop \ + siop2/postgres + for i in $(seq 1 30); do + docker exec postgres pg_isready -U siop -d siop && break; sleep 2; + done - name: Démarrer MinIO (l'image officielle exige une commande — pas un service) run: | docker run -d --name minio -p 9000:9000 \ diff --git a/apps/api/prisma/migrations/20260717111229_r5_ia/migration.sql b/apps/api/prisma/migrations/20260717111229_r5_ia/migration.sql index d3d73f6..fbb70ce 100644 --- a/apps/api/prisma/migrations/20260717111229_r5_ia/migration.sql +++ b/apps/api/prisma/migrations/20260717111229_r5_ia/migration.sql @@ -1,3 +1,6 @@ +-- R5 (ADR-004) : pgvector — même patron que PostGIS en r1_referentiel +CREATE EXTENSION IF NOT EXISTS vector; + -- CreateEnum CREATE TYPE "RagSourceType" AS ENUM ('DOCUMENT', 'WORK_ORDER');