ci(HH-451): harden production Compose smoke (#95)

Co-authored-by: Rogee <rogee@ipao.vip>
This commit is contained in:
Rogee
2026-08-22 03:58:11 +08:00
committed by GitHub
co-authored by rogee
parent 02a188dc29
commit 0e23ccc465
3 changed files with 17 additions and 2 deletions
+14 -1
View File
@@ -266,7 +266,7 @@ jobs:
- name: Verify artifact contents
run: |
docker run --rm --entrypoint sh "$GOCHAT_IMAGE_REF" -c \
'test -s /app/configs/config.production.yaml && test -d /app/migrations && test -s /app/frontend/dist/index.html'
'test -s /app/configs/config.production.yaml && find /app/migrations -maxdepth 1 -type f -name "*.sql" -print -quit | grep -q . && test -s /app/frontend/dist/index.html && test -s /app/frontend/dist/favicon-32x32.png'
docker run --rm --entrypoint sh "$SHANGWUTONG_IMAGE_REF" -c \
'test -x /usr/local/bin/shangwutong && test -d /data && test -d /backup && test "$(id -u)" -eq 10001'
- name: Start production Compose and smoke core pages
@@ -275,8 +275,21 @@ jobs:
docker compose -f deploy/docker/docker-compose.prod.yml config --format json | python3 -c 'import json, os, sys; config = json.load(sys.stdin); assert all(config["services"][service]["environment"]["GOCHAT_JWT_PREVIOUS_SECRETS"] == os.environ["GOCHAT_JWT_PREVIOUS_SECRETS"] for service in ("gochat", "worker"))'
docker compose -f deploy/docker/docker-compose.prod.yml --profile ops run --rm migrate
docker compose -f deploy/docker/docker-compose.prod.yml up -d --wait gochat shangwutong
docker compose -f deploy/docker/docker-compose.prod.yml up -d worker
for service in gochat worker shangwutong; do
container_id="$(docker compose -f deploy/docker/docker-compose.prod.yml ps -q "$service")"
test -n "$container_id"
test "$(docker inspect --format '{{.State.Status}}' "$container_id")" = running
done
for service in gochat shangwutong; do
container_id="$(docker compose -f deploy/docker/docker-compose.prod.yml ps -q "$service")"
test "$(docker inspect --format '{{.State.Health.Status}}' "$container_id")" = healthy
done
curl -fsS "http://127.0.0.1:$GOCHAT_PORT/health" | grep -q '"status":"healthy"'
curl -fsS "http://127.0.0.1:$GOCHAT_PORT/app" | grep -q '/assets/'
curl -fsS "http://127.0.0.1:$GOCHAT_PORT/runtime-config.js" | grep -q 'window.__GOCHAT_CONFIG__'
curl -fsS -o "$RUNNER_TEMP/favicon-32x32.png" "http://127.0.0.1:$GOCHAT_PORT/favicon-32x32.png"
test -s "$RUNNER_TEMP/favicon-32x32.png"
docker compose -f deploy/docker/docker-compose.prod.yml exec -T shangwutong \
wget -q -T 3 -O - http://127.0.0.1:9100/readyz | grep -q '"status":"ready"'
- name: Stop production Compose
+1 -1
View File
@@ -135,7 +135,7 @@ Vite dev server 会将 `/api`、`/platform`、`/cable`、`/health` 代理到 GoC
GoChat 使用 **Viper 多环境叠加**机制:
- `backend/configs/config.yaml` — 默认配置
- `backend/configs/config.prod.yaml` — 生产覆盖
- `backend/configs/config.production.yaml` — 生产覆盖
- `backend/configs/config.dev.yaml` — 开发覆盖
- `.env` — 本地覆盖(最高优先级)
- 11 个字段支持 **热加载**(无需重启)
+2
View File
@@ -119,6 +119,8 @@ services:
meilisearch:
condition: service_healthy
command: ["worker"]
healthcheck:
disable: true
environment:
<<: *gochat-environment
GOCHAT_DATABASE_RUN_MIGRATIONS: "false"