- 设置 PLAYWRIGHT_BROWSERS_PATH 环境变量指向 /app/.browsers - 创建 /app/.browsers 目录用于存放浏览器文件 - 分别以 root 用户和 appuser 用户执行 Playwright 依赖和浏览器安装 - 提升 /app/.browsers 目录权限,保证 appuser 访问权限 - 调整安装步骤顺序,优化权限和用户切换流程 docs(kami-gateway): 新增 kami-gateway 模块文档及构建脚本说明 - 添加了 kami-gateway 模块的整体介绍及项目结构概述 - 详细描述了基础镜像构建流程和核心组件(Dockerfile.base 与 build-base-image.sh) - 分析了 Go 依赖管理方式及 Docker 构建优化机制 - 介绍了 CI/CD 集成流程及自动化构建逻辑 - 阐述了性能优化措施,包括中国镜像源配置和极速构建策略 - 提供了常见故障排查指南以提高镜像构建和推送的稳定性 - 补充了安全性设计,如非 root 用户运行和证书管理 chore(docker): 更新 Go 模块代理地址 - 将 GOPROXY 从 https://goproxy.cn 更改为 https://goproxy.io - 保持其他环境变量配置不变 - 解决国内代理访问速度或稳定性问题
6.0 KiB
CI/CD集成
**Referenced Files in This Document** - [README.md](file://kami-gateway/README.md) - [build-base-image.sh](file://kami-gateway/build-base-image.sh)目录
引言
本文档系统性地描述了kami-gateway模块在Drone CI环境下的自动化构建与发布流程。重点说明CI配置如何监听kami-gateway目录变更,触发build-base-image.sh脚本执行,以及环境变量在CI流水线中的作用机制。通过分析自动化流程,展示其在提升构建效率和保障环境一致性方面的优势。
项目结构
kami-gateway模块包含构建基础Docker镜像所需的核心文件。项目结构设计清晰,将构建脚本、配置文件和源代码组织在独立目录中,便于CI/CD系统识别和处理变更。
graph TD
A[kami-gateway/] --> B[README.md]
A --> C[build-base-image.sh]
A --> D[go.mod]
A --> E[go.sum]
Diagram sources
Section sources
核心组件
kami-gateway的CI/CD流程围绕两个核心组件构建:build-base-image.sh构建脚本和README.md中的CI/CD说明文档。构建脚本负责执行具体的镜像构建、标记和推送操作,而文档则定义了CI系统的触发条件和工作流程。
Section sources
架构概述
kami-gateway的CI/CD架构采用事件驱动模式,当kami-gateway目录发生变更时,Drone CI系统被触发,执行预定义的构建流水线。该流水线调用构建脚本,完成从代码到容器镜像的转换,并根据配置决定是否将镜像推送到远程仓库。
graph LR
A[代码仓库变更] --> B{Drone CI触发}
B --> C[执行build-base-image.sh]
C --> D[构建本地镜像]
D --> E{REGISTRY != localhost:5000?}
E --> |是| F[标记并推送镜像]
E --> |否| G[仅本地构建]
F --> H[通知完成]
G --> H
Diagram sources
详细组件分析
构建脚本分析
build-base-image.sh脚本是自动化流程的核心执行单元,负责处理镜像的构建、标记和推送逻辑。
环境变量注入与处理
flowchart TD
Start([开始]) --> Config["配置环境变量"]
Config --> REGISTRY["REGISTRY = ${DOCKER_REGISTRY:-git.oceanpay.cc/danial}"]
Config --> VERSION["VERSION = ${VERSION:-latest}"]
REGISTRY --> Display["显示Registry: $REGISTRY"]
VERSION --> Display
Display --> Build["构建本地镜像"]
Diagram sources
条件推送逻辑
flowchart TD
Check["检查REGISTRY值"]
Check --> Condition{"REGISTRY != localhost:5000?"}
Condition --> |真| Tag["标记远程镜像"]
Condition --> |假| SkipTag["跳过标记"]
Tag --> Push["推送镜像到仓库"]
SkipTag --> Complete["构建完成"]
Push --> Complete
Diagram sources
Section sources
CI/CD流程说明
流水线触发机制
sequenceDiagram
participant Repo as 代码仓库
participant Drone as Drone CI
participant Script as build-base-image.sh
Repo->>Drone : kami-gateway/目录变更
Drone->>Drone : 检测到变更
Drone->>Script : 执行构建脚本
Script->>Script : 设置环境变量
Script->>Script : 构建本地镜像
Script->>Script : 条件性推送
Script-->>Drone : 返回状态
Drone-->>Repo : 更新构建状态
Diagram sources
依赖分析
kami-gateway的CI/CD流程依赖于外部系统和环境配置,包括Drone CI平台、Docker运行时环境和镜像仓库服务。这些依赖关系确保了构建流程的完整性和可靠性。
graph TD
A[Drone CI] --> B[kami-gateway模块]
C[Docker Engine] --> B
D[镜像仓库] --> B
B --> E[应用部署]
Diagram sources
Section sources
性能考量
kami-gateway的CI/CD流程设计注重效率和资源优化。通过条件构建机制,避免了不必要的镜像推送操作,特别是在本地测试环境中。基础镜像缓存和预下载依赖包的设计,显著缩短了构建时间,实现了10-30秒内的快速构建。
故障排除指南
当CI/CD流程出现问题时,应首先检查环境变量是否正确注入,特别是DOCKER_REGISTRY和VERSION。确认Drone CI是否正确检测到kami-gateway目录的变更,并验证构建脚本的执行权限。对于推送失败的情况,需检查网络连接和镜像仓库的访问凭证。
Section sources
结论
kami-gateway模块的CI/CD集成通过自动化构建与发布流程,实现了高效的开发运维实践。Drone CI系统能够准确监听目录变更并触发构建,环境变量的灵活注入机制支持多环境部署,而条件推送逻辑则有效避免了本地测试时的无效操作。这一自动化流程不仅提升了构建效率,还保障了不同环境间的一致性,为持续交付提供了可靠的基础。