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

2020-09-24 10:49:31 浏览数 (1)

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

管道通常由一组工具组成,这些工具通常分为以下几类:

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

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

部署管道

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

典型的部署流程的阶段如下:

部署管道

版本控制

通常,从事代码工作的软件开发人员会将所做的更改提交到源代码管理中(例如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管道,并且具有免费入门的额外好处!

0 人点赞