该仓库内置了一个在 CNB 的典型研发流程,可以直接 fork 走该仓库进行体验
PS1:go 的工程
PS2:如果想修改 示例代码,可以在 main.go 修改如下内容,这样在服务启动后,预览 url 中可以看到变更的内容
func main() { app := iris.New() app.Get("/", func(ctx iris.Context) { // 可以改这里的 字符串 if _, err := ctx.WriteString("Hello 0403 World!"); err != nil { fmt.Printf("写入响应失败: %v", err) return // 根据上下文决定是否终止流程 } }) app.Listen(":8080") }
fork 走仓库后,请变更如下内容
.cnb/tag_deploy.yml 文件中的如下内容
- approver: # users 的内容改成自己的用户名 users: - lizeen - xiaohuan
| 操作步骤 | 流程内容 |
|---|---|
| issue 创建示例缺陷 | 在 issue 中创建一个 缺陷示例的 issue,mark 一下 #id |
| 云原生开发写代码 | 1. 创建一个 特性分支,比如 fix/xxx 2. 点击云原生开发,可以打开云上开发空间,进行编写 3. 在云原生开发中,可以在命令行执行 go run main.go 运行示例代码 4. 在左侧的提交窗口,提交变更内容,commit msg 携带 #id 内容,比如 fix: this issue #id |
| 发起 PR,feat -> 主干 | 发起 PR,将 fix/xxx 合入主干分支 已配置 PR 的流水线检查,lint 检查+单测 |
| 合并到主干分支 | 1. 合入主干分支自动触发,包括: build 测试镜像,模拟部署 test、执行自动化测试、性能测试、安全测试 2. 测试结果上报至最新 commit 元数据(模拟数据,hard code ok) 3. issue 标签流转为已提测 |
| issue 流转为已完成 | 模拟 issue 提测,人工完成测试,issue 标签人工操作从 已提测,变更为 完成测试 |
| 仓库首页:构建-发布制品;手动发布制品 | 1. check commit 元数据中自动化测试、安全测试、性能测试的结果是否为 ok 2. 获取相对于上一个 tag 的diff 中,关联的 issue ,是否均为 完成测试 3. 通过如上检查,docker build 生产制品,并推送到仓库下的 docker 制品库 |
| 创建 tag (会自动创建 release ,在 release 中可以进行版本发布) | staging 发布流程 前置条件: 1. 仅指定用户审批 2. 点击发布审批按钮,触发指定流水线执行 -- 模拟:调起外部审批流,并将外部审批流上报至release 的元数据 发布流程: 前置条件满足后,点击部署按钮,将会触发指定流水线执行 -- 模拟:k8s 部署应用到预发布环境 生产发布流程 前置条件: 1. 仅指定用户审批 2. 必须 staging 环境部署 1min 后 -- 模拟实际生产部署时,staging 的验证等待 发布流程: 前置条件满足后,点击部署按钮,将会触发指定流水线执行 -- 模拟:k8s 部署应用到生产环境 |