nginx/.gitea/workflows/README.md
huangzhiqiang 5c7293be88
Some checks failed
Build NGINX on Ubuntu / build-nginx (push) Has been cancelled
add action for k8s deploy
2025-06-07 17:40:01 +08:00

122 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NGINX CI/CD 配置说明
本目录包含了为 NGINX 项目定制的 Git Action 工作流配置文件。
## 工作流文件说明
### 1. `build-ubuntu.yaml` - 主要构建流程
这是主要的构建和部署流水线,适用于生产环境:
- **触发条件**: 代码推送和 Pull Request
- **功能**:
- 在 Ubuntu 22.04 上编译 NGINX
- 包含完整的模块配置SSL、流处理、图像处理等
- 创建 Docker 镜像并推送到 Harbor 仓库
- 进行基本的功能测试
- 上传构建产物
### 2. `build-multi-platform.yaml` - 多平台构建
用于发布版本的完整构建流程:
- **触发条件**: 标签推送、工作流手动触发
- **功能**:
- 多 Ubuntu 版本支持20.04、22.04
- 配置验证和编译测试
- 安全漏洞扫描
- 完整的 Docker 镜像构建和发布
### 3. `build-dev.yaml` - 开发测试流程
用于日常开发的快速验证:
- **触发条件**: develop 分支和 feature 分支推送
- **功能**:
- 快速构建(最小配置)
- 代码质量检查
- 多编译器兼容性测试GCC、Clang
- 构建缓存优化
## 配置要点
### 依赖库安装
根据 NGINX 官方文档,安装了以下依赖:
- `libpcre3-dev` - 正则表达式支持
- `zlib1g-dev` - 压缩支持
- `libssl-dev` - SSL/TLS 支持
- `libxslt1-dev` - XSLT 模块
- `libgd-dev` - 图像处理模块
- `libgeoip-dev` - GeoIP 模块
### 编译配置
使用 `./auto/configure` 脚本进行配置,主要特性:
- HTTP/2 支持
- SSL/TLS 加密
- 流处理模块
- 图像过滤器
- 地理位置模块
- 负载均衡功能
### Docker 镜像
- 基于 Ubuntu 22.04
- 运行时优化(仅包含必要的运行时库)
- 健康检查配置
- 非 root 用户运行
## 环境变量配置
需要在仓库设置中配置以下 Secrets
```
HARBOR_REGISTRY # Harbor 仓库地址
HARBOR_USERNAME # Harbor 用户名
HARBOR_PASSWORD # Harbor 密码
```
## 使用说明
### 开发流程
1.`develop``feature/*` 分支上工作
2. 推送代码会触发 `build-dev.yaml`,进行快速验证
3. 创建 Pull Request 到 `main` 分支
4. 会触发完整的构建测试
### 发布流程
1. 合并到 `main` 分支后,创建版本标签
2. 推送标签会触发 `build-multi-platform.yaml`
3. 执行完整的多平台构建和安全扫描
4. 自动构建并推送 Docker 镜像
### 手动触发
可以在 Actions 页面手动触发 `build-multi-platform.yaml` 工作流。
## 构建产物
- **二进制文件**: 上传到 GitHub Actions Artifacts
- **Docker 镜像**: 推送到配置的 Harbor 仓库
- **版本标记**: 支持语义化版本标签
## 故障排除
### 常见问题
1. **依赖安装失败**: 检查 Ubuntu 版本和包名称
2. **编译错误**: 查看具体的编译器错误信息
3. **Docker 推送失败**: 检查 Harbor 凭据配置
4. **测试失败**: 检查 NGINX 配置文件语法
### 调试建议
- 查看 Actions 日志中的详细输出
- 本地使用相同的命令进行测试
- 检查依赖库版本兼容性
## 性能优化
- 使用 `make -j$(nproc)` 进行并行编译
- 配置构建缓存减少重复下载
- 分阶段构建减少单次运行时间
## 安全考虑
- 定期更新基础镜像
- 运行 Trivy 安全扫描
- 使用非 root 用户运行容器
- 及时更新依赖库版本