1.定义

持续集成(Continuous integration),简称CI。

随着软件项目复杂度的增加,就会对集成和确保软件组件能够在一起工作提出了更多的要求-要早集成、常集成。

CI不是一项软件开发实践,而是多项软件开发实践的集合。

2.持续继承与敏捷编程

在敏捷领域中,测试驱动TDD和持续集成CI被称为敏捷编程XP的两大基石,于是乎,很多人的概念里就是持续集成是为了实现敏捷编程的。

这是一个错误的认识。实际上,早于敏捷编程概念的提出,持续集成作为一个best practice就已经被很多公司采用了,只不过作为一个概念,

则是由Martin大叔为了推进敏捷所倡导并由此风靡起来。持续集成本身只是一种practice,并不被什么开发模型所限制,在任何一种开发模型中都可以采用,也可以运行得非常理想。

3.为什么要做持续集成

易于定位错误。也就是当你的持续集成失败了,说明你新加的代码或者修改的代码引起了错误。

及早在项目里取得系统级的成果。因为代码已经被集成起来了,所以即使整个系统还不是那么可用,但至少你和你的团队都已经可以看到它已经在那了。

改善对进度的控制。这点非常明显,每天都可以看到哪些功能可以使用,哪些功能还没有实现。。

改善客户关系。理由同上。

更加充分地测试系统中的各个单元。这也是我们常讲的Daily Build与Smoke Test相结合带来的绝大好处。

能在更短的时间里建造整个系统。

有助于项目的开发数据的收集。比如说,项目代码量的变化,经常出错的Tests,经常出错的source code等。

与其它工具结合的持续代码质量改进。如与CheckStyle,FindBugs等等的结合。

与测试工具或者框架结合的持续测试。如与xUnit,SilkTest, LoadRunner等等的结合。

便于Code Review。在每个build里,我们都可以知道与前一个build之间有什么改动,然后针对这些改动,我们就可以实施Code Review了。

便于开发流程的管理。要把一个开发的build提交给测试组作测试,测完满意了,再提交到发布组去发布。

4.持续集成的架构图

5.Jenkins

Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
 
6.Jenkins安装

前置条件:
jdk         注意需要Java 5以及以上的版本
tomcat
Maven
配置环境变量,修改端口等。
Jenkins安装:
下载war
部署到tomcat中
启动tomcat
访问:http://192.168.18.63:8080/jenkins,按步骤填写完成部署。

6.使用

  1. 项目名称
  2. 自定义工作目录
  3. 配置svn地址,用户名,密码
  4. Build periodically 0 1 * * *
  5. Poll SCM */5 * * * *
  6. Invoke top-level Maven targets mvn package
  7. Execute shell
  8. 构建后操作:FindBugs,Junit Test,Email等

自动部署执行的shell脚本:

  1. BUILD_ID=dontkillme 防止job完成后tomcat启动终端,原因未知。
  2. sh /opt/tomcat/bin/shutdown.sh
  3. sleep 5
  4. rm -rf /opt/tomcat/webapps/cmcciw /opt/tomcat/webapps/cmcciw.war
  5. cp target/cmcciw.war /opt/tomcat/webapps/
  6. sleep 10
  7. sh /opt/tomcat/bin/startup.sh
 

简单介绍Jenkins&持续集成的更多相关文章

  1. jenkins持续集成工作原理、功能、部署方式等介绍

    超详细的jenkins持续集成工作原理.功能.部署方式等介绍 原创 波波说运维 2019-08-29 00:01:00 概述 今天简单整理了一下jenkins的一些概念性内容,归纳如下: 1.概念 j ...

  2. Docker+Jenkins持续集成环境(4):使用etcd+confd实现容器服务注册与发现

    前面我们已经通过jenkins+docker搭建了基本的持续集成环境,实现了服务的自动构建和部署,但是,我们遇到一个问题,jenkins构建出来的镜像部署后,需要通过ip:port去访问,有什么更好的 ...

  3. Docker+Jenkins持续集成环境(5): android构建与apk发布

    项目组除了常规的java项目,还有不少android项目,如何使用jenkins来实现自动构建呢?本文会介绍安卓项目通过jenkins构建的方法,并设计开发一个类似蒲公英的app托管平台. andro ...

  4. Jenkins持续集成学习-Windows环境进行.Net开发2

    目录 Jenkins持续集成学习-Windows环境进行.Net开发2 目录 前言 目标 使用 .Net Stardard 单元测试 流程 手动执行单元测试 自动执行单元测试 单元测试报告 上传Nug ...

  5. .NET持续集成与自动化部署之路第一篇——半天搭建你的Jenkins持续集成与自动化部署系统

    .NET持续集成与自动化部署之路第一篇(半天搭建你的Jenkins持续集成与自动化部署系统) 前言     相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛 ...

  6. Jenkins持续集成【简介】

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

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

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

  8. Windows系统的Jenkins持续集成环境

    Windows系统的Jenkins持续集成环境 如题:本文将介绍如何在Windows环境下运用Jenkins部署持续集成环境.之所以写本文,是因为在最近工作当中,学习使用Jenkins时,确实遇到了一 ...

  9. Docker+Jenkins持续集成

    Docker+Jenkins持续集成 使用etcd+confd实现容器服务注册与发现   前面我们已经通过jenkins+docker搭建了基本的持续集成环境,实现了服务的自动构建和部署,但是,我们遇 ...

随机推荐

  1. TFSEclipsePlugin-UpdateSiteArchive 手动拷贝

  2. handlebars自定义helper方法

    handlebars相对来讲算一个轻量级.高性能的模板引擎,因其简单.直观.不污染HTML的特性,我个人特别喜欢.另一方面,handlebars作为一个logicless的模板,不支持特别复杂的表达式 ...

  3. 【转】gem install libv8 错误

    转自:http://my.oschina.net/moks/blog/200344 [摘要]Because libv8 is the interface for the V8 engine used ...

  4. 发任务找不到test-unit报错

    发任务的时候因找不到gem包test-unit报错, 出错行: require 'test/unit' require 'test/unit/testresult' 解决办法如下 1.通过命令查看ge ...

  5. Celery-4.1 用户指南: Daemonization (系统守护进程)

    Generic init-scripts 查看Celery发布里的 extra/generic-init.d/ 文件夹. 这个文件夹中包含了celery worker 程序的通用bash初始化脚本,可 ...

  6. python 函数和方法的区别

    一.函数和方法的区别 1.函数要手动传self,方法不用传 2.如果是一个函数,用类名去调用,如果是一个额方法,用对象去调用 举例说明: class Foo(object): def __init__ ...

  7. 问题:C#将base64转换成二进制图片;结果:c# Base64编码和图片的互相转换代码

    c# Base64编码和图片的互相转换代码 Base64编码在Web方面有很多应用,譬如在URL.电子邮件方面.网上有很多相关的资源用于提供Base64编码和其他编码的转换,.Net Framewor ...

  8. spring 的aop操作

  9. C语言获取系统时间

    localtime函数 #include <stdio.h> #include <time.h> int main () { time_t t; struct tm *lt; ...

  10. 线段树教做人系列(1)HDU4967 Handling the Past

    题意:给你n组操作,分别为压栈,出栈,询问栈顶元素.每一组操作有一个时间戳,每次询问栈顶的元素的操作询问的是在他之前出现的操作,而且时间戳小于它的情况.题目中不会出现栈为空而且出栈的情况. 例如: p ...