本文由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之类的工具。

参考链接:

  1. 持续集成(CI)、自动化构建和自动化测试—初探
    http://www.cnblogs.com/chaoa/articles/4447354.html
  2. 八大持续集成工具
    http://openskill.cn/article/218
  3. Bamboo的地址
    https://www.atlassian.com/software/bamboo

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/inter_peng/article/details/53131831

持续集成(Continuous Integration)基本概念与实践的更多相关文章

  1. 基于Jenkins Pipeline的ASP.NET Core持续集成实践

    最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署效率,因此这里总结一下. 一.关于持续集成与Jenkins Pipelin ...

  2. <自动化测试方案_9>第九章、持续集成平台搭建

    第九章.持续集成平台搭建 (一)什么是持续集成 参考文章地址:https://blog.csdn.net/qq_32261399/article/details/76651376 敏捷软件开发(英语: ...

  3. 基于 CODING 的 Spring Boot 持续集成项目

    本文作者:CODING 用户 - 廖石荣 持续集成的概念 持续集成(Continuous integration,简称 CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少 ...

  4. CI/CD持续集成/持续部署 敏捷开发

    敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它 ...

  5. Jenkins持续集成【简介】

    1.1 目前主流网站部署的流程    目前主流网站部署方法,通过Hudson/Jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台 ...

  6. Jenkins持续集成企业实战系列之Jenkins持续集成简介及安装-----02

    1.      Jenkins持续集成简介 注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.    最初接触Jenkins也是由于公司需求, ...

  7. 持续集成平台jenkins

    一. 什么是持续集成 1. 概念 持续集成(Continuous Integration),也就是我们经常说的CI 持续集成(CI)是一种实践,可以让团队在持续的基础上收到反馈并进行改进,不必等到开发 ...

  8. Jenkins +Maven+Tomcat+SVN +Apache项目持续集成构建

    详解Jenkins +Maven+Tomcat+SVN +Apache项目持续集成 一:前言 1. Jenkins jenkins版本大全http://mirrors.jenkins-ci.org/ ...

  9. Jenkins持续集成企业实战

    阅读目录: Jenkins持续集成企业实战1.1 目前主流网站部署的流程1.2 Jenkins持续集成简介1.3 Jenkins持续集成组件1.4 Jenkins平台安装部署1.5 Jenkins相关 ...

  10. devops持续集成

    目录 Devops 版本控制系统 Git安装 Git使用 git四种状态 git基础命令 git分支 git合并冲突 git标签 git命令总结 Github使用 创建仓库 HTTP协议 SSH协议 ...

随机推荐

  1. 怎样用CMD命令强行删除文件?

    如果你要删除的整个文件夹以及文件夹里面的所有内容的话rd/s/q 盘符:\某个文件夹   (这样整个文件夹所有的文件和文件夹都删除了)比如我想删除D盘的123文件夹以及123文件夹里面所有的内容rd/ ...

  2. [LeetCode&Python] Problem 226. Invert Binary Tree

    Invert a binary tree. Example: Input: 4 / \ 2 7 / \ / \ 1 3 6 9 Output: 4 / \ 7 2 / \ / \ 9 6 3 1 Tr ...

  3. URL编码表(收集到的,为了方便查看)

    URL编码表

  4. Python基础练习及答案

    1.请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li=['alex', 'eric', 'rain'] 该题目主要是考的字符串的拼接,join方法, s = "" li ...

  5. python英文与中文的词频统计

    1.统计英文单词, # 1.准备utf-8编码的文本文件file(已在文件夹中定义了 一个名叫“head.txt.rtf”文本文件,详情请见截图) def getTxt(): #3对文本预处理(包括) ...

  6. Python-pycurl模块的安装

    先执行以下命令(因为我在另一个终端执行,所以history的编号有重复) 7 wget https://pypi.python.org/packages/source/p/pycurl/pycurl- ...

  7. win10安装系统后,提示initializing and establishing link无法启动系统

    使用老毛桃安装系统前,先对硬盘进行分区,分区时选择mbr格式分区就可以了,安装好系统重启进入系统时将boot安全启动关闭,模式改为legal(那个单词大概长这样,不记得了,反正那里就两个模式,可以都试 ...

  8. terraform 几个方便的工具

    几个方便的terraform 工具,方便了解terraform terraform-docs 方便的查看资源的信息(支持markdown,json 格式),对于ci/cd 很方便 项目地址 https ...

  9. replicatedhq-ship 基于Kustomize 项目的快速kubernetes 应用部署工具

    replicatedhq-ship 是对Kustomize 项目的扩展,我们可以用它来快速的进行三方应用的管理部署, 可以和helm,kubernetes 清单文件,knative 集成,我们可以方便 ...

  10. Using C++ new() placement in embedded system

    For new(), there are three definition in C++11, which are listed below. throwing (1) void* operator ...