fix: preserve staging compose images
Deploy staging to test server / deploy (push) Successful in 5m38s

This commit is contained in:
linmeng
2026-07-28 17:59:55 +08:00
parent 859ff26510
commit a7ff511f55
3 changed files with 23 additions and 11 deletions
+20 -10
View File
@@ -74,20 +74,30 @@ jobs:
sudo tar -xf '$REMOTE_ARCHIVE' -C '$DEPLOY_PATH'
rm -f '$REMOTE_ARCHIVE'
cd '$DEPLOY_PATH'
export API_IMAGE='$IMAGE_REPOSITORY:api-$GITEA_SHA'
export WEB_IMAGE='$IMAGE_REPOSITORY:web-$GITEA_SHA'
export GITHUB_SHA='$GITEA_SHA'
export APP_ENV_FILE='../.env.staging'
export DATABASE_ENV_FILE='../.env.staging.database'
export CADDYFILE_PATH='./Caddyfile.staging'
export SITE_ADDRESS='https://staging.jyotisha.chat'
export ADMIN_SITE_ADDRESS='https://admin.staging.jyotisha.chat'
sudo docker compose -p jyotisha-staging --env-file .env.staging \
sudo env \
API_IMAGE='$IMAGE_REPOSITORY:api-$GITEA_SHA' \
WEB_IMAGE='$IMAGE_REPOSITORY:web-$GITEA_SHA' \
GITHUB_SHA='$GITEA_SHA' \
APP_ENV_FILE='../.env.staging' \
DATABASE_ENV_FILE='../.env.staging.database' \
CADDYFILE_PATH='./Caddyfile.staging' \
SITE_ADDRESS='https://staging.jyotisha.chat' \
ADMIN_SITE_ADDRESS='https://admin.staging.jyotisha.chat' \
docker compose -p jyotisha-staging --env-file .env.staging \
-f deploy/docker-compose.server.yml \
-f deploy/docker-compose.postgres.yml \
-f deploy/docker-compose.staging.yml \
pull api web
sudo docker compose -p jyotisha-staging --env-file .env.staging \
sudo env \
API_IMAGE='$IMAGE_REPOSITORY:api-$GITEA_SHA' \
WEB_IMAGE='$IMAGE_REPOSITORY:web-$GITEA_SHA' \
GITHUB_SHA='$GITEA_SHA' \
APP_ENV_FILE='../.env.staging' \
DATABASE_ENV_FILE='../.env.staging.database' \
CADDYFILE_PATH='./Caddyfile.staging' \
SITE_ADDRESS='https://staging.jyotisha.chat' \
ADMIN_SITE_ADDRESS='https://admin.staging.jyotisha.chat' \
docker compose -p jyotisha-staging --env-file .env.staging \
-f deploy/docker-compose.server.yml \
-f deploy/docker-compose.postgres.yml \
-f deploy/docker-compose.staging.yml \
+1 -1
View File
@@ -1578,7 +1578,7 @@
- 触发条件:`staging` push 后,Runner 使用 `registry.cn-hangzhou.aliyuncs.com/library/python:3.12-slim` 或对应 Node 地址解析基础镜像。
- 根因:阿里云 `library/*` 地址并非当前凭据可访问的公共镜像仓库,xiaoxin 直连 Docker Hub 超时;同时充值订单二维码条件渲染缺少右花括号,导致相邻 `payUrl` 条件 JSX 无法解析。
- 修复:工作流保持单 job 构建发布部署链路;checkout 使用 depth-1 浅拉取和网络超时;API/Web 使用实测可达的国内基础镜像,API 使用阿里云 APT/PyPI;补齐二维码条件渲染的 `}`;服务器 deploy 目录由 root 管理,因此上传后的目录创建、控制文件解包及 Docker 操作均使用免交互 sudo。
- 验证:Gitea run 1264 的 API 镜像构建成功并暴露 JSX 错误;补齐括号后本地 `npm run build` 完整通过 31 个页面。run 1265 的 API/Web 镜像均构建并推送 ACR 成功,部署精确失败在普通 `tar` 无权覆盖 root 所有文件;已据此将解包改为 sudo,继续用下一次运行闭环 Compose 和健康检查
- 验证:run 1264 暴露 JSX 错误,本地修复后 `npm run build` 完整通过run 1265 的双镜像均推送 ACR 成功并暴露普通 `tar` 权限错误;run 1266 证实 sudo 解包成功,随后暴露 sudo 清理 `API_IMAGE` / `WEB_IMAGE` 等临时环境,Compose 因而回落到本地默认镜像。已改为 `sudo env` 显式传值,继续用下一次运行闭环。
- 防复发:staging Dockerfile 的基础镜像必须在 xiaoxin 完整 `docker pull` 验证;APT 与 Python 包源均基于 Runner 实测选择并设置有限重试/超时,避免网络异常无限占用工作流。
- 相关记录:BUG-082、BUG-083、BUG-084
- 复发自:BUG-082
@@ -475,6 +475,8 @@ test("Gitea staging push builds ACR images and deploys them on the test server",
assert.match(workflow, /docker push "\$IMAGE_REPOSITORY:web-\$GITEA_SHA"/);
assert.match(workflow, /scp \$SCP_OPTIONS/);
assert.match(workflow, /sudo tar -xf '\$REMOTE_ARCHIVE' -C '\$DEPLOY_PATH'/);
assert.match(workflow, /sudo env/);
assert.match(workflow, /API_IMAGE='\$IMAGE_REPOSITORY:api-\$GITEA_SHA'/);
assert.match(workflow, /pull api web/);
assert.match(workflow, /up -d --no-build --remove-orphans/);
assert.match(workflow, /curl --fail.*"\$STAGING_URL\/api\/health"/);