logo
4
3
Login
doc(README): 更新联系方式,添加QQ群和企业微信群支持渠道

CNB 自动化构建审批使用说明文档

1. 概述

CNB(Cloud Native Build)自动化构建审批系统是基于 .cnb.yml 配置文件的 CI/CD 流水线,支持多环境部署和审批流程。本文档详细介绍了如何使用和配置自动化构建审批功能。

2. 系统架构

2.1 构建流程分类

系统支持以下三种构建流程:

  1. 开发分支构建 (develop):自动构建和推送镜像
  2. 主分支构建 (master):自动标签生成
  3. 标签部署 (tag_deploy):生产环境部署审批

2.2 部署策略

  • Docker Swarm 集群部署
  • 滚动更新:逐个替换容器实例
  • 负载均衡:3个副本,VIP模式自动负载均衡
  • 健康检查:支持多种健康检查配置

3. 配置文件说明

3.1 基础配置结构

# .cnb.yml 基础结构 master: # 主分支配置 push: - services: - docker stages: # 构建阶段定义 develop: # 开发分支配置 push: # 开发环境构建配置 $: # 通用配置(适用于所有标签) tag_push: # 标签推送配置 tag_deploy: # 标签部署配置

3.2 标签部署配置详解

$: tag_deploy.production: - name: production # 环境名称 imports: # 导入密钥仓库文件 # - https://cnb.cool/mliev/demo/keywords/-/blob/main/vm/env.yaml stages: # 部署阶段 - name: 部署环境名 script: echo $name && echo $proxy_host - name: tag script: echo $tag_name # 实际部署阶段(当前被注释) # - name: deploy_latest # image: tencentcom/ssh # settings: # host: ${hostname} # username: ${username} # password: ${password} # port: ${port} # script: # - export TAG_NAME=$tag_name # - cd /docker-compose/deploy_latest # - docker-compose pull # - docker stack deploy -c docker-compose.yml deploy_latest

4. 使用流程

4.1 开发环境构建流程

  1. 触发条件:向 develop 分支推送代码
  2. 自动执行
    • Docker 登录
    • 构建镜像(标签为分支名)
    • 推送到制品库
# 示例推送到 develop 分支 git checkout develop git add . git commit -m "feat: 新功能开发" git push origin develop

4.2 生产环境部署流程

4.2.1 创建标签

# 1. 切换到主分支 git checkout master # 2. 创建标签 git tag v1.0.0 # 3. 推送标签 git push origin v1.0.0

4.2.2 自动构建

标签推送后,系统自动执行:

  1. Docker 登录:使用 CNB 提供的认证信息
  2. 构建镜像
    • 构建标签版本镜像
    • 构建 latest 镜像
  3. 推送镜像:推送到制品库

4.2.3 部署审批

  1. 审批触发:访问 CNB 管理页面

  2. 选择环境:选择 production 环境

  3. 填写参数

    • name:环境名称
    • proxy_host:代理主机
    • tag_name:要部署的标签
    • hostname:目标服务器
    • username:SSH 用户名
    • password:SSH 密码
    • port:SSH 端口
  4. 审批部署:管理员审核后执行部署

5. 环境变量说明

5.1 系统内置变量

变量名说明示例
CNB_TOKEN_USER_NAMECNB 用户名admin
CNB_TOKENCNB 访问令牌xxxxx
CNB_DOCKER_REGISTRYDocker 仓库地址docker.cnb.cool
CNB_REPO_SLUG_LOWERCASE项目路径(小写)mliev/demo/build-pipeline
CNB_BRANCH分支或标签名v1.0.0
CNB_REPO_URL_HTTPS仓库 HTTPS 地址https://cnb.cool/mliev/demo/build-pipeline

5.2 用户自定义变量

变量名说明配置方式
hostname目标服务器地址密钥仓库
usernameSSH 用户名密钥仓库
passwordSSH 密码密钥仓库
portSSH 端口密钥仓库
proxy_host代理主机密钥仓库
name环境名称手动输入
tag_name部署标签手动输入

6. 部署配置详解

6.1 Docker Compose 配置

services: xxx: image: docker.cnb.cool/mliev/demo/build-pipeline:${TAG_NAME:-latest} deploy: replicas: 3 # 副本数量 update_config: parallelism: 1 # 并行更新数量 delay: 10s # 更新间隔 order: start-first # 更新顺序 failure_action: rollback # 失败处理 endpoint_mode: vip # 负载均衡模式 ports: - "8096:8080" # 端口映射 volumes: - ./config.yaml:/app/config.yaml - ./log/:/app/log/ - ./polaris:/app/polaris restart: always

6.2 部署命令

# 1. 设置标签环境变量 export TAG_NAME=v1.0.0 # 2. 拉取最新镜像 docker-compose pull # 3. 部署到 Swarm 集群 docker stack deploy -c docker-compose.yml deploy_latest

7. 安全配置

7.1 密钥管理

  1. 密钥仓库:使用 CNB 密钥仓库管理敏感信息
  2. 访问控制:通过 imports 引用密钥文件
  3. 权限分离:开发和生产环境使用不同的密钥

7.2 网络安全

  • 代理支持:支持通过代理服务器访问目标服务器
  • SSH 认证:使用 SSH 协议进行安全部署
  • VIP 负载均衡:内部负载均衡,提高安全性

8. 监控和日志

8.1 构建日志

  • 实时日志:CNB 平台提供实时构建日志
  • 历史记录:保留构建历史记录
  • 错误追踪:详细的错误信息和堆栈跟踪

8.2 应用日志

volumes: - ./log/:/app/log/ # 应用日志目录 - ./polaris:/app/polaris # 服务发现日志

9. 故障排除

9.1 常见问题

问题1:Docker 登录失败

# 解决方案 docker login -u ${CNB_TOKEN_USER_NAME} -p "${CNB_TOKEN}" ${CNB_DOCKER_REGISTRY}

问题2:镜像构建失败

  • 检查 Dockerfile 语法
  • 确认基础镜像可用
  • 检查网络连接

问题3:部署失败

  • 检查目标服务器连接
  • 确认 SSH 认证信息
  • 检查 Docker Swarm 集群状态

9.2 调试技巧

  1. 本地测试
# 本地构建测试 docker build -t test-image . # 本地运行测试 docker run -p 8080:8080 test-image
  1. 日志查看
# 查看服务日志 docker service logs xxx # 查看容器日志 docker logs <container-id>

10. 最佳实践

10.1 版本管理

  • 使用语义化版本号(如 v1.0.0)
  • 定期创建发布标签
  • 保持版本号的一致性

10.2 部署策略

  • 蓝绿部署:使用 start-first 策略
  • 渐进式部署:逐步增加副本数量
  • 回滚计划:配置自动回滚策略

10.3 安全考虑

  • 定期轮换密钥
  • 使用最小权限原则
  • 启用审计日志

11. 扩展配置

11.1 多环境支持

$: tag_deploy.staging: # 测试环境 - name: staging # 测试环境配置 tag_deploy.production: # 生产环境 - name: production # 生产环境配置

11.2 高级功能

  • 条件部署:基于条件触发部署
  • 并行部署:多环境并行部署
  • 自定义镜像:使用自定义部署镜像

12. 联系支持

如遇问题,请联系:


本文档版本:v1.0
最后更新:2025年07月