ci(HH-451): harden production Compose smoke (#95)
Co-authored-by: Rogee <rogee@ipao.vip>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 个字段支持 **热加载**(无需重启)
|
||||
|
||||
@@ -119,6 +119,8 @@ services:
|
||||
meilisearch:
|
||||
condition: service_healthy
|
||||
command: ["worker"]
|
||||
healthcheck:
|
||||
disable: true
|
||||
environment:
|
||||
<<: *gochat-environment
|
||||
GOCHAT_DATABASE_RUN_MIGRATIONS: "false"
|
||||
|
||||
Reference in New Issue
Block a user