Files
docker-registry/.qoder/repowiki/zh/content/项目概述/kami-gateway 模块/CI_CD集成与自动化.md
danial 1ecefc80af chore(docker): 优化 Playwright 浏览器安装和配置
- 设置 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
- 保持其他环境变量配置不变
- 解决国内代理访问速度或稳定性问题
2025-12-17 15:33:59 +08:00

6.3 KiB
Raw Blame History

CI/CD集成与自动化

**Referenced Files in This Document** - [build-base-image.sh](file://kami-gateway/build-base-image.sh) - [README.md](file://kami-gateway/README.md) - [build-base-image.sh](file://kami-spider-monorepo/build-base-image.sh) - [build-base-image.sh](file://alpine-base/build-base-image.sh)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构概述
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论

简介

本文档全面介绍kami-gateway模块与Drone CI等持续集成系统的集成方案。文档解析了构建脚本中的环境变量控制逻辑说明了如何实现条件化构建与镜像推送阐述了变更检测机制如何避免不必要的镜像重建展示了在CI流水线中如何安全地注入凭证并执行构建任务并讨论了镜像标签策略的最佳实践。

项目结构

项目包含多个模块的构建脚本每个模块都有独立的构建配置。kami-gateway模块作为重点分析对象其构建流程代表了整个项目的CI/CD实践标准。

Section sources

核心组件

kami-gateway模块的核心构建组件是build-base-image.sh脚本该脚本负责创建包含Go环境和Alpine运行时的基础Docker镜像。脚本实现了环境变量控制、条件构建、镜像标记和推送等关键功能。

Section sources

架构概述

kami-gateway的CI/CD架构基于Drone CI系统通过变更检测机制触发条件化构建流程。构建脚本与CI系统协同工作实现了高效的镜像构建和推送流程。

graph TB
subgraph "CI/CD Pipeline"
Trigger["变更检测\n(Drone CI)"] --> Condition["条件判断\n(目录变更)"]
Condition --> Build["执行构建\n(build-base-image.sh)"]
Build --> Push["镜像推送\n(Registry)"]
end
subgraph "构建脚本"
Env["环境变量控制\n(VERSION, DOCKER_REGISTRY)"] --> Build
Proxy["代理配置\n(USE_PROXY)"] --> Build
Tagging["镜像标记策略\n(latest, version)"] --> Build
end
Trigger --> Build
Build --> Push

**Diagram sources **

详细组件分析

构建脚本分析

kami-gateway的构建脚本实现了完整的CI/CD流程包括环境变量配置、镜像构建、标记和推送等步骤。

环境变量控制逻辑

flowchart TD
Start([开始]) --> Registry["REGISTRY=\n${DOCKER_REGISTRY:-git.oceanpay.cc/danial}"]
Registry --> Version["VERSION=\n${VERSION:-latest}"]
Version --> UseProxy["USE_PROXY=\n${USE_PROXY:-0}"]
UseProxy --> Build["执行docker build"]
Build --> ConditionalTag["条件标记\n(REGISTRY != localhost:5000)"]
ConditionalTag --> Push["条件推送\n(REGISTRY != localhost:5000)"]
Push --> End([完成])

**Diagram sources **

Section sources

CI/CD工作流程

sequenceDiagram
participant Drone as "Drone CI"
participant Script as "build-base-image.sh"
participant Docker as "Docker Engine"
participant Registry as "镜像仓库"
Drone->>Script : 检测到kami-gateway/目录变更
Script->>Script : 初始化环境变量
Script->>Docker : 执行docker build
Docker-->>Script : 返回构建结果
Script->>Script : 检查REGISTRY配置
alt 非本地仓库
Script->>Docker : 执行docker tag
Script->>Registry : 执行docker push
Registry-->>Script : 返回推送结果
end
Script->>Drone : 返回构建状态

**Diagram sources **

镜像标签策略

kami-gateway采用多标签策略为每个构建版本创建两个标签版本号标签和latest标签确保既有版本追溯性又有最新版本可用性。

Section sources

依赖分析

各模块的构建脚本具有相似的结构和逻辑表明项目采用了统一的构建标准。kami-gateway模块作为Go应用的代表其构建流程为其他模块提供了参考模式。

graph TB
alpine-base --> kami-gateway
kami-gateway --> kami-spider-monorepo
common["通用构建模式"] --> alpine-base
common --> kami-gateway
common --> kami-spider-monorepo

**Diagram sources **

Section sources

性能考虑

通过条件化构建和变更检测机制系统避免了不必要的镜像重建显著提升了资源利用率。基础镜像缓存机制将应用构建时间缩短至10-30秒Go模块预下载避免了重复下载多阶段构建优化了最终镜像体积。

Section sources

故障排除指南

当CI/CD流程出现问题时应首先检查环境变量配置是否正确特别是DOCKER_REGISTRY和VERSION变量。确认变更检测机制是否正常工作检查构建脚本的条件判断逻辑是否按预期执行。

Section sources

结论

kami-gateway模块的CI/CD集成方案展示了高效的自动化构建实践。通过环境变量控制、条件化构建、变更检测和多标签策略系统实现了资源高效利用和版本可追溯性的平衡。该方案可作为其他模块的参考模板并可根据需要扩展支持多平台构建和自动化安全扫描等高级功能。