持续部署
持续交付与持续部署
每个团队都应该根据自己的需求做出选择。我们不应该关注形式,而应该关注结果:部署应该是无风险、按需进行的一键式操作。
- 持续交付
持续交付(CD) 是指,所有开发人员都在主干上进行小批量工作,或者在短时间存在的特性分支上工作,并且定期向主干合并,同时始终让主干保持可发布状态,并能做到在正常的工作时段里按需进行一键式发布。开发人员在引入任何回归错误时(包括缺陷、性能问题、安全问题、可用性问题等),都能快速得到反馈。一旦发现这类问题,就立即加以解决,从而保持主干始终处于可部署状态。
( 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. )
持续交付是持续集成的延伸,将集成后的代码部署到类生产环境,确保可以以可持续的方式快速向客户发布新的更改。如果代码没有问题,可以继续手动部署到生产环境中。
- 持续部署
持续部署是指,在持续交付的基础上,由开发人员或运维人员自助式的定期向生产环境部署优质的构建版本,这通常意味着每天每人至少做一次生产环境部署,甚至每当开发人员提交代码变更时,就触发一次自动化部署。
持续交付是持续部署的前提,就像持续集成是持续交付的前提条件一样。持续部署则是在持续交付的基础上,把部署到生产环境的过程自动化。
持续部署更适用于交付线上的Web服务,而持续交付适用于几乎任何对质量、交付速度和结果的可预测性有要求的低风险部署和发布场景,包括嵌入式系统、商用现货产品和移动应用。这意味着除了自动化测试之外,还可以自动完成发布过程,并且可以通过单击按钮随时部署应用程序。
从理论上讲,通过持续交付,可以决定每日,每周,每两周发布一次,或者满足您业务需求的任何频率。
但是,如果真的想获得持续交付的好处:应该尽早部署到生产环境,以确保可以小批次发布,在发生问题时可以轻松排除故障。
自动化部署流水线
随着开发模式的日益成熟,软件开发过程中的每个环节已经越来越标准化了,但是每一部分都相对独立,需要连接成一个整体。
如果我们能将每一个环节(构建、发布、测试、部署)有效的串联起来形成一套完成的持续交付流水线,才能真能提高软件的发布效率与质量,持续不断的创造业务价值。
CD at CodeArts
持续部署是CodeArts及其他所有DevOps研发工具的重要功能。在CodeArts中,持续部署覆盖两大功能模块——部署和流水线。在这一过程中,充分体现了DevOps工具链的“自动化”优势。
- 部署:一键自动化快速部署应用到物理机、虚机、容器
为了可以更快的、更稳定的持续地交付软件,我们需要运维提供自助、自动化部署服务的能力。
- 部署应用到物理机、虚机、容器
支持将应用部署到物理机、虚拟机、容器,即使是用户私有的物理机、虚拟机、容器集群,只要能连通就能进行部署。主机部署还支持以代理机的方式进行部署,容器可支持部署到华为云CCE以及客户的私有K8S的集群。
- 支持多种技术栈应用的部署
支持tomcat、springboot、nodejs等多种技术栈应用的部署,提供通用模板比如springboot、tomcat等方便用户创建部署任务,并支持用户自定义模板,提供25+原子步骤组装成部署任务。
- 支持与流水线集成打通部署流水线
在流水线能关联部署任务,并可以通过流水线关联构建、代码检查、测试等服务,实现端到端的Devops流程。
接下来以用户使用的云服务器资源分类为区别进行讲解。
- ECS部署
弹性云主机提供了自助便捷的服务器获取方式,特别适合自动化部署场景。
本节讲述如何通过CodeArts在弹性云服务器ECS上部署应用。
- 添加授信主机
自动化部署需要对弹性云主机进行操作,就需要通过主机组的方式管理主机连接密钥信息。
- 单击菜单“主机组管理”页面。 ,进入
- 单击右上角“新建”按钮,进入“新建主机组”页面。输入主机组信息,单击“保存”按钮完成主机组的新建。
- 单击“添加主机”按钮,进入“添加主机”页面。填写主机信息后,单击“添加”按钮完成主机添加。
- 新建部署任务
单击菜单“部署”页面。
,进入单击新建任务按钮,填写任务名称等基本信息、选择部署模板,单击“确定”按钮。
- 部署模板
CodeArts支持多种部署模板,针对不同的项目可以通过不同的部署模板将项目部署至目标服务器中。目前已预置多种种系统模板:SpringBoot应用部署、Tomcat应用部署、Docker应用部署(Linux)、容器应用部署(CCE/CCI)。更多详情请参阅部署模板。
除了目前已预置好的系统模板外,需要使用其他部署方式进行部署的任务,可由自定义部署步骤实现部署。
- 部署步骤
进入部署编辑界面,可以添加或删除部署步骤,也可对每一部署步骤进行编辑。
- 自定义模板
当部署步骤编辑妥当后,可由界面内的“另存为自定义模板”将此模板保存为自定义模板,之后即可在其他部署任务中直接使用此模板。
- 部署模板
- 参数设置
如果任务中涉及到需要使用参数的话,可以在“参数设置”中进行参数的定义。
- 执行部署任务
在任务详情页单击“执行”按钮,即可开始部署。任务执行完成后,系统会显示部署结果(成功或失败)。
- 添加授信主机
- CCE部署
云容器引擎(Cloud Container Engine)提供高可靠高性能的企业级容器应用管理服务,支持Kubernetes社区原生应用和工具,简化云上自动化容器运行环境搭建
本节讲述如何通过CodeArts在云容器引擎CCE上部署应用。
- 登录云容器引擎官网,单击“立即使用”按钮,进入产品页面。
- 单击“购买Kubernetes集群”按钮,根据需要填写信息,完成购买。
- 返回CodeArts部署服务页面,新建部署任务时,选择“容器应用部署(CCE/CCI)”,并填写相关信息,完成任务创建。
想要了解详细的部署操作方法,请见部署用户指南。
- 部署应用到物理机、虚机、容器
- 流水线:打造快速、可靠、可重复的流水线,助力用户持续交付高质量应用,提升产品发布信心
软件交付流水线是指软件变更从提交到版本控制库,到发布给用户的整个过程。软件的每次变更都会经历一个复杂的流程才能发布,这个流程包括构建软件、一系列不同阶段的测试与部署等,需要多团队协作完成。交付流水线对交付流程进行了建模,并支持查看、控制整个交付流程。
部署流水线的目标
- 能够基于版本控制系统中的信息重复搭建整套生产环境。
- 保证价值流的每个阶段都使用类生产环境。
- 清晰定义正确环境。
- 自动化搭建过程。
- 保障环境一致性。
- 按需搭建环境。
- 开发人员按需搭建开发环境、测试环境和类生产环境,把类生产环境运行和测试代码作为日常工作的一部分,及早且持续的获取质量反馈。
- 任何人在几分钟内搭建好类生产环境,而不需要提交申请单,更不需要等待几周。
- 质量是内建的,在过程中而不是事后保证质量。
- 所有需求都被规范的签入自动化的环境搭建过程,无需文档、无需记忆。
- 信息共享:在开发和运维之间。
以下将使用华为软开云内置的CI/CD能力,持续交付价值。
- 单击菜单“流水线”页面。 ,进入
- 单击“新建流水线”按钮,根据系统提示设置流水线基本信息。
- 编辑流水线
- 添加阶段:通过单击各阶段间的“+”按钮完成新增阶段,也可以删除某一指定阶段。每个阶段都可以由用户自行修改名称、执行方式等相应的阶段配置。
- 添加任务:在各个阶段中,可以添加相应的子任务。流水线在执行的时候,实际正是执行这条流水线中所有的子任务。
- 设置质量门禁:对于执行过程中质量不达标的流水线,可以中止执行。
- 执行流水线
想要了解详细的流水线操作方法,请见流水线用户指南。