
All checks were successful
Build NGINX on Ubuntu / build-and-deploy (push) Successful in 2m39s
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 密码
使用说明
开发流程
- 在
develop
或feature/*
分支上工作 - 推送代码会触发
build-dev.yaml
,进行快速验证 - 创建 Pull Request 到
main
分支 - 会触发完整的构建测试
发布流程
- 合并到
main
分支后,创建版本标签 - 推送标签会触发
build-multi-platform.yaml
- 执行完整的多平台构建和安全扫描
- 自动构建并推送 Docker 镜像
手动触发
可以在 Actions 页面手动触发 build-multi-platform.yaml
工作流。
构建产物
- 二进制文件: 上传到 GitHub Actions Artifacts
- Docker 镜像: 推送到配置的 Harbor 仓库
- 版本标记: 支持语义化版本标签
故障排除
常见问题
- 依赖安装失败: 检查 Ubuntu 版本和包名称
- 编译错误: 查看具体的编译器错误信息
- Docker 推送失败: 检查 Harbor 凭据配置
- 测试失败: 检查 NGINX 配置文件语法
调试建议
- 查看 Actions 日志中的详细输出
- 本地使用相同的命令进行测试
- 检查依赖库版本兼容性
性能优化
- 使用
make -j$(nproc)
进行并行编译 - 配置构建缓存减少重复下载
- 分阶段构建减少单次运行时间
安全考虑
- 定期更新基础镜像
- 运行 Trivy 安全扫描
- 使用非 root 用户运行容器
- 及时更新依赖库版本