CI持续集成理论知识
(1)什么是CI
What is CI?
CI就是持续集成,持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译、发布、自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
PS:把企业中的一系列过程集成在CI平台上,可以写好脚本,点击执行,或者定时执行。
CD就是持续交付,是在CI的基础进行了扩展,在CI环节完成了软件构建和测试工作并形成了新的版本,那么接下来就要进行交付,而这里的交付并不是交付到生产环境,而是类生产环境,我们可以理解为灰度环境或者预发环境,进而接受部分真实流量的测试,如果没有问题则通过手动的方式部署到生产环境。
CI常用的工具:Jenkins。
工作流:
开发->提交代码->静态代码扫描(直接通过工具去检查代码中的错误)->单元测试->编译->测试->发布
Jenkins是什么?(是一种CI工具)
Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。前身是Hudson,是一个可扩展的持续集成引擎。可用于自动化各种任务,如构建,测试和部署软件。
主要用于:
持续、自动地构建项目、测试软件项目等。
主要提供了
基于版本管理工具(如CVS、VSS、SVN)感知变化或每天定时的持续集成,并提供持续集成报告、Email(提供丰富的插件库)等方式通知相关负责人,其要求是需要进行日构建的项目已经编写好全自动的项目编译脚本(可基于Maven或Ant)。监控一些定时执行的任务。
Jenkins特点
- 开源免费
- 跨平台,支持所有的平台(Linux、mac、windows)
- 支持分布式的build(可以在jenkins上建多个自动化脚本,比如一个跑冒烟测试、一个跑回归测试)
- web形式的可视化的管理页面
- 安装配置超简单
- tips提示快速的帮助
- 已经有很多的插件(比如:Email Extension、Git、GitHub、Subversion)
(2)CI的价值
减少风险
越早发现的错误,修正的费用越低。
及时检查软件测试的健康状况,减少发布时的风险。
(比如:每天定时触发自动化测试项目,自动生成报告)
减少重复性的工作
通过自动化的持续集成可以将编译、部署、测试等动作都变成自动化的,无需太多人工干预。
任何时间,任何地点都可以部署软件
利用持续集成,可以经常对源代码进行一些小改动,并将这些改动和其他的代码进行集成。如果出现问题,项目成员马上就会被通知到。
(3)CI的架构

CI持续集成理论知识的更多相关文章
- GitLab CI持续集成配置方案
目录 1. 持续集成介绍 1.1 概念 1.2 持续集成的好处 2. GitLab持续集成(CI) 2.1 简介 2.2 GitLab简单原理图 2.3 GitLab持续集成所需环境 2.4 需要了解 ...
- CI持续集成
CI持续集成 “我的TDD实践”系列之CI持续集成 写在前面: 我的TDD实践这几篇文章主要是围绕测试驱动开发所展开的,其中涵盖了一小部分测试理论,更多的则是关注工具的使用及环境的搭建,做到简单实践先 ...
- 我的TDD实践---CI持续集成
“我的TDD实践”系列之CI持续集成 写在前面: 我的TDD实践这几篇文章主要是围绕测试驱动开发所展开的,其中涵盖了一小部分测试理论,更多的则是关注工具的使用及环境的搭建,做到简单实践先行,后理论专精 ...
- 【补充】Gitlab 部署 CI 持续集成
上一篇:<劈荆斩棘:Gitlab 部署 CI 持续集成> 上一篇所配置的.gitlab-ci.yml: stages: - build - test before_script: - ec ...
- [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...
- Ubuntu Docker 安装和配置 GitLab CI 持续集成
相关文章: Ubuntu Docker 简单安装 GitLab 劈荆斩棘:Gitlab 部署 CI 持续集成 目的:在 Ubuntu 服务器上,使用 Docker 安装和配置 GitLab Runne ...
- Gitlab CI 持续集成的完整实践
Gitlab CI 持续集成的完整实践 本着公司团队初创,又在空档期想搞点事情,搭建了私有Gitlab的契机,顺便把持续集成搭建起,实现了对Python服务端代码的单元测试.静态代码分析和接口测试的持 ...
- CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
原文地址https://www.cnblogs.com/kevingrace/p/5651447.html 近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更 ...
- Git Hooks、GitLab CI持续集成以及使用Jenkins实现自动化任务
Git Hooks.GitLab CI持续集成以及使用Jenkins实现自动化任务 前言 在一个共享项目(或者说多人协同开发的项目)的开发过程中,为有效确保团队成员编码风格的统一,确保部署方式的统一, ...
随机推荐
- 第15.1节 PyCharm安装及使用
一. 引言 在本章以前,所有老猿实现的代码都是基于Python自带的解释器IDLE来开发和执行的,很方便.消耗少,但进入PyQt图形界面开发以后,IDLE不能实现和PyQt的集成,且不能支持断点调试, ...
- 【Docker】 使用Docker 在阿里云 Centos7 部署 MySQL 和 Redis (二)
系列目录: [Docker] CentOS7 安装 Docker 及其使用方法 ( 一 ) [Docker] 使用Docker 在阿里云 Centos7 部署 MySQL 和 Redis (二) [D ...
- js 几种跨域解决方法
同源策略: JS只能与同一个域中的页面进行通讯,必须是协议.域名.端口都相同,相同域下才能相互通信,这可以被认为是一种通信原则,叫同源策略. 跨域: js跨域是指通过js在不同的域之间进行数据传输或通 ...
- P5327 [ZJOI2019]语言
一边写草稿一边做题吧.要看题解的往下翻,或者是旁边的导航跳一下. 草稿 因为可以开展贸易活动的条件是存在一种通用语 \(L\) 满足 \(u_i\) 到 \(v_i\) 的最短路径上都会 \(L\) ...
- Java集合源码分析(八)——WeakHashMap
简介 WeakHashMap 继承于AbstractMap,实现了Map接口. 和HashMap一样,WeakHashMap 也是一个散列表,它存储的内容也是键值对(key-value)映射,而且键和 ...
- Css:常用的去除默认样式
*{ padding: 0; margin: 0; } ul,ol{ list-style: none; } a,a:hover,a:link,a:visited,a:active{ ...
- uni-app中使用sass
uni-app在创建时,工程目录下会有个uni.scss文件,我们可以直接在里面定制化scss变量. 全局scss中的坑: 1.如果要引用全局外部scss文件,可以考虑在uni.scss这个系统全局s ...
- xwiki升级8.8.4
安装包下载: http://download.forge.ow2.org/xwiki/xwiki-enterprise-jetty-hsqldb-8.4.4.zip 推荐使用jetty包,方便快捷,不 ...
- v-once
v-once 使用了这个指令,那么这个值将只会渲染一次,后续将不会再被更改 初始运行结果: 在控制台中分别修改他们的值: 可以看到使用了v-once指令的插值没有被修改.
- 为什么类只能用public修饰?
为什么类只能使用public修饰? 首先,类只能使用public修饰是一个伪命题,应该说我们只见到过使用public修饰的类,还有一些类没有访问修饰符,此时访问权限为default.其次,类实际上分为 ...