持续集成(Continuous Integration)基本概念与实践
本文由Markdown语法编辑器编辑完成。
From https://blog.csdn.net/inter_peng/article/details/53131831
1. 持续集成的概念
持续集成(Continuous Integration)的概念有很多不同的版本,持续集成的出现是为了配合敏捷开发(相对于瀑布开发)的速度和效率而产生的一个用于编译、测试、发布、部署的工具。
为什么叫持续呢?因为编码人员每天都会向项目提交代码,因此项目源码每天都会发生改变,为了能够验证最新的代码是否能够被成功编译,是否会影响前面迭代已经通过的自动化测试case,是否能够打出完整的可执行包供测试人员进行测试……。通过每天,甚至是每次提交代码后的持续集成,可以很快地得到反馈,并且易于追溯,即使出了问题也很容易知道是由于哪一位开发人员的提交而导致的。
持续集成(CI)是一种实践,可以让团队在持续的基础上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。
通俗一点儿说:
就是指对于开发人员的每一次代码提交,都自动地把Repository中所有代码Check out到一个空目录,并且自动运行所有Test Case。如果成功则接受这次提交,否则告诉所有人,这是一个失败的Revision。
持续集成一般通过编写好的python等脚本,自动完成一系列集成所需要的步骤。从代码的check out, 构建项目工程,编译源代码,生成可执行包或安装文件,压缩打包,上传到公司或项目组的FTP等位置……
如果不想每次提交都去集成的话,可以选择在一个固定的时间点去集成,比如每天晚上等项目组的所有成员都已经把当天的代码提交完毕后,启动集成。当第二天上班的时候,测试人员会去FTP下载最新的项目包,开始测试开发人员前一天提交的代码是否正确。这也是Daily Build的概念来源,即每日构建。
2. 持续集成的工具
有一篇文章介绍了持续集成的八大工具,分别是:
- Hudson
- CruiseControl
- Continuum
- QuickBuild
- Bamboo
- Jenkins
- TeamCity
- CI-Eye
关于这几个持续集成工具的详细介绍,可以参考这篇文章:
《八大持续集成工具》http://openskill.cn/article/218。
我在三年半的工作生涯中,接触过的两个持续集成工具分别是Bamboo和Jenkins,因此对这两个持续集成工具比较亲切,但是真正了解得很少。一时,这个工具一般都是自动运行,很少需要人的参与,除非前一天构建失败后,需要登录工具去下载失败的log;二来,这个也主要是项目经理和测试组会经常访问的工具,开发人员一般只负责提交代码到SVN即可。
但是,不管是哪一个持续集成工具,它本质上只不过是一个定时器,时间一到,做你脚本里让它去做的事。如果,想要扩展持续集成的作用,则需要将这个工具与其他的工具结合,才能显示出持续集成的本色。
比如,如果想增加测试工具,选择JUnit, JWebUnit, Selenium等;
想检查代码标准,需要用checkstyle, sonarqube等代码规范检查工具;
想了解测试覆盖率,可以用Istanbul, JCoverage等工具;
想打包生成二进制文件,要用Ant, Make之类的工具。
参考链接:
- 持续集成(CI)、自动化构建和自动化测试—初探
http://www.cnblogs.com/chaoa/articles/4447354.html - 八大持续集成工具
http://openskill.cn/article/218 - Bamboo的地址
https://www.atlassian.com/software/bamboo
持续集成(Continuous Integration)基本概念与实践的更多相关文章
- 基于Jenkins Pipeline的ASP.NET Core持续集成实践
最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署效率,因此这里总结一下. 一.关于持续集成与Jenkins Pipelin ...
- <自动化测试方案_9>第九章、持续集成平台搭建
第九章.持续集成平台搭建 (一)什么是持续集成 参考文章地址:https://blog.csdn.net/qq_32261399/article/details/76651376 敏捷软件开发(英语: ...
- 基于 CODING 的 Spring Boot 持续集成项目
本文作者:CODING 用户 - 廖石荣 持续集成的概念 持续集成(Continuous integration,简称 CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少 ...
- CI/CD持续集成/持续部署 敏捷开发
敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它 ...
- Jenkins持续集成【简介】
1.1 目前主流网站部署的流程 目前主流网站部署方法,通过Hudson/Jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台 ...
- Jenkins持续集成企业实战系列之Jenkins持续集成简介及安装-----02
1. Jenkins持续集成简介 注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 最初接触Jenkins也是由于公司需求, ...
- 持续集成平台jenkins
一. 什么是持续集成 1. 概念 持续集成(Continuous Integration),也就是我们经常说的CI 持续集成(CI)是一种实践,可以让团队在持续的基础上收到反馈并进行改进,不必等到开发 ...
- Jenkins +Maven+Tomcat+SVN +Apache项目持续集成构建
详解Jenkins +Maven+Tomcat+SVN +Apache项目持续集成 一:前言 1. Jenkins jenkins版本大全http://mirrors.jenkins-ci.org/ ...
- Jenkins持续集成企业实战
阅读目录: Jenkins持续集成企业实战1.1 目前主流网站部署的流程1.2 Jenkins持续集成简介1.3 Jenkins持续集成组件1.4 Jenkins平台安装部署1.5 Jenkins相关 ...
- devops持续集成
目录 Devops 版本控制系统 Git安装 Git使用 git四种状态 git基础命令 git分支 git合并冲突 git标签 git命令总结 Github使用 创建仓库 HTTP协议 SSH协议 ...
随机推荐
- 【Eigen开源库】linux系统如何安装使用Eigen库
code /* * File : haedPose.cpp * Coder: * Date : 20181126 * Refer: https://www.learnopencv.com/head-p ...
- Unity 思考问题的办法
Unity 思考问题的办法 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...
- 如何简单实用hammer
1,首先引用hammer在html中 <script src="js/jquery.hammer.js"></script> 2.在js中创建 ...
- windows 下安装composer
安装 1.在PHP目录下,打开php.ini文件,开启openssl扩展.去掉extension=php_openssl.dll前面的分号(;) 2.把php目录添加到环境变量(和php.exe同级目 ...
- C语言--第四周作业评分和总结(5班)
作业链接:https://edu.cnblogs.com/campus/hljkj/CS2017-5/homework/1129 一.评分要求 要求1 完成PTA第四周所有题(20分). 要求2 4道 ...
- Odoo9以后的社区版本和企业版功能上的区别
Odoo9以后的社区版本和企业版除了授权模式的区别外,整理功能上的区别 透过功能设置菜单整理的区别如下,主要功能模块. 未包括所有模块,毕竟模块太多了. 以下是企业版有,而社区版没有的功能.
- C++学习(二)之Visual Studio写system语句 生成可执行文件
system命令 1.首先先介绍一些system命令 windows+tab //切换窗口 windows+R //调出命令窗口 命令: 输入 calc 打开计算机 输入 cmd 打开命令窗口 ...
- hdu3068 最长回文 manacher
给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.回文就是正反读都是一样的字符串,如aba, abba等 manacher裸题 #include<stdio. ...
- Go Example--if语句
package main import "fmt" func main() { //if else 条件都不需要括号,{}是需要的 if 7 % 2 == 0 { fmt.Prin ...
- Python知识点整理,基础5 - 文件操作