# 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 用户运行容器 - 及时更新依赖库版本