CI/CD流水线的理解
一、概念
单元测试:针对软件的基本单元(如:类、函数)所做的测试。
集成测试:将软件代码单元集成起来后,以组件、模块和子系统为单位进行的测试,主要测试接口间的交互关系。也称组件测试,子系统测试等。
CI/CD流水线总共包含三个阶段:持续集成、持续交付、持续部署。我整合了CSDN其他博主写的博客,在结合我的工作经验,具体的理解整理后如下:
二、持续集成CI(continuous integration)
持续集成的定义:
持续集成是一种软件开发实践,指的是团队成员频繁的将代码集成到主干分支的过程。一般每人每天至少集成一次,也可以多次。每次集成经过自动构建、自动(单元)测试,以尽快检测出集成错误,确认是否正确将新代码和原有代码集成在一起。
持续集成的目标:
确保新增的代码能够与原先代码正确的集成,快速的提供一个可供测试的新版本(在测试环境中成功部署,软件可运行并且基本功能可用)。
持续集成的流程:build -> test -> result.
- 开发人员提交代码到Source Repository(源代码仓库),并通过git hook通知
- 出发 CI Server 的相关功能,执行 构建 -> 测试 -> 输出结果 的流程
- 生成并向开发人员发送反馈结果的report
持续集成的好处:
1、持续集成频繁的集成可以把复杂的代码逻辑切割成小块,每完成一点更新,就集成到主干,这样可以快速发现错误,定位错误;
2、节省人力成本,通过Jenkins自动构建和自动测试可以节省很多时间,加快软件开发进度,从而可以投入到更有价值的工作中去
3、更细致的工作(代码)提交意味着可以更容易的判断当前的工作进度,开发流程变得易于管控。
三、持续交付CD(continuous delivery)
持续交付的定义:
持续交付是一种能够使得软件在较短的周期中可靠地发布的软件工程方法,最终是通过手动部署到生产环境。指的是在持续集成的基础上,增加了test、staging、production 三个环节。在这个阶段,测试人员、PM在测试环境和预发布环境对最终要部署的项目进行全面且多轮的验证。
持续交付的目标:
拥有一个满足用户预期和质量要求的可随时部署到生产环境的代码库(新版本),确保新增的代码在生产环境中是可用的。
持续交付的流程:test -> staging ->production.
- Test环节,是在测试环境中对新增加的特性、功能进行全面的测试,包括了集成、功能、兼容性、安全、性能等系统测试。测试通过后,代码将自动部署到预发布环境。
- Staging指的是预发布环境,其尽可能模拟生产环境的真实网络拓扑、数据库及服务器硬件设备等资源,由测试人员验证代码在预发布环境中的可能表现。这个阶段,通常进行验收测试和全面回归测试(自动化测试的方式)。
- Production阶段将由相关人员(通常是运维)将新版本手动部署到生产环境。(如果发现问题,可以随时回滚)
四、持续部署CD(continuous deployment)
持续部署的定义:
持续部署同样也是一种软件工程方法,通过自动化部署的方式将软件功能频繁的进行交付。
持续部署的目标和持续交付是一致的,但实现方式上与持续交付的不同,最后部署到生产环境的过程是通过自动的方式实现的,所以说持续部署是持续交付的最高阶段。
在持续部署下,开发同学只需提交代码,如果代码通过测试,可以全自动的部署到生产环境,所以持续部署的实现在很大程度上都得依赖精心设计的测试自动化。
CI/CD流水线的理解相关推荐
- 什么是CI/CD流水线?
在CI/CD和DevOps领域中,持续交付和持续部署是一个老生常谈的话题.持续集成这个术语最早是在1994年由Grady Booch提出.微服务提出者Martin Flower在2014年发表的论文& ...
- 如何从零开始搭建 CI/CD 流水线
来源 | Saurabh Kulshrestha 译者 | 徐进 持续集成和持续部署成为现代 DevOps 趋势下的重要环节,很多角色岗位都要求 CI/CD 的相关技能.本文介绍了什么是 CI/CD ...
- 了解CI/CD流水线
自动化流水线在CI/CD(持续集成/持续交付或持续部署)的实践中发挥着核心作用.本文将对什么是CI/CD流水线.如何构建CI/CD流水线进行讨论. *持续集成:Continuous Integrati ...
- 【项目自动发布】基于Docker/单节点Rancher/GitLab搭建简易的CI/CD流水线(备忘+补充完善)
前言 最近面试好像也经常问到一个问题: 你们项目是怎么发布的 传统的Java项目都是本地打包成 jar包 或者 war包, 上传到服务器, 然后通过shell脚本的方式启动的 要求我们具备一定的she ...
- 【 云原生 | kubernetes 】- tekton构建CI/CD流水线(二)
上一节我们是通过创建Pipelinerun来触发流水线来进行构建,实际生产中完全自动化的实现需要借助tekton中的triggers.本文是上篇的拓展请先了解这篇文章 Tekton Trigger ...
- 实施有效有价值的CI / CD流水线实践分享
原文地址: https://medium.com/@sanjayaben/how-to-build-an-efficient-ci-cd-pipeline-b5738ad567c8 我觉得这篇文章 ...
- 使用 Kubernetes 和滴滴云 Docker 仓库构建 CI/CD 流水线
写在前面:<Kubernetes Tutorials> 系列文章旨在帮助您从入门到高阶逐步了解并掌握kubernetes技术栈的实操.理论和最佳实践.主题将包括 Docker 基础与实操. ...
- Jenkins 2.X free-style CI/CD流水线搭建(一)
前面介绍了Jenkins的安装和插件管理,这篇文章我们介绍下Jenkins free-style CI流水线的搭建.虽然现在不推荐使用这种方式搭建流水线.但是它可以帮助初学者快速了解和体验Jenkin ...
- Jenkins自动化CI CD流水线之8--流水线自动化发布Java项目
一.前提 插件:Maven Integration plugin 环境: maven.tomcat 用的博客系统代码: git clone https://github.com/b3log/solo. ...
最新文章
- mybatis动态sql中的trim标签的使用
- 独家 | 简单三步实现Python脚本超参数调优(附代码)
- 光遇自动弹琴脚本代码_光遇弹琴辅助软件下载-光遇自动弹琴脚本代码下载v1.0_86PS软件园...
- Diverse Strings
- 微信小程序下拉刷新/上拉加载更多
- 【Vue-Router】模拟源码,解析 Vue-Router 的实现原理
- Javascript 四种输出方式
- 安装并启动Tomcat 8(mac版本)
- vue 不是内部或外部命令
- 大数据开发常见面试问题总结
- 低配置服务器安装GitLab
- 【推荐系统】Criteo数据集介绍
- 2023年中职网络安全竞赛解析——隐藏信息探索
- 大疆Tello EDU版本(新发布)
- 反转链表详细讲解(就地逆置法)
- [yzhpdh多读paper]Discovering Shifts to Suicidal Ideationfrom Mental Health Content in Social Media
- 速算24点(C++)
- Servlet | ServletConfig接口、ServletContext接口详解
- SN74AHCT541PWR缓冲器 非反向1Element 8 Bit per Element 三态 Output 20-TSSOP
- 《细说PHP》第二版--读书笔记