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:
@@ -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`:被OTLP(OpenTelemetry 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`,移除不再使用的依赖,以减小攻击面和构建复杂性。
|
||||
|
||||
@@ -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流程的稳定性和可控性。
|
||||
@@ -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
Reference in New Issue
Block a user