Confirm docs-only changes no longer trigger a production deploy
This commit is contained in:
@@ -3,6 +3,17 @@ name: Deploy to production
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [master]
|
branches: [master]
|
||||||
|
paths:
|
||||||
|
# Everything the two Dockerfiles actually COPY into their images.
|
||||||
|
- apps/ai-service/**
|
||||||
|
- apps/web/**
|
||||||
|
- packages/**
|
||||||
|
- ingestion/data/verified/drug_entities.json
|
||||||
|
# docker-compose.prod.yml, docker-compose.observability.yml,
|
||||||
|
# Caddyfile, and the grafana/otel/prometheus/tempo configs it mounts.
|
||||||
|
- infra/docker/**
|
||||||
|
# Changes to the deploy logic itself should still be exercised.
|
||||||
|
- .github/workflows/deploy.yml
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|||||||
@@ -23,17 +23,24 @@ jobs:
|
|||||||
chmod 600 ~/.ssh/prod.pem
|
chmod 600 ~/.ssh/prod.pem
|
||||||
ssh-keyscan -H "${{ secrets.EC2_HOST }}" >> ~/.ssh/known_hosts 2>/dev/null
|
ssh-keyscan -H "${{ secrets.EC2_HOST }}" >> ~/.ssh/known_hosts 2>/dev/null
|
||||||
|
|
||||||
|
- name: Report production Qdrant version
|
||||||
|
run: |
|
||||||
|
ssh -i ~/.ssh/prod.pem "ubuntu@${{ secrets.EC2_HOST }}" '
|
||||||
|
sudo docker run --rm --network docker_default curlimages/curl -sf http://qdrant:6333/
|
||||||
|
'
|
||||||
|
|
||||||
- name: Snapshot Qdrant collections on production
|
- name: Snapshot Qdrant collections on production
|
||||||
run: |
|
run: |
|
||||||
ssh -i ~/.ssh/prod.pem "ubuntu@${{ secrets.EC2_HOST }}" '
|
ssh -i ~/.ssh/prod.pem "ubuntu@${{ secrets.EC2_HOST }}" '
|
||||||
set -e
|
set -e
|
||||||
sudo docker run --rm --network docker_default curlimages/curl -sf -X POST http://qdrant:6333/collections/duocthu_v1/snapshots > /dev/null
|
snap() {
|
||||||
sudo docker run --rm --network docker_default curlimages/curl -sf -X POST http://qdrant:6333/collections/duocthu_v1__manifest/snapshots > /dev/null
|
collection="$1"; outfile="$2"
|
||||||
sleep 3
|
name=$(sudo docker run --rm --network docker_default curlimages/curl -sf -X POST "http://qdrant:6333/collections/${collection}/snapshots" | grep -oP "\"name\":\"\K[^\"]+")
|
||||||
SNAP=$(sudo docker exec docker-qdrant-1 ls -t /qdrant/storage/snapshots/duocthu_v1/ | head -1)
|
test -n "$name"
|
||||||
SNAPM=$(sudo docker exec docker-qdrant-1 ls -t /qdrant/storage/snapshots/duocthu_v1__manifest/ | head -1)
|
sudo docker run --rm --network docker_default curlimages/curl -sf "http://qdrant:6333/collections/${collection}/snapshots/${name}" > "$outfile"
|
||||||
sudo docker cp "docker-qdrant-1:/qdrant/storage/snapshots/duocthu_v1/${SNAP}" /tmp/duocthu_v1.snapshot
|
}
|
||||||
sudo docker cp "docker-qdrant-1:/qdrant/storage/snapshots/duocthu_v1__manifest/${SNAPM}" /tmp/duocthu_v1__manifest.snapshot
|
snap duocthu_v1 /tmp/duocthu_v1.snapshot
|
||||||
|
snap duocthu_v1__manifest /tmp/duocthu_v1__manifest.snapshot
|
||||||
sudo chown ubuntu:ubuntu /tmp/duocthu_v1.snapshot /tmp/duocthu_v1__manifest.snapshot
|
sudo chown ubuntu:ubuntu /tmp/duocthu_v1.snapshot /tmp/duocthu_v1__manifest.snapshot
|
||||||
ls -la /tmp/*.snapshot
|
ls -la /tmp/*.snapshot
|
||||||
'
|
'
|
||||||
|
|||||||
@@ -164,3 +164,4 @@ and `adr/0001`–`adr/0008` predate this set. They are kept for their reasoning
|
|||||||
and their empirical measurements. Where they describe current behaviour, they
|
and their empirical measurements. Where they describe current behaviour, they
|
||||||
have drifted in places — the drift is listed in
|
have drifted in places — the drift is listed in
|
||||||
[26-known-limitations.md](26-known-limitations.md#documentationcode-discrepancies).
|
[26-known-limitations.md](26-known-limitations.md#documentationcode-discrepancies).
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ data:
|
|||||||
EMBEDDING_PROVIDER: {{ .Values.aiService.config.embeddingProvider | quote }}
|
EMBEDDING_PROVIDER: {{ .Values.aiService.config.embeddingProvider | quote }}
|
||||||
ANSWER_PROVIDER: {{ .Values.aiService.config.answerProvider | quote }}
|
ANSWER_PROVIDER: {{ .Values.aiService.config.answerProvider | quote }}
|
||||||
ANSWER_MODEL_ID: {{ .Values.aiService.config.answerModelId | quote }}
|
ANSWER_MODEL_ID: {{ .Values.aiService.config.answerModelId | quote }}
|
||||||
|
ENTITIES_PATH: {{ .Values.aiService.config.entitiesPath | quote }}
|
||||||
METRICS_ENABLED: {{ .Values.aiService.config.metricsEnabled | quote }}
|
METRICS_ENABLED: {{ .Values.aiService.config.metricsEnabled | quote }}
|
||||||
OTEL_ENABLED: {{ and .Values.observability.enabled .Values.aiService.config.otelEnabled | quote }}
|
OTEL_ENABLED: {{ and .Values.observability.enabled .Values.aiService.config.otelEnabled | quote }}
|
||||||
OTEL_SERVICE_NAME: ai-service
|
OTEL_SERVICE_NAME: ai-service
|
||||||
|
|||||||
@@ -33,6 +33,10 @@ aiService:
|
|||||||
embeddingProvider: disabled
|
embeddingProvider: disabled
|
||||||
answerProvider: disabled
|
answerProvider: disabled
|
||||||
answerModelId: deepseek.v3.2
|
answerModelId: deepseek.v3.2
|
||||||
|
# The Dockerfile bakes the catalog file in at this path; config.py's own
|
||||||
|
# repo-relative default only resolves inside a full monorepo checkout,
|
||||||
|
# not this flattened image layout. Matches apps/ai-service/.env.example.
|
||||||
|
entitiesPath: ./ingestion_data/drug_entities.json
|
||||||
qdrantCollection: duocthu_v1
|
qdrantCollection: duocthu_v1
|
||||||
metricsEnabled: true
|
metricsEnabled: true
|
||||||
otelEnabled: true
|
otelEnabled: true
|
||||||
@@ -79,7 +83,7 @@ qdrant:
|
|||||||
enabled: true
|
enabled: true
|
||||||
# Set when using an external/managed Qdrant; empty uses the bundled Service.
|
# Set when using an external/managed Qdrant; empty uses the bundled Service.
|
||||||
url: ""
|
url: ""
|
||||||
image: qdrant/qdrant:v1.13.4
|
image: qdrant/qdrant:v1.19.0
|
||||||
storage: 10Gi
|
storage: 10Gi
|
||||||
resources:
|
resources:
|
||||||
requests: { cpu: 100m, memory: 256Mi }
|
requests: { cpu: 100m, memory: 256Mi }
|
||||||
|
|||||||
Reference in New Issue
Block a user