Confirm docs-only changes no longer trigger a production deploy

This commit is contained in:
2026-08-13 11:56:39 +07:00
parent a4819b8653
commit d5ea65cd6e
5 changed files with 32 additions and 8 deletions
+11
View File
@@ -3,6 +3,17 @@ name: Deploy to production
on:
push:
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:
jobs:
+14 -7
View File
@@ -23,17 +23,24 @@ jobs:
chmod 600 ~/.ssh/prod.pem
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
run: |
ssh -i ~/.ssh/prod.pem "ubuntu@${{ secrets.EC2_HOST }}" '
set -e
sudo docker run --rm --network docker_default curlimages/curl -sf -X POST http://qdrant:6333/collections/duocthu_v1/snapshots > /dev/null
sudo docker run --rm --network docker_default curlimages/curl -sf -X POST http://qdrant:6333/collections/duocthu_v1__manifest/snapshots > /dev/null
sleep 3
SNAP=$(sudo docker exec docker-qdrant-1 ls -t /qdrant/storage/snapshots/duocthu_v1/ | head -1)
SNAPM=$(sudo docker exec docker-qdrant-1 ls -t /qdrant/storage/snapshots/duocthu_v1__manifest/ | head -1)
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() {
collection="$1"; outfile="$2"
name=$(sudo docker run --rm --network docker_default curlimages/curl -sf -X POST "http://qdrant:6333/collections/${collection}/snapshots" | grep -oP "\"name\":\"\K[^\"]+")
test -n "$name"
sudo docker run --rm --network docker_default curlimages/curl -sf "http://qdrant:6333/collections/${collection}/snapshots/${name}" > "$outfile"
}
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
ls -la /tmp/*.snapshot
'
+1
View File
@@ -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
have drifted in places — the drift is listed in
[26-known-limitations.md](26-known-limitations.md#documentationcode-discrepancies).
@@ -12,6 +12,7 @@ data:
EMBEDDING_PROVIDER: {{ .Values.aiService.config.embeddingProvider | quote }}
ANSWER_PROVIDER: {{ .Values.aiService.config.answerProvider | quote }}
ANSWER_MODEL_ID: {{ .Values.aiService.config.answerModelId | quote }}
ENTITIES_PATH: {{ .Values.aiService.config.entitiesPath | quote }}
METRICS_ENABLED: {{ .Values.aiService.config.metricsEnabled | quote }}
OTEL_ENABLED: {{ and .Values.observability.enabled .Values.aiService.config.otelEnabled | quote }}
OTEL_SERVICE_NAME: ai-service
+5 -1
View File
@@ -33,6 +33,10 @@ aiService:
embeddingProvider: disabled
answerProvider: disabled
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
metricsEnabled: true
otelEnabled: true
@@ -79,7 +83,7 @@ qdrant:
enabled: true
# Set when using an external/managed Qdrant; empty uses the bundled Service.
url: ""
image: qdrant/qdrant:v1.13.4
image: qdrant/qdrant:v1.19.0
storage: 10Gi
resources:
requests: { cpu: 100m, memory: 256Mi }