jenkins介绍ppt初稿1
- 格式:doc
- 大小:1.05 MB
- 文档页数:9
jenkins详解(⼀)还是以以下⼏个问题来学习这个软件:1.jenkins是什么?2.为什么要⽤jenkins?3.怎么⽤jenkins?1.jenkins是什么? Jenkins是⼀个开源的、提供友好操作界⾯的持续集成(CI)⼯具,起源于Hudson(Hudson是商⽤的),主要⽤于持续、⾃动的构建/测试软件项⽬、监控外部任务的运⾏(这个⽐较抽象,暂且写上,不做解释)。
Jenkins⽤Java语⾔编写,可在Tomcat等流⾏的servlet容器中运⾏,也可独⽴运⾏。
通常与版本管理⼯具(SCM)、构建⼯具结合使⽤;常⽤的版本控制⼯具有SVN、GIT,构建⼯具有Maven、Ant、Gradle。
2.为什么要⽤Jenkins? 上⾯的特性决定了我们使⽤它, Jenkins特性易于安装不需要安装、不需要数据库,只需通过java -jar jenkins.war或部署到⼀个servlet容器中易于配置所有的配置都可能通过jenkins提供的web界⾯完成,当然如果你喜欢,也可以通过⼿动修改xml⽂件进⾏配置⽣成JUnit或TestNG的测试报告⽂件识别jenkins能跟踪每次构建⽣成哪些jar包以及使⽤哪个版本的jar包分布式构建插件⽀持jenkins可以通过第三⽅插件扩展,也可以根据团队需要开发插件Jenkins中的任务(Job)和构建(build)任务(Job)是Jenkins的⼀个执⾏计划,是⼀系列操作的集合,构建是Jenkins的任务的⼀次运⾏。
名词CI英⽂全称:Continuous Integration中⽂全称:持续集成⼯具持续集成是⼀种软件开发实践。
在持续集成中,团队成员频繁集成他们的⼯作成果,⼀般每⼈每天⾄少集成⼀次,也可以多次。
每次集成会经过⾃动构建(包括⾃动测试)的检验,以尽快发现集成错误。
SCM英⽂全称:Source Control Management (Software Version Control)中⽂全称:源码控制管理软件版本控制 3.怎么⽤jenkins?⾸先我们来安装: ♦1.安装jdk(现在2018/5/9的jenkins的版本y要使⽤Java jdk8以上的版本,⼀定要记得配置环境变量,安装配置教程很多也很详细,) ♦2.下载jenkins如下图步骤: 点击下载: ♦2-1.我是win7的我就下载这个了: ♦3.进⼊cmd窗⼝到下好的jenkins.war路径⾥⾯运⾏:Java -jar jenkins.war ♦4.该命令运⾏后会显⽰⼀下: ♦5.直到出现:算是安装成功。
jenkins详解Jenkins是⼀个功能强⼤的应⽤程序,允许持续集成和持续交付项⽬,⽆论⽤的是什么平台。
这是⼀个免费的源代码,可以处理任何类型的构建或持续集成。
集成Jenkins可以⽤于⼀些测试和部署技术。
Jenkins是⼀种软件允许持续集成。
开源的java语⾔开发持续集成⼯具,⽀持CI,CD。
易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可⽅便web界⾯配置管理。
消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,⽣成JUnit/TestNG测试报告。
分布式构建:⽀持Jenkins能够让多台计算机⼀起构建/测试。
⽂件识别:Jenkins能够跟踪哪次构建⽣成哪些jar,哪次构建使⽤哪个版本的jar等。
丰富的插件⽀持:⽀持扩展插件,你可以开发适合⾃⼰团队使⽤的⼯具,如git,svn,maven,docker等。
下载完后把它部署到你的tomcat上运⾏:放到tomcat的webapps⽬录下,启动tomcat(windows下双击startup.bat或者linux下运⾏sh startup.sh),然后通过浏览器访问,如我的电脑上访问:localhost:8080/jenkins 。
启动后的界⾯如下:然后到提⽰的⽂件中把⾥⾯的⽂本复制出来填到管理员密码中。
接下来选择安装推荐的插件,这个需要⼀定的时间。
最后额外推荐安装两个插件,在系统管理中可以安装插件:1、 Rebuilder2、 Safe Restart⼆、在linux服务器中安装git, maven,创建⼀个jenkens⽬录,配置git的公钥到你的github上,这些步骤是使⽤jenkins的前提。
安装git的⽬的是在⾃动化部署前实时从git远程仓库中拉取最新的代码。
在linux(我⽤的是centos系统)安装git:yum install git⽣成密钥:ssh-keygen -t rsa -C "youremail@"可以不设置密钥密码直接按三次回车。
持续集成Continuous integration简介(持续集成是什么).持续集成源于极限编程(XP),是一种软件实践,软件开发过程中集成步骤是一个漫长并且无法预测的过程。
集成过程中可能会爆发大量的问题,因此集成过程需要尽可能小而多,实际上持续集成讲的是不断的去做软件的集成工作。
持续集成作用(使用持续集成和不适用持续集成的区别)●场景一、某项目最后做模块集成的时候,发现很多接口都不通,甚至有的模块连安装包都没有。
●场景二、没有可用的软件包,需要人手动去编译打包最新的代码。
●场景三、搭建测试环境的时候需要手动去解压包然后一系列拷贝修改配置等等。
●场景四、团队成员或者teamleader想了解当前项目的状态,该如何去展示这些信息。
持续集成就是用来解决以上问题,它的价值主要在于减少重复的步骤,降低项目的风险,任何时间任何地点生成可用的软件,增强项目的可见性等。
持续集成实践(持续集成怎么做)持续集成,最简单的形式是包括一个监控版本控制系统(SVN等等)变化的工具。
当变化被发觉时,这个工具可以自动的编译并测试你的应用。
下面是持续集成中一些良好的实践●维护一个单一的代码库●使构建自动化●使构建自测试●每人每天都向主线提交代码●每次提交都应在集成机上进行构建●快速构建●使任何人都能轻易获得可执行文件●人人都能看到正在发生什么●自动化部署(上面是持续集成介绍,下面引出jenkins)jenkins简介持续集成是一种实践,而jenkins可以帮助团队去尽量好的去完成这种实践●Jenkins是基于java语言的开源持续集成工具,提供了一套非常易用的用户界面●jenkins类似于eclipse,基于插件化的架构,方便功能的扩展,目前有几百个现成插件可以使用,这些插件涵盖从版本控制、构建工具、代码质量、构建通知、集成外部系统、UI定制、游戏等等各个方面安装jenkinsjenkins默认提供了三种安装方式1.最简单的方式是通过java web的启动方式,访问/jenkins-the-definitive-guide默认第一次下载jenkins.jnlp即可启动2.下载可执行的war包启动jenkins3.部署到tomcat中(推荐)一个最简单的jenkins应用在介绍该应用前,先提及两个非常重要的概念●job一个完整的构建可能需要很多步骤,每个步骤都称作是一个job。
Jenkins 操作手册苏州测试部目录第 1 章概述 (1)第 2 章基础篇 (3)2.1 Jenkins安装 (3)2.1.1资源下载 (3)2.1.2运行Jenkins的前提 (3)2.1.3 Jenkins启动 (3)2.1.4 Jenkins访问 (4)2.2 Jenkins基本设置 (8)2.2.1设置JDK (9)2.2.2设置ANT (9)2.2.3配置邮件信息 (10)2.3 创建任务 (10)2.4 运行并监控构建作业 (15)2.4.1主控制面板 (15)2.4.2手动构建一个任务 (15)2.4.3任务构建状态 (16)第 3 章提高篇: (18)3.1 插件管理: (18)3.1.1 FindBugs 插件设置 (18)3.1.2 Ftp插件配置 (20)3.1.3 Junit插件 (21)3.1.4通过远程访问触发 (21)3.1.5 WebLogic.Deployer (21)3.2 安全篇 (22)3.3 个性化设置 (23)第 4 章常见问题 (25)4.1 edit lock问题 (25)4.2 IOException: Unable to delete问题 (25)4.3 not recognized as a valid application type 问题 (26)第 5 章其它说明 (27)5.1 CI挑战 (28)5.2 ANT基本知识 (28)第 1 章概述1.1什么是持续集成随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。
尤其是近些年来,敏捷(Agile)在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。
持续集成正是针对这一类问题的一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础。
它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。
持续集成Continuous integration简介(持续集成是什么).持续集成源于极限编程(XP),是一种软件实践,软件开发过程中集成步骤是一个漫长并且无法预测的过程。
集成过程中可能会爆发大量的问题,因此集成过程需要尽可能小而多,实际上持续集成讲的是不断的去做软件的集成工作。
持续集成作用(使用持续集成和不适用持续集成的区别)●场景一、某项目最后做模块集成的时候,发现很多接口都不通,甚至有的模块连安装包都没有。
●场景二、没有可用的软件包,需要人手动去编译打包最新的代码。
●场景三、搭建测试环境的时候需要手动去解压包然后一系列拷贝修改配置等等。
●场景四、团队成员或者teamleader想了解当前项目的状态,该如何去展示这些信息。
持续集成就是用来解决以上问题,它的价值主要在于减少重复的步骤,降低项目的风险,任何时间任何地点生成可用的软件,增强项目的可见性等。
持续集成实践(持续集成怎么做)持续集成,最简单的形式是包括一个监控版本控制系统(SVN等等)变化的工具。
当变化被发觉时,这个工具可以自动的编译并测试你的应用。
下面是持续集成中一些良好的实践●维护一个单一的代码库●使构建自动化●使构建自测试●每人每天都向主线提交代码●每次提交都应在集成机上进行构建●快速构建●使任何人都能轻易获得可执行文件●人人都能看到正在发生什么●自动化部署(上面是持续集成介绍,下面引出jenkins)jenkins简介持续集成是一种实践,而jenkins可以帮助团队去尽量好的去完成这种实践●Jenkins是基于java语言的开源持续集成工具,提供了一套非常易用的用户界面●jenkins类似于eclipse,基于插件化的架构,方便功能的扩展,目前有几百个现成插件可以使用,这些插件涵盖从版本控制、构建工具、代码质量、构建通知、集成外部系统、UI定制、游戏等等各个方面安装jenkinsjenkins默认提供了三种安装方式1.最简单的方式是通过java web的启动方式,访问/jenkins-the-definitive-guide默认第一次下载jenkins.jnlp即可启动2.下载可执行的war包启动jenkins3.部署到tomcat中(推荐)一个最简单的jenkins应用在介绍该应用前,先提及两个非常重要的概念●job一个完整的构建可能需要很多步骤,每个步骤都称作是一个job。
Jenkins详细教程⼀、jenkins是什么?Jenkins是⼀个开源的、提供友好操作界⾯的持续集成(CI)⼯具,起源于Hudson(Hudson是商⽤的),主要⽤于持续、⾃动的构建/测试软件项⽬、监控外部任务的运⾏(这个⽐较抽象,暂且写上,不做解释)。
Jenkins⽤Java语⾔编写,可在Tomcat等流⾏的servlet容器中运⾏,也可独⽴运⾏。
通常与版本管理⼯具(SCM)、构建⼯具结合使⽤。
常⽤的版本控制⼯具有SVN、GIT,构建⼯具有Maven、Ant、Gradle。
⼆、CI/CD是什么?CI(Continuous integration,中⽂意思是持续集成)是⼀种软件开发时间。
持续集成强调开发⼈员提交了新代码之后,⽴刻进⾏构建、(单元)测试。
根据测试结果,我们可以确定新代码和原有代码能否正确地集成在⼀起。
借⽤⽹络图⽚对CI加以理解。
CICD(Continuous Delivery,中⽂意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运⾏环境(类⽣产环境)中。
⽐如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。
如果代码没有问题,可以继续⼿动部署到⽣产环境。
下图反应的是CI/CD 的⼤概⼯作模式。
CI/CD三、使⽤Jenkins进⾏PHP代码(单元)测试、打包。
Jenkins是⼀个强⼤的CI⼯具,虽然本⾝使⽤Java开发,但也能⽤来做其他语⾔开发的项⽬CI。
下⾯讲解如何使⽤Jenkins创建⼀个构建任务。
登录Jenkins,点击左侧的新建,创建新的构建任务。
跳转到如下界⾯。
任务名称可以⾃⾏设定,但需要全局唯⼀。
输⼊名称后选择构建⼀个⾃由风格的软件项⽬(其他选项不作介绍)。
并点击下⽅的确定按钮即创建了⼀个构建任务。
之后会⾃动跳转到该job的配置页⾯。
新建⾃由风格的软件项⽬下图是构建任务设置界⾯,可以看到上⽅的⼏个选项"General", "源码管理", "构建触发器","构建环境", "构建", "构建后操作"。
第一章Jenkins是什么?Jenkins 是一个可扩展的持续集成引擎。
主要用于:•l 持续、自动地构建/测试软件项目。
•l 监控一些定时执行的任务。
Jenkins拥有的特性包括:•l 易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。
•l 易于配置-所有配置都是通过其提供的web界面实现。
•l 集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。
•l 生成JUnit/TestNG测试报告。
•l 分布式构建支持Jenkins能够让多台计算机一起构建/测试。
•l 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
•l 插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。
1 Jenkins的由来目前持续集成(CI)已成为当前许多软件开发团队在整个软件开发生命周期内侧重于保证代码质量的常见做法。
它是一种实践,旨在缓和和稳固软件的构建过程。
并且能够帮助您的开发团队应对如下挑战:•l 软件构建自动化:配置完成后,CI系统会依照预先制定的时间表,或者针对某一特定事件,对目标软件进行构建。
•l 构建可持续的自动化检查:CI系统能持续地获取新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构建。
这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力(说直接一点也是钱啊,呵呵)。
•l 构建可持续的自动化测试:构建检查的扩展部分,构建后执行预先制定的一套测试规则,完成后触发通知(Email,RSS等等)给相关的当事人。
•l 生成后后续过程的自动化 :当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。
这样,构件才能更迅速地提供给用户使用。
Jenkins使用说明Jenkins使用说明1.简介Jenkins是一个开源的持续集成工具,用于自动化构建、测试和部署软件项目。
本文档旨在提供详细说明,帮助用户了解和使用Jenkins。
2.安装2.1 系统要求确保您的系统满足Jenkins的最低要求,包括操作系统、硬件配置和软件依赖。
2.2 Jenkins从Jenkins官方网站最新的稳定版本,并根据操作系统进行安装。
2.3 配置根据安装方式,进行配置Jenkins,包括设置管理员账户、设置系统属性、插件管理等。
3.创建Jenkins任务3.1 新建任务登录Jenkins后台,“新建任务”,填写任务名称、选择任务类型等相关信息。
3.2 配置任务根据项目需求,配置任务的源码管理、构建触发方式、构建环境等设置。
3.3 构建步骤配置构建步骤,如编译代码、运行单元测试、文档等。
4.集成版本控制4.1 Git集成将Jenkins与Git整合,实现代码的自动拉取和触发构建。
4.2 SVN集成将Jenkins与SVN整合,实现代码的自动拉取和触发构建。
5.构建触发5.1 定时触发设置定时器,定时触发构建任务。
5.2 监听版本库通过监听版本库变更,触发构建任务。
5.3 Webhooks集成配置Webhooks,当代码仓库有变更时,自动通知Jenkins触发构建。
6.构建报告6.1 测试结果报告配置测试框架和测试报告插件,测试结果报告。
6.2 代码覆盖率报告配置代码覆盖率工具和插件,代码覆盖率报告。
7.部署7.1 自动化部署配置自动化部署工具,实现持续集成的自动部署。
7.2 脚本部署通过编写脚本,实现定制化的软件部署流程。
8.持续集成与测试8.1 并行构建配置Jenkins支持并行构建,提高构建效率。
8.2 多节点构建配置Jenkins在多个节点上同时执行构建任务,实现分布式构建。
9.性能监控与优化9.1 监控插件通过安装监控插件,实时监控Jenkins服务器的性能。
持续集成Continuous integration简介(持续集成是什么).持续集成源于极限编程(XP),是一种软件实践,软件开发过程中集成步骤是一个漫长并且无法预测的过程。
集成过程中可能会爆发大量的问题,因此集成过程需要尽可能小而多,实际上持续集成讲的是不断的去做软件的集成工作。
持续集成作用(使用持续集成和不适用持续集成的区别)●场景一、某项目最后做模块集成的时候,发现很多接口都不通,甚至有的模块连安装包都没有。
●场景二、没有可用的软件包,需要人手动去编译打包最新的代码。
●场景三、搭建测试环境的时候需要手动去解压包然后一系列拷贝修改配置等等。
●场景四、团队成员或者teamleader想了解当前项目的状态,该如何去展示这些信息。
持续集成就是用来解决以上问题,它的价值主要在于减少重复的步骤,降低项目的风险,任何时间任何地点生成可用的软件,增强项目的可见性等。
持续集成实践(持续集成怎么做)持续集成,最简单的形式是包括一个监控版本控制系统(SVN等等)变化的工具。
当变化被发觉时,这个工具可以自动的编译并测试你的应用。
下面是持续集成中一些良好的实践●维护一个单一的代码库●使构建自动化●使构建自测试●每人每天都向主线提交代码●每次提交都应在集成机上进行构建●快速构建●使任何人都能轻易获得可执行文件●人人都能看到正在发生什么●自动化部署(上面是持续集成介绍,下面引出jenkins)jenkins简介持续集成是一种实践,而jenkins可以帮助团队去尽量好的去完成这种实践●Jenkins是基于java语言的开源持续集成工具,提供了一套非常易用的用户界面●jenkins类似于eclipse,基于插件化的架构,方便功能的扩展,目前有几百个现成插件可以使用,这些插件涵盖从版本控制、构建工具、代码质量、构建通知、集成外部系统、UI定制、游戏等等各个方面安装jenkinsjenkins默认提供了三种安装方式1.最简单的方式是通过java web的启动方式,访问默认第一次下载jenkins.jnlp即可启动2.下载可执行的war包启动jenkins3.部署到tomcat中(推荐)一个最简单的jenkins应用在介绍该应用前,先提及两个非常重要的概念●job一个完整的构建可能需要很多步骤,每个步骤都称作是一个job。
一个job是一个专一做某事的步骤,比如编译,测试,打包,部署等等。
jenkins中默认提供了四种不同类型的job●Jenkins家目录jenkins为每个项目都会建立一个workspace目录,源码会下载到这个目录下,然后编译等动作都在该目录中进行。
下面是一个jenkins的家目录结构jobs下面按照项目的维度进行划分,每个项目下有builds和workspace目录,其中源码会保存在各个项目的workspace中,builds目录包含构建的历史记录。
假设项目基于svn控制系统,并且有简单的编译打包脚本。
该应用要实现的功能是——检测到代码提交后触发构建动作,调用已有的编译打包脚本生成可用的软件包。
(上面的配置步骤就不列出来了,想讲的话可以大概讲讲也可以截图)这个最简单的jenkins应用执行的原理是应用svn的插件,当有代码提交的时候被插件检测到,jenkins将源码下载到本地的workspace(包括编译打包脚本),此时jenkins调用本地项目源码中的编译打包脚本(在配置job的时候指定)。
这就是最简单的一个流程,复杂的流水线构建都是基于此而完善的。
触发构建的条件除了上面提到的提交构建,能够触发构建的方式还有以下几种●隔某段时间构建一次,比如隔一小时自动构建一次。
●定时轮询SCM的改变去触发构建,比如隔一小时去轮询一次svn是否有更改,有的话触发构建,否则不做处理。
●手动构建自动化测试Jenkins不仅仅能做源码编译打包的动作,Jenkins中有很多插件可以方便的实现自动化测试。
●单元测试●功能测试●集成测试●性能测试●验收测试进行自动化测试仅仅是一部分功能,关于测试结果的收集和展示jenkins也能够做到,并且是以图形化的方式展示出来。
只需要告诉jenkins测试结果在哪里,它会自动去取,并生成可视化的图形。
另外一种关于自动化测试的是代码的覆盖率,jenkins同样支持对代码覆盖率的统计。
上图中的自动化测试给出详细的失败列表通知持续集成讲究的是快速的发现问题,尽早的发现问题,因此当出现问题(编译失败,用例通过率不足等)时需要有通知的手段让相关的人员了解情况。
Jenkins提供了丰富的通知插件,最常用的是Email通知,当然除此之外还有●即时通讯软件●IRC●桌面通知代码质量代码质量的度量同样也非常重要,比如圈复杂度,checkstyle,findbugs等等的静态检查。
这些检查都可以使用jenkins的插件完成,jenkins负责收集质量结果,做图形展示,很方便开发人员根据质量结果进行代码重构。
自动化部署自动化部署目的就是减少不必要的时间。
最简单的是自己实现部署的脚本然后供jenkins去调用,但是对于复杂的部署需求,自己实现脚本恐怕有些力不从心,我们可以借助插件完成——Puppet或者Chef。
对于数据库的自动化部署同样有插件供我们选择比如Liquibase。
Jenkins的高级功能●高级构建参数构建类似普通的构建任务,但是功能更强大。
可以为本次构建指定一些参数,这些参数可能会在某几个构建中被使用到,参数的传递由jenkins去维护。
由此一个普通的构建通过获取不同的参数能够表现的更多样化。
更强大的是多配置构建,类似参数构建,提供一个配置列表,比如针对不同的数据库或者浏览器的列表,jenkins会自动的执行不同场景下的测试,这些测试可以并行的执行,从而大大的减少了测试的时间。
●分布式构建jenkins也支持master/slave的分布式方式,master主要用来分发构建任务给slave,实际的执行在slave中。
Master监控slave的状态,并收集展示构建的结果。
但是在实际情况中master同样可以执行构建任务。
可以通过master指定某个项目总是运行在特定的slave或者某类slave或者简单的任何一台slave中。
分布式构建中,jenkins提供了对代理节点的监控,如果发现某台slave不可用,则会主动将其下线,避免后续的任务被分配到该节点上。
●流水线所谓的流水线很容易理解,就是整个构建流程按照一定的流程去构建。
当你的构建步骤变得复杂的时候,并且并行和串行都有的时候,通常就不太容易管理了。
流水线能够方便的定义某个构建后要触发的下一个构建,或者同时触发的后面几个构建。
当然也能够等待某几个构建执行完毕后去执行某一个构建。
其中TheDependency Graph View插件能够帮助你分析构建任务之间的关系。
并且如果涉及到构建的资源竞争,也提供了锁的功能。
●jenkins安全管理jenkins中有多个维度来管理安全,一个是安全域,一个是授权。
安全域能够识别出合法的用户,授权则是针对合法的用户给出不同的权限。
最简单的授权是允许所有的合法用户做任何事情。
最简单的管理用户账号的方式是使用jenkins内建的数据库,但是也能够和其他的用户管理系统做集成。
针对授权有好多种不同的策略,比如基于项目,基于角色。
另外一种重要的功能是审计,也就是记录用户的操作日志。
有两种插件能够实现该功能。
Audit Trail插件能够记录用户的操作动作。
JobConfigHistory插件能够存储前一个版本系统的变化和job的配置文件。
后面的内容是可选的,可以讲也可以不讲。
总结:持续集成一般会经历一下几个阶段●阶段一—没有构建服务器最初的阶段,团队没有任何一种构建服务器。
软件由开发人员手动的去构建,尽管使用的是Ant脚本或者类似的东西。
源码可能存储在一个中央源码仓库中,但是开发者未必要定期的提交更改后的代码。
有时候在一个版本要发布的时候,开发人员手动的去集成这些变化,这是一个非常痛苦的过程。
●阶段二—夜间的构建在这个阶段,团队有一台构建服务器,并且定时的去执行构建任务(通常在夜里)。
因为并没有一个可靠的可重复的单元测试,所以这里的构建通常只是代码编译。
如果有自动化测试,也并没有强制集成到构建阶段,也许根本不会正确的运行。
但是现在开发人员已经能够有规律的定期提交代码了,至少在每天下班前。
如果一个开发人员提交的代码和另外一个人有冲突,构建服务器会在第二天的早上将告警通过邮件发出来。
然而,整个团队只是将构建服务器作为一个参考—如果构建挂了,他们并没有意识去立即把它修复好,因此构建可能会在一段时间内不可用。
●阶段三—夜间构建和基本的自动化测试团队现在已经更加严格的使用持续集成和自动化测试了。
构建服务器被配置为当有代码提交的时候便会执行构建,团队的成员也可以很方便的看到是哪些代码中的变化引起了构建,这些变化引发了什么问题。
除此之外,构建脚本编译应用并且自动的执行一些单元和集成测试。
对于邮件,构建服务器能够更加积极主动的去呈现构建中出现的问题。
失败的构建也能够被快速的修复。
●阶段四—进入度量自动化的代码质量和覆盖率度量也能够执行了,并且可以帮助评估代码的质量和测试的相关性和有效性。
代码质量的构建也能够为应用生成API文档。
所有的这些帮助团队去维护高质量的代码。
团队中可以设置一个醒目的屏幕去时刻展现项目的状态。
●阶段五—更严格的测试持续集成的好处是非常接近立体的测试。
现在,测试驱动开发(TDD)被广泛的应用,对于自动构建的结果更加的有信心。
对于应用程序不再是简单的编译和测试,而是会继续更复杂的端到端测试和性能测试。
●阶段六—自动化验收测试和自动化部署验收测试驱动开发(Acceptance-Test Driven Development)在这个阶段被应用,引导开发的工作并且提针对项目的状态提供一个高层次的报告。
这些自动化测试使用行为驱动测试(Behavior-Driven Development)和验收测试驱动开发工具,并且从商业的角度生成开发人员不理解的报告。
因为这些高层次的测试在项目的早期开展,因此能够清晰的指出,哪些特性已经完成了,哪些需要后面去完成。
每当代码有改变或者夜里,应用程序被自动的部署到QA的测试环境来完成测试。
当测试人员完成了充分的测试后,应用程序可以被一键式的部署到生产环境。
当然也能够通过构建工具去备份当前的发布版本,或者当有问题出现的时候,回归当前的版本。
●阶段七—持续部署处于对自动化的单元、集成、验收测试的信任,现在团队能够应用自动化部署技术,直接将新的特性增加到前一个版本中,该版本处在生产环境中。
这些阶段可以是按部就班的来,但有时候也不一定非得按照上面的步骤,比如在集成代码质量和覆盖率测试之前可以先完成自动化的web测试。