chore(ci): 注释所有 drone.yml 中的触发分支配置

- 更改服务器主机地址和端口号
- 注释掉 main、master、develop、production 分支的触发器配置
- 取消自动触发事件的推送限制
- 保持 pipeline 配置完整性但禁用触发条件
- 方便后续手动触发或调整 CI 流程设置

chore(ci): 更新服务器地址和pipeline触发器配置,调整基础镜像代理设置

- 更新spider-base-image和alpine-base-image的服务器地址为38.55.194.49:3422
- 为main、master、develop和production分支的pipeline添加触发器注释,禁用自动执行
- 修改.dron.yml文件,恢复pipeline触发器的配置启用推送事件触发
- 更新kami-gateway和相关模块构建文档,反映最新的服务器地址和CI/CD配置变更
- 注释Dockerfile.base中的GOPROXY环境变量,将中国代理从goproxy.cn替换为goproxy.io
- 移除Alpine Linux阿里云镜像源配置,更新文档中相关代理和构建指引说明
- 增加依赖版本说明,包括新增goquery、stomp、zap等依赖版本精确声明
- 优化故障排查指南,提醒检查新的服务器地址和代理配置影响

chore(ci): 更新Docker注册表地址为新的域名

- 将Spider镜像构建中Docker注册表地址由git.oceanpay.cc改为git.domainpay.top
- 将Gateway镜像构建中Docker注册表地址由git.oceanpay.cc改为git.domainpay.top
- 将Alpine基础镜像构建中Docker注册表地址由git.oceanpay.cc改为git.domainpay.top
- 修改对应的docker login与logout命令以匹配新注册表地址
This commit is contained in:
danial
2025-12-17 15:08:41 +08:00
parent ced2fbb4fc
commit 1a0a86bfeb
8 changed files with 1773 additions and 147 deletions

View File

@@ -23,6 +23,9 @@ kami-gateway模块通过`go.mod`文件明确声明了核心依赖,确保项目
- **OpenTelemetry监控**: 包含`go.opentelemetry.io/otel`系列包,实现分布式追踪、指标和日志采集
- **数据库驱动**: `github.com/go-sql-driver/mysql``github.com/redis/go-redis/v9`
- **HTTP客户端**: `github.com/go-resty/resty/v2`,简化外部服务调用
- **HTML解析**: `github.com/PuerkitoBio/goquery v1.11.0`,用于网页内容抓取和解析
- **消息队列**: `github.com/go-stomp/stomp/v3 v3.1.5`用于与STOMP协议的消息代理进行通信
- **日志框架**: `go.uber.org/zap v1.27.1`,提供高性能、结构化的日志记录
这些依赖通过`require`指令直接声明,版本号精确到补丁级别,确保开发、测试和生产环境的一致性。
@@ -33,7 +36,8 @@ kami-gateway模块通过`go.mod`文件明确声明了核心依赖,确保项目
`go.mod`文件中通过`require`块标记为`// indirect`的依赖项是间接依赖。这些依赖并非由项目直接导入,而是作为直接依赖的依赖被引入。例如:
- `golang.org/x/crypto``golang.org/x/net`被OpenTelemetry等库依赖
- `golang.org/x/crypto v0.45.0``golang.org/x/net v0.47.0`被OpenTelemetry等库依赖
- `golang.org/x/sys v0.38.0``golang.org/x/text v0.31.0`作为Go标准库的补充被多个底层库使用
- `github.com/cespare/xxhash/v2`:被`sonic`等高性能库使用
- `google.golang.org/grpc`被OTLPOpenTelemetry Protocol导出器依赖
@@ -76,7 +80,7 @@ RUN go mod download && go mod verify
为维护项目健康,建议遵循以下实践:
1. **定期更新**: 使用`go get -u ./...``go get -u=patch ./...`定期更新依赖。更新后,`go.mod``go.sum`会自动更新。
1. **定期更新**: 使用`go get -u ./...``go get -u=patch ./...`定期更新依赖。更新后,`go.mod``go.sum`会自动更新。本次更新涉及`github.com/PuerkitoBio/goquery``github.com/go-resty/resty/v2``github.com/go-stomp/stomp/v3``github.com/redis/go-redis/v9``go.uber.org/zap`等包,以及`golang.org/x/crypto``golang.org/x/net``golang.org/x/sys``golang.org/x/text`等低级依赖。
2. **安全审计**: 使用`govulncheck`工具Go安全扫描工具扫描项目识别已知的漏洞。例如`govulncheck ./...`
3. **审查变更**: 在更新依赖(尤其是主版本号变更)后,务必进行充分的测试,因为新版本可能包含破坏性变更。
4. **最小化依赖**: 定期审查`go.mod`,移除不再使用的依赖,以减小攻击面和构建复杂性。

View File

@@ -1,13 +1,21 @@
# CI/CD集成与自动化
<cite>
**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)
- [.drone.yml](file://.drone.yml)
</cite>
## 更新摘要
**已做更改**
- 更新了服务器地址信息将spider-base-image和alpine-base-image的服务器地址迁移至38.55.194.49:3422
- 为所有主要分支main, master, develop, production的pipeline触发器添加注释以禁用自动执行
- 更新了架构概述和CI/CD工作流程图反映最新的服务器配置
- 更新了依赖分析图,包含最新的服务器信息
## 目录
1. [简介](#简介)
2. [项目结构](#项目结构)
@@ -20,7 +28,7 @@
9. [结论](#结论)
## 简介
本文档全面介绍kami-gateway模块与Drone CI等持续集成系统的集成方案。文档解析了构建脚本中的环境变量控制逻辑说明了如何实现条件化构建与镜像推送阐述了变更检测机制如何避免不必要的镜像重建展示了在CI流水线中如何安全地注入凭证并执行构建任务并讨论了镜像标签策略的最佳实践。
本文档全面介绍kami-gateway模块与Drone CI等持续集成系统的集成方案。文档解析了构建脚本中的环境变量控制逻辑说明了如何实现条件化构建与镜像推送阐述了变更检测机制如何避免不必要的镜像重建展示了在CI流水线中如何安全地注入凭证并执行构建任务并讨论了镜像标签策略的最佳实践。本文档已根据最新的配置更新包含服务器地址迁移至38.55.194.49:3422以及为所有主要分支main, master, develop, production的pipeline触发器添加注释以禁用自动执行。
## 项目结构
项目包含多个模块的构建脚本每个模块都有独立的构建配置。kami-gateway模块作为重点分析对象其构建流程代表了整个项目的CI/CD实践标准。
@@ -36,7 +44,7 @@ kami-gateway模块的核心构建组件是`build-base-image.sh`脚本,该脚
- [build-base-image.sh](file://kami-gateway/build-base-image.sh#L1-L51)
## 架构概述
kami-gateway的CI/CD架构基于Drone CI系统通过变更检测机制触发条件化构建流程。构建脚本与CI系统协同工作实现了高效的镜像构建和推送流程。
kami-gateway的CI/CD架构基于Drone CI系统通过变更检测机制触发条件化构建流程。构建脚本与CI系统协同工作实现了高效的镜像构建和推送流程。根据最新配置spider-base-image和alpine-base-image的服务器地址已迁移至38.55.194.49:3422而gateway-base-image仍使用38.38.251.113:34156。
```mermaid
graph TB
@@ -57,6 +65,7 @@ Build --> Push
**Diagram sources **
- [build-base-image.sh](file://kami-gateway/build-base-image.sh#L1-L51)
- [README.md](file://kami-gateway/README.md#L53-L60)
- [.drone.yml](file://.drone.yml#L1-L190)
## 详细组件分析
@@ -113,7 +122,7 @@ kami-gateway采用多标签策略为每个构建版本创建两个标签
- [build-base-image.sh](file://kami-gateway/build-base-image.sh#L21-L23)
## 依赖分析
各模块的构建脚本具有相似的结构和逻辑表明项目采用了统一的构建标准。kami-gateway模块作为Go应用的代表其构建流程为其他模块提供了参考模式。
各模块的构建脚本具有相似的结构和逻辑表明项目采用了统一的构建标准。kami-gateway模块作为Go应用的代表其构建流程为其他模块提供了参考模式。根据最新配置spider-base-image和alpine-base-image现在共享相同的服务器地址38.55.194.49:3422。
```mermaid
graph TB
@@ -122,12 +131,16 @@ kami-gateway --> kami-spider-monorepo
common["通用构建模式"] --> alpine-base
common --> kami-gateway
common --> kami-spider-monorepo
server1["服务器: 38.55.194.49:3422"] --> spider-base-image
server1 --> alpine-base-image
server2["服务器: 38.38.251.113:34156"] --> gateway-base-image
```
**Diagram sources **
- [build-base-image.sh](file://alpine-base/build-base-image.sh#L1-L51)
- [build-base-image.sh](file://kami-gateway/build-base-image.sh#L1-L51)
- [build-base-image.sh](file://kami-spider-monorepo/build-base-image.sh#L1-L54)
- [.drone.yml](file://.drone.yml#L1-L190)
**Section sources**
- [build-base-image.sh](file://alpine-base/build-base-image.sh#L1-L51)
@@ -141,10 +154,10 @@ common --> kami-spider-monorepo
- [README.md](file://kami-gateway/README.md#L47-L52)
## 故障排除指南
当CI/CD流程出现问题时应首先检查环境变量配置是否正确特别是DOCKER_REGISTRY和VERSION变量。确认变更检测机制是否正常工作检查构建脚本的条件判断逻辑是否按预期执行。
当CI/CD流程出现问题时应首先检查环境变量配置是否正确特别是DOCKER_REGISTRY和VERSION变量。确认变更检测机制是否正常工作检查构建脚本的条件判断逻辑是否按预期执行。对于服务器连接问题请验证服务器地址38.55.194.49:3422和38.38.251.113:34156的可达性。
**Section sources**
- [build-base-image.sh](file://kami-gateway/build-base-image.sh#L27-L39)
## 结论
kami-gateway模块的CI/CD集成方案展示了高效的自动化构建实践。通过环境变量控制、条件化构建、变更检测和多标签策略系统实现了资源高效利用和版本可追溯性的平衡。该方案可作为其他模块的参考模板并可根据需要扩展支持多平台构建和自动化安全扫描等高级功能。
kami-gateway模块的CI/CD集成方案展示了高效的自动化构建实践。通过环境变量控制、条件化构建、变更检测和多标签策略系统实现了资源高效利用和版本可追溯性的平衡。该方案可作为其他模块的参考模板并可根据需要扩展支持多平台构建和自动化安全扫描等高级功能。根据最新更新服务器地址已迁移至38.55.194.49:3422且所有主要分支main, master, develop, production的pipeline触发器已添加注释以禁用自动执行确保了CI/CD流程的稳定性和可控性。

View File

@@ -1,7 +1,7 @@
# 基础镜像构建
<cite>
**Referenced Files in This Document**
**本文档引用文件**
- [Dockerfile.base](file://kami-gateway/Dockerfile.base)
- [build-base-image.sh](file://kami-gateway/build-base-image.sh)
- [go.mod](file://kami-gateway/go.mod)
@@ -10,6 +10,13 @@
- [kami-gateway/README.md](file://kami-gateway/README.md)
</cite>
## 更新摘要
**已做更改**
- 更新了 `Dockerfile.base` 中的 `GOPROXY` 环境变量配置,从 `https://goproxy.cn` 变更为 `https://goproxy.io` 并已被注释
- 移除了 Alpine Linux 阿里云镜像源的配置
- 相应更新了文档中所有涉及环境变量和镜像源配置的说明
- 修正了故障排除指南中的代理配置建议
## 目录
1. [简介](#简介)
2. [项目结构](#项目结构)
@@ -22,7 +29,7 @@
9. [结论](#结论)
## 简介
本文档详细说明了 `kami-gateway` 模块中 `Dockerfile.base` 的构建逻辑,重点描述如何基于 `alpine-base` 创建轻量级 Go 1.25 编译环境。文档涵盖了多阶段构建策略、goproxy.cn 代理配置机制、动态镜像标签生成与私有仓库推送等关键技术点,为开发者提供完整的构建指导和最佳实践。
本文档详细说明了 `kami-gateway` 模块中 `Dockerfile.base` 的构建逻辑,重点描述如何基于 `alpine-base` 创建轻量级 Go 1.25 编译环境。文档涵盖了多阶段构建策略、GOPROXY 环境变量配置变更、动态镜像标签生成与私有仓库推送等关键技术点,为开发者提供完整的构建指导和最佳实践。
## 项目结构
项目结构清晰地组织了不同模块的基础镜像构建文件,包括 `alpine-base``kami-gateway``kami-spider-monorepo` 三个主要目录,每个目录包含相应的构建脚本和配置文件。
@@ -46,18 +53,18 @@ D --> D3[uv.lock]
D --> D4[README.md]
```
**Diagram sources**
**文档来源**
- [alpine-base/README.md](file://alpine-base/README.md)
- [kami-gateway/README.md](file://kami-gateway/README.md)
**Section sources**
**章节来源**
- [alpine-base/README.md](file://alpine-base/README.md#L1-L70)
- [kami-gateway/README.md](file://kami-gateway/README.md#L1-L60)
## 核心组件
`kami-gateway` 模块的核心组件包括 `Dockerfile.base``build-base-image.sh` 脚本,它们共同实现了轻量级 Go 编译环境的构建和部署。
**Section sources**
**章节来源**
- [Dockerfile.base](file://kami-gateway/Dockerfile.base#L1-L59)
- [build-base-image.sh](file://kami-gateway/build-base-image.sh#L1-L51)
@@ -72,7 +79,7 @@ A --> D[中国镜像源]
A --> E[非 root 用户]
B --> F[Go 模块预下载]
C --> G[轻量级容器]
D --> H[goproxy.cn 代理]
D --> H[goproxy.io 代理]
E --> I[appuser 用户]
F --> J[快速构建]
G --> K[小体积镜像]
@@ -80,7 +87,7 @@ H --> L[加速依赖下载]
I --> M[安全运行]
```
**Diagram sources**
**图表来源**
- [Dockerfile.base](file://kami-gateway/Dockerfile.base#L4-L59)
- [build-base-image.sh](file://kami-gateway/build-base-image.sh#L1-L51)
@@ -107,10 +114,10 @@ DownloadDeps --> LabelImage["标记镜像信息"]
LabelImage --> End([基础镜像构建完成])
```
**Diagram sources**
**图表来源**
- [Dockerfile.base](file://kami-gateway/Dockerfile.base#L4-L59)
**Section sources**
**章节来源**
- [Dockerfile.base](file://kami-gateway/Dockerfile.base#L1-L59)
#### 环境变量配置
@@ -120,12 +127,12 @@ LabelImage --> End([基础镜像构建完成])
|---------|-----|------|
| TZ | Asia/Shanghai | 设置时区为上海 |
| GO111MODULE | on | 启用 Go 模块 |
| GOPROXY | https://goproxy.cn,direct | 配置中国代理 |
| GOPROXY | # https://goproxy.io,direct | 已注释,原为中国代理 |
| CGO_ENABLED | 0 | 禁用 CGO |
| GOOS | linux | 目标操作系统 |
| GOARCH | amd64 | 目标架构 |
**Section sources**
**章节来源**
- [Dockerfile.base](file://kami-gateway/Dockerfile.base#L7-L12)
### build-base-image.sh 脚本分析
@@ -134,25 +141,25 @@ LabelImage --> End([基础镜像构建完成])
#### 动态镜像标签生成
```mermaid
sequenceDiagram
participant User as 用户
participant Script as build-base-image.sh
participant 用户 as 用户
participant 脚本 as build-base-image.sh
participant Docker as Docker Engine
User->>Script : 执行脚本
Script->>Script : 读取 DOCKER_REGISTRY 和 VERSION 环境变量
Script->>Script : 设置镜像名称和版本
Script->>Docker : docker build --tag ...
Docker-->>Script : 返回构建结果
Script->>Script : 判断是否需要推送
Script->>Docker : docker tag ...
Script->>Docker : docker push ...
Docker-->>Script : 返回推送结果
Script->>User : 显示构建完成信息和镜像大小
用户->>脚本 : 执行脚本
脚本->>脚本 : 读取 DOCKER_REGISTRY 和 VERSION 环境变量
脚本->>脚本 : 设置镜像名称和版本
脚本->>Docker : docker build --tag ...
Docker-->>脚本 : 返回构建结果
脚本->>脚本 : 判断是否需要推送
脚本->>Docker : docker tag ...
脚本->>Docker : docker push ...
Docker-->>脚本 : 返回推送结果
脚本->>用户 : 显示构建完成信息和镜像大小
```
**Diagram sources**
**图表来源**
- [build-base-image.sh](file://kami-gateway/build-base-image.sh#L1-L51)
**Section sources**
**章节来源**
- [build-base-image.sh](file://kami-gateway/build-base-image.sh#L1-L51)
#### 构建流程说明
@@ -163,7 +170,7 @@ Script->>User : 显示构建完成信息和镜像大小
5. **推送注册表**:如果指定了非本地注册表,则推送镜像
6. **结果展示**:显示构建完成信息和镜像大小
**Section sources**
**章节来源**
- [build-base-image.sh](file://kami-gateway/build-base-image.sh#L1-L51)
## 依赖分析
@@ -199,12 +206,12 @@ DOCKERFILE_BASE ||--o{ BUILD_SCRIPT : "构建"
BUILD_SCRIPT }|--|| DOCKERFILE_BASE : "使用"
```
**Diagram sources**
**图表来源**
- [Dockerfile.base](file://kami-gateway/Dockerfile.base#L1-L59)
- [go.mod](file://kami-gateway/go.mod#L1-L82)
- [build-base-image.sh](file://kami-gateway/build-base-image.sh#L1-L51)
**Section sources**
**章节来源**
- [go.mod](file://kami-gateway/go.mod#L1-L82)
## 性能考虑
@@ -212,10 +219,10 @@ BUILD_SCRIPT }|--|| DOCKERFILE_BASE : "使用"
1. **构建时间优化**:通过预下载 Go 依赖包,应用构建时间缩短至 10-30 秒
2. **镜像体积优化**:基于 Alpine Linux最终镜像体积小
3. **网络性能优化**:使用中国镜像源和 goproxy.cn 代理,显著提升依赖下载速度
3. **网络性能优化**:使用中国镜像源和 GOPROXY 代理,显著提升依赖下载速度
4. **缓存利用**:基础镜像缓存,避免重复构建
**Section sources**
**章节来源**
- [kami-gateway/README.md](file://kami-gateway/README.md#L47-L52)
## 故障排除指南
@@ -223,13 +230,13 @@ BUILD_SCRIPT }|--|| DOCKERFILE_BASE : "使用"
| 问题现象 | 可能原因 | 解决方案 |
|--------|--------|--------|
| 依赖下载缓慢 | 未使用中国镜像源 | 确认 `GOPROXY` 设置为 `https://goproxy.cn,direct` |
| 依赖下载缓慢 | 未使用中国镜像源 | 确认 `GOPROXY` 设置为 `https://goproxy.io,direct` |
| 构建失败 | 网络连接问题 | 检查网络连接,尝试使用代理 |
| 镜像推送失败 | 注册表认证问题 | 确认 Docker 已登录目标注册表 |
| 证书验证失败 | 自定义证书未正确安装 | 检查证书下载和更新命令 |
| 权限错误 | 未正确切换用户 | 确认 `USER appuser` 命令已执行 |
**Section sources**
**章节来源**
- [Dockerfile.base](file://kami-gateway/Dockerfile.base#L33-L34)
- [build-base-image.sh](file://kami-gateway/build-base-image.sh#L35-L39)
@@ -240,7 +247,7 @@ BUILD_SCRIPT }|--|| DOCKERFILE_BASE : "使用"
4. **验证镜像**:使用 `docker images` 查看镜像信息
5. **测试运行**:创建测试容器验证基础环境
**Section sources**
**章节来源**
- [build-base-image.sh](file://kami-gateway/build-base-image.sh#L1-L51)
## 结论

File diff suppressed because one or more lines are too long