80d23f0e3d
Endoleap brand checks / verify (pull_request) Successful in 2m27s
creative workspace review checks / verify-deployed-canvas (pull_request) Successful in 3m10s
creative workspace review checks / verify (pull_request) Successful in 42m47s
python CI and deployment / verify-and-deploy (pull_request) Successful in 9m51s
2.4 KiB
2.4 KiB
Docker 构建上下文与缓存
入口与忽略规则
所有 CI 构建命令都在仓库根目录使用 . 作为 context,包括以 -f 选择的子项目 Dockerfile。统一使用根 .dockerignore,递归排除依赖目录、Git 元数据、本机环境文件、编译输出、测试证据及缓存;保留 .env.example 供 Compose 校验使用。
普通的子目录 .dockerignore 不会自动叠加到根 context。当前 runner 使用 legacy builder,不依赖 Dockerfile 专属忽略文件或 BuildKit cache mount。若以后改用子目录 context,必须同时调整共享包与跨应用文件的输入路径,不能只在子目录添加忽略文件。
依赖层与源码层
- Wiki 的根 Dockerfile 是实际 CI 入口,
apps/waterfall-wiki/Dockerfile是对应副本,两者的功能内容保持同步;根文件额外保留镜像生命周期标签。 - Web 应用安装前只复制自身清单、锁文件、workspace 配置和品牌包清单,满足
workspace:*依赖发现。完整品牌包在安装后复制;颜色、Logo 或品牌脚本变化仍会重新编译应用,但不会仅因此重新下载依赖。 - Python 从
pyproject.toml读取固定运行依赖与构建后端要求,在独立依赖阶段安装。源码阶段安装当前包并运行单测,最终镜像仅继承系统运行环境并复制已验证的虚拟环境,不携带应用源码目录和测试目录。虚拟环境仍包含 pip 和构建后端,未声称完全剥离构建工具。 - 品牌检查镜像只用于 CI。其 Python 图片校验依赖安装放在品牌源码之前,避免源码变化重新下载这些依赖。
- 不因共享包缓存命中而漏掉消费者:品牌变更需触发 Wiki/Studio PR 检查和 main 发布。根忽略规则变化也触发相关检查。
验证与限制
构建、打包与产物验证只在已确认的 ces-control runner 执行。Python PR 运行镜像构建和单测,但只有 main push 才会发布 latest 标签。Web PR 与品牌检查沿用现有远程 Docker 验证流程。
本次没有升级 Docker builder,也没有承诺消除 legacy builder 的镜像层提交耗时;缓存层调整后的实际收益需比较后续 CI 日志。源码变化仍需构建,持久测试环境和按影响范围选择测试属于后续 CI 调整。
本机不新增 Dev Containers/Tilt 启动方式;这类方案需要单独确认本地运行和编译授权。