想起我刚毕业后,进入一家以软件外包为主的外企做开发。它使用传统的瀑布式的软件开发流程,没有使用任何的敏捷实践。我每天上班打开电脑,拿到自己的任 务,然后从版本控制更新代码,打开工程按下Build,准备进行今天的开发任务。突然发现Build失败(通常是编译不过),大喊一声“谁Break Build啦”,也没有人响应,自己一个人郁闷,接着查看是哪些文件导致编译失败,找到最后的提交人,让他去Fix Build。后来团队里如果某个人Break Build,其他某些团队成员就在MSN的签名上写着“XXX Break Build,今天要请客吃饭”等等。其实Build失败在软件开发过程中会经常出现,不同的程序员实现自己的模块,写单元测试,完成后提交代码,难免会造 成冲突导致Build失败。但是对于开发者来说,应当能够最快的获得当前Build的反馈,如果该Build失败必须在最短的时间内修复它,以免它影响其 他人的开发进度。
Build具体包括哪些内容呢?它不仅仅指的是编译代码,而是指编译代码,运行所有的测试(包括单元测试,功能测试等),运行代码分析(比如分析代码是否 符合编码规范),部署系统(产生可执行的软件,或者把网站部署到Web服务器上)。Build是一系列的过程用来保证代码能够运行,能够正确的运行,最后 能发布出来。
在敏捷开发中,有一个很重要的实践叫做持续集成。而什么是持续集成呢?简单来说,持续集成是频繁、持续的在多个团队成员的工作中进行集成,并且给与反馈。一个典型的持续集成周期包括以下几个步骤:
- 持续集成服务器不断从版本控制服务器上检查代码状态,看代码是否有更新。
- 如果发现代码有最新的提交,那么就从版本控制服务器下载最新的代码。
- 等代码完全更新以后,调用自动化编译脚本,进行代码编译。
- 运行所有的自动化测试。
- 进行代码分析。
- 产生可执行的软件,能够提供给测试人员进行测试。
如果其中任何一个步骤失败,就表示该Build失败,持续集成服务器会给予相应的反馈。一般来说,持续集成服务器会有相应的管理界面,可以看到 Build的状态以及相应的信息,如果Build失败,可以查看原因,是编译失败还是测试失败。或者在每次Build后,持续集成服务器发邮件通知,从邮 件中可以看到最新Build的状态。当然,也可以自定义反馈方法,比如在ThoughtWorks中国,有个团队的持续集成反馈就是火山灯,黄色表示正在 进行Build,绿色表示Build成功,而红色则表示Build失败,一旦发现灯变红了,所有人都不能提交代码,而应该尽快修复该Build。还有一个 团队更有创意,用语音来进行反馈。如果Build成功,就会有语言提示说“Build XXXX成功”,如果失败,就会有提示“Build XXXX失败,是由XXX提交的”,被念到名字的成员就得停下来修复这个Build。
持续集成实践的目的不是减少Build失败的次数,而是尽早发现问题,在最短的时间内解决问题,减少风险和浪费。如果想尝试持续集成,首先需要的是持续集 成服务器,比如CruiseControl或者VSTS;然后需要把现有的Build自动化,比如写Ant脚本;最后就是在持续集成服务器上进行配置,比 如配置版本控制,集成间隔时间,如何部署,如何反馈等。
转自:http://www.cnblogs.com/blusehuang/archive/2008/01/20/continuous_integration.html
相关推荐
Jenkins是一款开源的持续集成(Continuous Integration,简称CI)工具,广泛应用于软件开发过程中,以自动...结合提供的"3.Jenkins持续集成简介.avi"视频资源,你可以更直观地了解和掌握Jenkins的使用方法和实际应用。
### 持续集成简介 持续集成是一种软件开发实践,它要求团队成员经常性地将代码合并到共享的主分支中。每次合并后,都会自动触发构建和测试过程。这种做法有助于尽早发现和修复问题,提高软件质量,加快交付速度。 ...
二、Jenkins 持续集成简介 Jenkins是一款广泛使用的开源持续集成工具,它支持多种版本控制系统(如Git、SVN等),能够自动化执行构建、测试和部署任务。Jenkins的核心目标是提供持续、自动化的软件构建和测试服务,...
- **持续集成简介**: - **定义**:持续集成(CI)是一种软件开发实践,要求团队成员频繁地将其工作集成到主干版本中。 - **目的**: - 快速发现并解决代码冲突或问题。 - 保持代码库的一致性。 - 减少集成时的...
Jenkins持续集成简介 Jenkins是一款开源持续集成与持续交付工具,支持构建、测试、部署等多种操作。其主要特点包括: - **灵活性**:可通过插件扩展功能。 - **可扩展性**:支持多种CI/CD管道定义方式。 - **易用...
#### 三、Jenkins持续集成简介 Jenkins是一款开源的持续集成(CI)和持续部署(CD)工具,它可以帮助团队实现软件开发过程中的自动化构建、测试和部署,从而提高工作效率和软件质量。其核心优势在于: 1. **自动化**:...
### 持续集成与Hudson:基于Subversion的实战指南 #### 一、引言 在现代软件开发过程中,持续集成(Continuous Integration, CI)已成为确保代码质量和提高开发效率的关键实践之一。其中,Hudson作为一款流行的...
资源名称:持续集成:软件质量改进和风险降低之道内容简介: 《持续集成:软件质量改进和风险降低之道》全面深入地讨论持续集成的各个方面,介绍了一种增加项目可见性、降低项目失败风险的有效实践。此外,还介绍了...
### 持续集成框架整合说明 #### 一、引言 随着软件开发流程的不断演化,持续集成(CI)已成为提高软件质量和开发效率的重要手段之一。本文将详细介绍如何利用Jenkins、Maven以及Sonar等工具搭建一套完整的持续集成...
《3.jenkins持续集成简介.wmv》视频中详细介绍了这一概念,强调了Jenkins在CI中的重要角色。 接下来,我们讨论Jenkins的安装与配置。Jenkins提供了一键安装脚本,简化了部署过程。但企业环境中,我们通常需要考虑更...
1. **Hudson简介**:Hudson是一款基于Java的持续集成工具,提供了一个友好的Web界面,允许用户配置构建任务、监控构建状态和结果,并通过邮件通知等机制及时反馈问题。Hudson支持多种版本控制系统,如Git、SVN等,...
Jenkins 持续集成简介 --------------------- 持续集成(Continuous Integration,CI/CD)是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础,持续集成意义如下: * 持续集成中的任何一...
Travis CI 是一款广泛使用的持续集成工具,尤其在开源项目中极为流行。它与GitHub紧密集成,可以帮助开发者自动化测试和构建代码,确保每次代码提交后都能得到及时的反馈,从而提高开发效率和软件质量。 ## 一、...
Jenkins是一个[开源软件]项目,是基于[Java]开发的一种[持续集成]的流程化的工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。 Jenkins的特点: 开源的java语言开发...
**JMeter接口自动化持续集成环境搭建** 在软件开发过程中,接口测试是不可或缺的一环,它确保了系统组件之间的通信能够顺畅进行。Apache JMeter是一款强大的性能测试工具,尤其适合进行接口自动化测试。本文将详细...
1. 持续集成简介:介绍持续集成本身的概念,以及它在Xcode环境中的应用。这一部分还会强调持续集成对于提高软件质量和开发效率的重要性。 2. Xcode服务的安装与设置:指导如何下载和安装OSX Server以及Xcode,以及...
### Jenkins、SVN与Maven持续集成实践 #### 一、引言 随着软件开发规模的不断扩大和技术迭代速度的加快,传统的手动构建、测试及部署方式已经无法满足现代软件开发的需求。持续集成(Continuous Integration, CI)...
2. **华为ICP平台简介**:华为ICP是华为提供的云端开发运营一体化平台,它集成了项目管理、代码托管、持续集成/持续部署(CI/CD)、质量管理、发布管理等功能,为企业提供一站式开发服务。 3. **ICP_CI系统架构**:...
**使用Hudson进行持续集成** Hudson是一款开源的持续集成工具,它可以帮助开发团队自动执行构建、测试和部署等任务,以确保软件项目的质量和稳定性。本文将详细介绍如何使用Hudson进行持续集成,主要涵盖以下几个...