自动化流水线在CI/CD(持续集成/持续交付或持续部署)的实践中发挥着核心作用。本文将对什么是CI/CD流水线、如何构建CI/CD流水线进行讨论。

*持续集成:Continuous Integration

*持续交付:Continuous Delivery

*持续部署:Continuous Deployment

01.什么是CI/CD流水线?

CI/CD通过频繁对更新的代码进行检查与严格测试并及时处理反馈,从而在保证软件质量的前提下缩短交付所需时间。一般来说,可以通过不同的工具实现分阶段的CI/CD,从而实现整体的工作流,但该流程极易被不可避免的人工干预打断。因此,建立CI/CD流水线是很有必要的。

CI/CD流水线是指将开发直至部署的整体生态链的每一个步骤都通过流水线串联起来并代码化,使得开发流程能够通过自动化流水线的形式变得更为高效、快速:只需将本地代码发布到测试环境,就可根据流水线走向判断是否出现Bug并进行修正。

自动化的CI/CD流水线可以加快开发流程并加速各方反馈循环,确保每个步骤的执行始终如一,使软件自动、快速、持续的交付更加轻松。

02.如何构建CI/CD流水线

CI/CD流水线的最终形态取决于实际的产品类型及要求,但所有流水线使用的模式大致相同。

▲CI/CD流水线模式

在CI/CD流水线中,结果会被自动记录并反馈通知给开发人员,使其能够按需对工作流进行配置,以便快速重启因故障而停止的进程,并通过测试策略配置(只有前面的测试成功通过后,才会运行更复杂的测试)来更有效地利用服务器资源。完成自动化测试后,软件通常会被部署在一系列的暂存环境中,一些被用于最终的功能测试,另一些被用于培训和客户演示等。

让我们更详细地了解一下每个阶段的注意事项。

03.标志和分支

代码提交是CI/CD流水线的第一步,指将整个代码库放入版本控制系统(Version Control System,VCS)中,如Git、Mercurial或Perforce,开发团队的每个成员都应养成即刻或频繁提交自己代码的习惯。

即刻或频繁提交代码是CI/CD流水线中的重要实践步骤,但对于周期较长的大型开发项目来说,这其实是一柄双刃剑:虽然可以快速得到新增代码的反馈、减少影响进度的问题出现可能性,但由于流水线的末端是客户,所以必须采取手段以避免客户接触到半成品功能或共享工作状态。

功能标志和分支可以解决这一问题。开发人员可以设置功能标志以区分代码可见环境,并指定仅团队内部可见。功能分支指从主干中剥离出共享分支进行单独的功能开发,最终还是会触发CI/CD流水线,这既能满足开发需求,又可享受CI/CD带来的便利。

04.构建和测试

在完成代码提交并完成实例执行后,下一个阶段便是构建和测试。如果有现成的自动化单元测试,通常会在此之前进行静态分析检查。

具体使用的构建工具(如Ant、Maven)及构建步骤取决于项目所使用的语言及框架。为避免因缺少依赖项而出现经典的“只能在我的电脑上工作”的情况,可以使用专用的构建服务器,通过将生成的安装包、二进制文件和一些编译中间件部署到测试环境,并与流水线结合,即可进行更高级别的自动化测试:单元测试、集成测试、端到端测试甚至非功能测试都可同步运行。这不仅能够缩短流水线耗时,还能实现更快的反馈循环。

05.虚拟机

想要保证自动化测试的结果准确可靠,必须确保测试流程的稳定性与一致性。

理想情况下,测试环境的配置应尽可能接近实际运行环境,并在测试运行时重置相关环境,以避免环境不一致导致测试结果有误。长期以来,虚拟机 (Virtual Machine,VM) 一直是运行测试环境的常用选择,常见的虚拟机有VMware、VirtualBox等。虚拟机既能模拟出与当前操作系统不同的运行环境,又能避免破坏性指令导致的系统受损。有些虚拟机甚至还具备快照功能,可以快速回到破损前状态。

然而,构建新的虚拟机需要经历依赖项的配置过程,细节极易被遗漏,从而影响构建过程。只要将代码打包到容器即可避免疏漏产生。容器具备高可移植性,是应用程序层的抽象,指将代码和依赖项打包到一起,更易于部署到不同的环境中,有助于确保流水线的高效运行。

06.部署

当代码来到CI/CD流水线的部署步骤时,开发人员可以选择手动部署或自动部署。手动部署(持续交付)可以控制新特性或新功能的发布时间,部署过程涉及用户的停机时间。而使用完全自动化的持续部署,新增代码更改只需通过CI/CD流水线先前的所有阶段,便会直接被部署。这意味着,之前因开发人员数量、提交频率等因素受限的部署次数可以达到之前难以想象的每天数十次甚至上百次。

07.总结

CI/CD获得认可的根本原因在于其实现了测试阶段的左移,而构建CI/CD流水线则可更好地将其付诸实践。根据实际的产品和框架来构建合适的CI/CD工作流,并选择最能满足配置需求的CI/CD平台,对CI/CD工作流的实现大有助益。

SkyEye天目全数字实时仿真软件,通过虚拟化技术仿真芯片,可以在PC机上运行嵌入式目标程序,减少搭建硬件测试环境的成本,使测试阶段左移,从而缩短嵌入式软件交付的开发周期。其内置的命令行工具可以控制仿真的运行与停止,与CI/CD平台有着良好的可集成性。此外,SkyEye还提供丰富的自动化测试函数库,提供内存和全局变量的查看及修改等功能,并在自动化测试完成后生成自动化测试报告,是嵌入式领域CI/CD实践的最佳拍档。

参考链接

https://www.jetbrains.com/teamcity/ci-cd-guide/ci-cd-pipeline/

了解CI/CD流水线相关推荐

  1. 如何从零开始搭建 CI/CD 流水线

    来源 | Saurabh Kulshrestha 译者 | 徐进 持续集成和持续部署成为现代 DevOps 趋势下的重要环节,很多角色岗位都要求 CI/CD 的相关技能.本文介绍了什么是 CI/CD ...

  2. 什么是CI/CD流水线?

    在CI/CD和DevOps领域中,持续交付和持续部署是一个老生常谈的话题.持续集成这个术语最早是在1994年由Grady Booch提出.微服务提出者Martin Flower在2014年发表的论文& ...

  3. CI/CD流水线的理解

    一.概念 单元测试:针对软件的基本单元(如:类.函数)所做的测试. 集成测试:将软件代码单元集成起来后,以组件.模块和子系统为单位进行的测试,主要测试接口间的交互关系.也称组件测试,子系统测试等. C ...

  4. 【 云原生 | kubernetes 】- tekton构建CI/CD流水线(二)

    ​ 上一节我们是通过创建Pipelinerun来触发流水线来进行构建,实际生产中完全自动化的实现需要借助tekton中的triggers.本文是上篇的拓展请先了解这篇文章 Tekton Trigger ...

  5. 实施有效有价值的CI / CD流水线实践分享

    原文地址: https://medium.com/@sanjayaben/how-to-build-an-efficient-ci-cd-pipeline-b5738ad567c8   我觉得这篇文章 ...

  6. 使用 Kubernetes 和滴滴云 Docker 仓库构建 CI/CD 流水线

    写在前面:<Kubernetes Tutorials> 系列文章旨在帮助您从入门到高阶逐步了解并掌握kubernetes技术栈的实操.理论和最佳实践.主题将包括 Docker 基础与实操. ...

  7. 【项目自动发布】基于Docker/单节点Rancher/GitLab搭建简易的CI/CD流水线(备忘+补充完善)

    前言 最近面试好像也经常问到一个问题: 你们项目是怎么发布的 传统的Java项目都是本地打包成 jar包 或者 war包, 上传到服务器, 然后通过shell脚本的方式启动的 要求我们具备一定的she ...

  8. Jenkins 2.X free-style CI/CD流水线搭建(一)

    前面介绍了Jenkins的安装和插件管理,这篇文章我们介绍下Jenkins free-style CI流水线的搭建.虽然现在不推荐使用这种方式搭建流水线.但是它可以帮助初学者快速了解和体验Jenkin ...

  9. Jenkins自动化CI CD流水线之8--流水线自动化发布Java项目

    一.前提 插件:Maven Integration plugin 环境: maven.tomcat 用的博客系统代码: git clone https://github.com/b3log/solo. ...

最新文章

  1. Android 多线程-----AsyncTask详解
  2. C#的textBox输入法是全角输入的问题解决
  3. 12 岁开始学编程,17 岁总结了 7 个重要教训!
  4. java 700c corsa_JAVA CORSA休闲车,缔造“城市 生活 元素”
  5. 怎样提高WebService性能大数据量网络传输处理(转)
  6. 06_Jedis完成MySQL的条件查询案例
  7. 别说我不懂排序!几种常见排序算法(一)
  8. 下载mysql驱动jar包
  9. 【行业应用】阿里云实时计算 Flink 版 IoT 行业解决方案
  10. 机器学习基础:概率论基础
  11. Android 音频管理器AudioManager类介绍
  12. 计算机mc mr,【科普贴】计算器上的GT、CE、AC、MU、MC、MR、M-、M+都是什么?
  13. 抖音测试距离的软件,抖音同款距离测量仪
  14. Tomcat启动缓慢 Creation of SecureRandom instance for ... 花费时间过长的解决方法
  15. 弦理论能成为新的万物理论吗?
  16. DellR720-硬raid5
  17. 迷阵突围——Dijkstra求次短路
  18. openPTrack v2 安装 | 3、OpenPTrack v2 模块编译
  19. Windows10 InsiderPreview 10074 安装体验
  20. H5页面系统深色模式适配

热门文章

  1. Linux 不间断后台执行进程
  2. 怎么可以快速解决网络劫持
  3. HBase 数据库检索性能优化策略
  4. 不会吧不会吧,不会真有人还不会算时间复杂度吧?用十分钟让你明白如何计算时间复杂度
  5. 企业微信社群运营该怎么做?
  6. 外媒介绍全新表情密码 用emoji解锁安全吗?
  7. 【射影几何02】拓广平面
  8. OUC暑期培训(深度学习)——第六周学习记录:Vision Transformer amp; Swin Transformer
  9. 项目质量管理工具--鱼骨图(石川图)
  10. Android压缩图片到100K以下并保持不失真的高效方法