想搞懂持续交付理论和实践,你只差这三个问题

云原生是当下IT圈非常热门的一个词 , 其目的是为了各组织在公有云、私有云和混合云等新型动态环境中 , 构建和运行可弹性扩展的应用 。云原生包含很多技术 , 比如容器、微服务、DevOps、持续交付等 , 今天 , 我们来了解下什么是“持续交付”及“持续交付”的实践 。

想搞懂持续交付理论和实践,你只差这三个问题

文章插图
 
什么是持续交付持续交付是指 , 所有开发人员都在主干上进行小批量工作 , 或者在短时间存在的特性分支上工作且定期向主干合并 , 同时始终让主干保持可发布状态 , 保证代码可以按需进行一键式发布 。开发人员在引入任何回归错误时(包括缺陷、性能问题、安全问题、可用性问题等) , 都能快速得到反馈 。一旦发现这类问题 , 就立即加以解决 , 从而保持主干始终处于可部署状态 。
( Wikipedia: Continuous delivery (CD) is a software engineering Approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time. )
持续交付是持续集成的延伸 , 将集成后的代码部署到类生产环境 , 确保可以以可持续的方式快速向客户发布新的更改 。如果代码没有问题 , 可以继续手动部署到生产环境中 。
持续交付流水线随着开发模式的日益成熟 , 软件开发过程中的每个环节已经越来越标准化了 , 但是这些环节都相对独立 , 需要一个东西将他们连接成一个整体 。
如果我们能将这些环节——构建、发布、测试、部署有效的串联起来 , 形成一套完成的持续交付流水线 , 就能提高软件的发布效率与质量 , 持续不断的创造业务价值 。
持续交付流水线工作流程大致如下:
想搞懂持续交付理论和实践,你只差这三个问题

文章插图
 
  1. 开发人员将代码提交至代码仓库;
  2. 编译构建服务器获取到代码仓库文件变更信息 , 从代码仓库拉取代码 , 进行编译构建 , 生成二进制软件包 , 并将生成的软件包保存到制品库 。构建过程中 , 每一步成功与否 , 都需将结果反馈给对应的开发人员 。
  3. 构建完成后 , 将软件包按需部署到测试环境 , 进行测试 , 同时测试结果反馈给开发人员 , 
  4. 测试完成 , 由业务侧决定是否将软件包发布到生产环境 , 如果需要发布 , 则通过人工将软件包发布到生产环境 。
当然 , 流程并非固定的 , 可以根据具体的业务需要 , 穿插其他流程 , 比如静态代码检查 , 性能测试等 。
为什么要做持续交付持续交付适用于几乎任何对质量、交付速度和结果的可预测性有要求的低风险部署和发布场景 , 包括嵌入式系统、web应用、移动应用等 。开发者通过持续交付可以自动完成发布过程 , 并且可以通过单击按钮随时部署应用程序 。
理论上讲 , 持续交付可以满足每日一次、每周一次等固定发布频率 , 或者满足业务需求的任何频率 , 但是 , 如果真的想获得持续交付的好处 , 应尽早将应用部署到生产环境 , 以确保可以小批次发布 , 并且发现问题后及时排除故障 。
实践:通过华为云DevCloud实现持续交付代码提交
华为云DevCould代码托管CodeHub是一个线上代码仓库 , 为开发者提供基于Git的在线代码托管服务 , 包括代码克隆/提交/推送/比较/合并/Code Review等功能 。
【想搞懂持续交付理论和实践,你只差这三个问题】开发人员可将代码提交至CodeHub 。
想搞懂持续交付理论和实践,你只差这三个问题

文章插图
 
编译构建
在“编译构建”服务中 , 用户可根据自己的编程语言 , 编程环境 , 自主配置所需的构建步骤 , 并对指定的代码仓库进行编译构建 。
想搞懂持续交付理论和实践,你只差这三个问题

文章插图
 
当然华为云DevCloud的编译构建功能支持持续集成:提交代码触发执行编译构建 。
想搞懂持续交付理论和实践,你只差这三个问题


推荐阅读