fix(ci): daily-check DooD挂载路径修复 + shell bash修复 #1024

Merged
xiaoxia merged 1 commits from fix/ci-daily-check-dood-mount into main 2026-07-27 12:04:41 +08:00
Owner

问题

daily-check的3个staging测试job在docker runner下全部失败,根因是DooD模式下docker run -v "$PWD:/workspace"挂载路径错误:

  • CI容器内的$PWD在宿主机docker daemon上不存在
  • 导致挂载空目录,脚本找不到、npm ci失败

另外还有4个step使用shell: sh但代码中用了${PIPESTATUS[0]}(bash专属),导致Bad substitution。

修复

  1. shell修复:4个使用PIPESTATUS的step从shell: sh改为shell: bash
  2. DooD挂载修复:3个staging测试job从docker run -v改为docker create + docker cp + docker start模式,绕过DooD路径问题

影响范围

只修改.gitea/workflows/daily-check.yml,纯CI配置改动。

Issue: #980

## 问题 daily-check的3个staging测试job在docker runner下全部失败,根因是DooD模式下`docker run -v "$PWD:/workspace"`挂载路径错误: - CI容器内的`$PWD`在宿主机docker daemon上不存在 - 导致挂载空目录,脚本找不到、npm ci失败 另外还有4个step使用`shell: sh`但代码中用了`${PIPESTATUS[0]}`(bash专属),导致Bad substitution。 ## 修复 1. **shell修复**:4个使用PIPESTATUS的step从`shell: sh`改为`shell: bash` 2. **DooD挂载修复**:3个staging测试job从`docker run -v`改为`docker create + docker cp + docker start`模式,绕过DooD路径问题 ## 影响范围 只修改`.gitea/workflows/daily-check.yml`,纯CI配置改动。 Issue: #980
xiaoxia self-assigned this 2026-07-27 11:52:54 +08:00
xiaoxia added 1 commit 2026-07-27 11:52:55 +08:00
fix(ci): daily-check DooD挂载路径修复 - docker create+cp+start代替run -v
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 12s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 23s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m4s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m4s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 34s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 48s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 22s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 3m46s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m59s
AI Code Review / AI Code Review (pull_request) Successful in 3m34s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 5m5s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 6m59s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 3m10s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 19s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 27s
e9805d5961
Collaborator

代码审查结果 - PR #1024

⚠️ 问题(0个需要修改)

💡 建议(2个可选)

  1. 性能优化建议docker cp . 会将宿主机当前目录下的所有文件(包括 .git 目录、构建产物等)复制到容器中。与 docker run -v 挂载模式相比,这增加了显著的 I/O 开销和时间消耗,特别是在代码仓库较大时。建议确认 CI 环境中是否存在必须使用 cp 的限制(如权限问题),若无,可考虑回退至挂载模式;若必须使用 cp,建议使用 tar 配合排除参数(如 --exclude='.git')来仅复制必要文件,以提升构建速度。
  2. 容器清理逻辑:虽然代码中使用了 || true 来忽略 docker rm 的错误,但在 docker create 成功而后续步骤(如 docker cp)失败时,容器会被保留。建议在 docker cp 失败时显式记录日志或执行清理,尽管 set +e 模式下脚本会继续执行,但显式的错误处理有助于排查 CI 问题。

格式检查通过 | 逻辑审查需修改 | ⚠️ 建议关注性能


🤖 由 AI 代码审查机器人自动生成 | 2026-07-27 03:57:37 | 模型:

## 代码审查结果 - PR #1024 ### ⚠️ 问题(0个需要修改) ### 💡 建议(2个可选) 1. **性能优化建议**:`docker cp .` 会将宿主机当前目录下的所有文件(包括 `.git` 目录、构建产物等)复制到容器中。与 `docker run -v` 挂载模式相比,这增加了显著的 I/O 开销和时间消耗,特别是在代码仓库较大时。建议确认 CI 环境中是否存在必须使用 `cp` 的限制(如权限问题),若无,可考虑回退至挂载模式;若必须使用 `cp`,建议使用 `tar` 配合排除参数(如 `--exclude='.git'`)来仅复制必要文件,以提升构建速度。 2. **容器清理逻辑**:虽然代码中使用了 `|| true` 来忽略 `docker rm` 的错误,但在 `docker create` 成功而后续步骤(如 `docker cp`)失败时,容器会被保留。建议在 `docker cp` 失败时显式记录日志或执行清理,尽管 `set +e` 模式下脚本会继续执行,但显式的错误处理有助于排查 CI 问题。 --- ✅ 格式检查通过 | ✅ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-27 03:57:37 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit 7fab42c3d0 into main 2026-07-27 12:04:41 +08:00

🗑️ 预览环境已清理

PR #1024 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #1024 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.