软件工程中的部署管道(CI/CD)

软件工程中的部署管道(CI/CD)
软件工程团队中的管道是一组自动化的流程,使开发人员和DevOps专业人员可以可靠,高效地编译,构建并将代码部署到生产计算平台。没有硬性规定能够说明管道须要什么样的内容以及必须使用的工具,可是管道最多见的组件是:构建自动化/持续集成,测试自动化和部署自动化。git

管道一般由一组工具组成,这些工具一般分为如下几类:github

  • 源代码控制
  • 构建工具
  • 容器化
  • 配置管理
  • 监控方式

软件交付管道的主要目标是自动化,在管道的任何步骤之中或之间都无需手工步骤或进行任何更改。手动执行这些无聊且重复的任务时,确实会发生人为错误,而且最终会因部署不足而影响可交付成果的能力以及潜在的SLA。服务器

部署管道

部署管道是从版本控制中获取代码并以自动化方式将其提供给应用程序用户的过程。当一组开发人员从事项目或功能时,他们须要可靠且有效的方式来构建,测试和部署其工做。从历史上看,这将是一个手动过程,涉及不少沟通和不少人为错误。架构

典型的部署流程的阶段以下:ide

软件工程中的部署管道(CI/CD)

版本控制

一般,从事代码工做的软件开发人员会将所作的更改提交到源代码管理中(例如github)。提交源代码管理后,将启动部署管道的第一阶段,该阶段将触发代码编译,单元测试,代码分析和安装程序建立。若是全部这些步骤都成功完成,则可执行文件将被组装成二进制文件,并存储到工件存储库中以备后用。工具

验收测试

验收测试是对编译/构建的代码运行一系列测试,以针对企业设置的预约义验收标准进行测试的过程。单元测试

独立部署

独立部署是将通过编译和测试的工件部署到开发环境的过程。开发环境应该(理想状况下)是生产环境的副本,或者在最坏的状况下很是类似。这使软件能够在基础架构等生产环境中进行功能测试,以准备进行任何进一步的自动化或手动测试。测试

生产部署

此过程一般由Operations或DevOps团队处理。这应该是与独立部署很是类似的过程,而且应该将代码实时交付给生产服务器。一般,此过程将涉及Blue/Green部署或Canary发布,以在出现不可预见的问题时容许零停机时间部署和轻松的版本回滚。在没有零停机时间部署能力的状况下,一般会与企业协商发布窗口。版本控制

持续集成和持续交付管道

持续集成(CI)是一种实践,开发人员天天屡次将其代码检入版本控制的存储库中。这些签入会触发自动构建管道,从而能够快速,轻松地定位错误检测。调试

CI的主要优势是:

  • 较小的更改更易于集成到较大的代码库中。
  • 其余团队成员更容易看到您所作的工做
  • 尽早发现较大工做中的错误,使其更易于修复,从而减小调试工做
  • 一致的代码编译/构建测试
  • 较少的集成问题,可快速交付代码

持续交付(CD)是使开发人员和运营工程师可以可靠,快速且可持续地将错误修复,功能和配置更改交付到生产中的过程。连续交付提供了例行执行的代码交付管道的优点,能够放心地按需执行这些代码。

CD的优势是:

  • 较低风险发布–蓝色/绿色部署和Canary发布容许零停机部署,用户没法检测到,而且相对轻松地回滚到先前版本。
  • 更快的错误修复和功能交付–使用CI&CD,当完成功能或错误修复并经过了验收和集成测试后,CD和CD管道能够将其快速交付生产。
  • 节省成本–持续交付使团队能够小批量处理功能和错误修复,这意味着能够更快地收到用户反馈。这样就能够进行更改,从而减小了项目的总时间和成本。

蓝色/绿色部署

利用蓝/绿部署过程,能够经过在生产环境中建立一个命名为“蓝”和“绿”的镜像副原本减小风险和停机时间。在任何给定时间,只有一种环境处于活动状态,以提供实时生产流量。在部署期间,将软件部署到非实时环境中-意味着生产流量在此过程当中不受影响。针对当前非活动环境运行测试,一旦全部测试都知足预约义的标准,则流量将切换到非活动环境以使其处于活动状态。在下一个部署中将重复此过程,而原始实时环境如今将变为非实时环境。

金丝雀部署

与Blue / Green部署不一样,Canary部署不依赖重复的环境来并行运行。Canary部署将发布到特定数量或百分比的用户/服务器,以便继续在全部用户/服务器上发布以前进行实时生产测试。金丝雀发布的主要好处是可以及早发现故障并回滚更改,从而在发生异常和故障时限制受影响的用户/服务的数量。

总之,CI是使软件开发团队可以签入并验证其代码的质量和能力的自动化过程。CD使开发和运营团队可以可靠,高效地以自动化方式向最终用户交付新功能和错误修复。

您可使用许多不一样的工具来构建如下概述的CI / CD管道,全部这些工具均可以用于构建可靠且健壮的CI/CD管道,而且具备免费入门的额外好处!

Jenkins/GitLabCI/Spinnaker实践教程 https://edu.51cto.com/sd/8311a

相关文章
相关标签/搜索