CNB(Cloud Native Build)自动化构建审批系统是基于 .cnb.yml 配置文件的 CI/CD 流水线,支持多环境部署和审批流程。本文档详细介绍了如何使用和配置自动化构建审批功能。
系统支持以下三种构建流程:
develop):自动构建和推送镜像master):自动标签生成tag_deploy):生产环境部署审批# .cnb.yml 基础结构
master: # 主分支配置
push:
- services:
- docker
stages:
# 构建阶段定义
develop: # 开发分支配置
push:
# 开发环境构建配置
$: # 通用配置(适用于所有标签)
tag_push: # 标签推送配置
tag_deploy: # 标签部署配置
$:
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
develop 分支推送代码# 示例推送到 develop 分支
git checkout develop
git add .
git commit -m "feat: 新功能开发"
git push origin develop
# 1. 切换到主分支
git checkout master
# 2. 创建标签
git tag v1.0.0
# 3. 推送标签
git push origin v1.0.0
标签推送后,系统自动执行:
latest 镜像审批触发:访问 CNB 管理页面
选择环境:选择 production 环境
填写参数:
name:环境名称proxy_host:代理主机tag_name:要部署的标签hostname:目标服务器username:SSH 用户名password:SSH 密码port:SSH 端口审批部署:管理员审核后执行部署
| 变量名 | 说明 | 示例 |
|---|---|---|
CNB_TOKEN_USER_NAME | CNB 用户名 | admin |
CNB_TOKEN | CNB 访问令牌 | xxxxx |
CNB_DOCKER_REGISTRY | Docker 仓库地址 | 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 |
| 变量名 | 说明 | 配置方式 |
|---|---|---|
hostname | 目标服务器地址 | 密钥仓库 |
username | SSH 用户名 | 密钥仓库 |
password | SSH 密码 | 密钥仓库 |
port | SSH 端口 | 密钥仓库 |
proxy_host | 代理主机 | 密钥仓库 |
name | 环境名称 | 手动输入 |
tag_name | 部署标签 | 手动输入 |
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
# 1. 设置标签环境变量
export TAG_NAME=v1.0.0
# 2. 拉取最新镜像
docker-compose pull
# 3. 部署到 Swarm 集群
docker stack deploy -c docker-compose.yml deploy_latest
volumes:
- ./log/:/app/log/ # 应用日志目录
- ./polaris:/app/polaris # 服务发现日志
# 解决方案
docker login -u ${CNB_TOKEN_USER_NAME} -p "${CNB_TOKEN}" ${CNB_DOCKER_REGISTRY}
# 本地构建测试
docker build -t test-image .
# 本地运行测试
docker run -p 8080:8080 test-image
# 查看服务日志
docker service logs xxx
# 查看容器日志
docker logs <container-id>
start-first 策略$:
tag_deploy.staging: # 测试环境
- name: staging
# 测试环境配置
tag_deploy.production: # 生产环境
- name: production
# 生产环境配置
如遇问题,请联系:

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