jenkins持续集成

基本知识
一、持续集成html

持续集成(Continuous integration,简称 CI),什么是持续集成?借用一张图说明
这里写图片描述
* 持续集成是指对于开发人员的每一次代码提交,都自动地把Repository中全部代码Check out到一个空目录,而且自动运行全部Test Case,以此快速的完成开发。
* 持续集成的目的,就是让产品能够快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干以前,必须经过自动化测试。只要有一个测试用例失败,就不能集成git

二、持续交付web

持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。若是评审经过,代码就进入生产阶段。
持续交付能够看做持续集成的下一步。它强调的是,无论怎么更新,软件是随时随地能够交付的。数据库

三、持续部署apache

持续部署(continuous deployment)是持续交付的下一步,指的是代码经过评审之后,自动部署到生产环境。
持续部署的目标是,代码在任什么时候刻都是可部署的,能够进入生产阶段。
持续部署的前提是能自动化完成测试、构建、部署等步骤。它与持续交付的区别,能够参考下图。tomcat

四、流程服务器

根据持续集成的设计,代码从提交到生产,整个过程有如下几步。app

4.1 提交

流程的第一步,是开发者向代码仓库提交代码。全部后面的步骤都始于本地代码的一次提交(commit)。webapp

4.2 测试(第一轮)

代码仓库对 commit 操做配置了钩子(hook),只要提交代码或者合并进主干,就会跑自动化测试。
测试有好几种。
单元测试:针对函数或模块的测试
集成测试:针对总体产品的某个功能的测试,又称功能测试
端对端测试:从用户界面直达数据库的全链路测试
第一轮至少要跑单元测试。ide

4.3 构建

经过第一轮测试,代码就能够合并进主干,就算能够交付了。
交付后,就先进行构建(build),再进入第二轮测试。所谓构建,指的是将源码转换为能够运行的实际代码,好比安装依赖,配置各类资源(样式表、JS 脚本、图片)等等。
经常使用的构建工具以下。
Jenkins
Travis
Codeship
Strider
Jenkins 和 Strider 是开源软件,Travis 和 Codeship 对于开源项目能够无偿使用。它们都会将构建和测试,在一次运行中执行完成。

4.4 测试(第二轮)

构建完成,就要进行第二轮测试。若是第一轮已经涵盖了全部测试内容,第二轮能够省略,固然,这时构建步骤也要移到第一轮测试前面。
第二轮是全面测试,单元测试和集成测试都会跑,有条件的话,也要作端对端测试。全部测试以自动化为主,少数没法自动化的测试用例,就要人工跑。
须要强调的是,新版本的每个更新点都必须测试到。若是测试的覆盖率不高,进入后面的部署阶段后,极可能会出现严重的问题。

4.5 部署

经过了第二轮测试,当前代码就是一个能够直接部署的版本(artifact)。将这个版本的全部文件打包( tar filename.tar * )存档,发到生产服务器。
生产服务器将打包文件,解包成本地的一个目录,再将运行路径的符号连接(symlink)指向这个目录,而后从新启动应用。这方面的部署工具备 Ansible,Chef,Puppet等。

4.6 回滚

一旦当前版本发生问题,就要回滚到上一个版本的构建结果。最简单的作法就是修改一下符号连接,指向上一个版本的目录。

持续集成管理工具jenkins
做用:1.定时拉取代码并编译,2.静态代码分析,3.定时打包发布测试版,4.自定义额外的操做,如跑单元测试等,5.出错提醒。

安装tomcat,将Jenkins安装在tomacat的webapps文件夹下。
启动服务:tomcat中bin文件下startup.bat,第一次会自动跳转进入服务界面,用户名为admin,密码在initialAdminPassword中。
设置后关闭访问:http://www.noobyard.com/tag/http://localhost:8080

连接:
Tomcat—http://tomcat.apache.org/
Jenkins–https://jenkins.io/
参考:http://network.51cto.com/art/201801/563064.htm
参考:https://www.git-tower.com/learn/git/ebook/cn/command-line/advanced-topics/submodules#start

目前在线参考文档;http://www.jenkins.org.cn/819.html(比较好的文档)