关闭

Jenkins持续集成入门

标签: Jenkins持续集成
296人阅读 评论(0) 收藏 举报
分类:

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 生成后后续过程的自动化 :当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户使用。

部署一个CI系统需要的最低要求是,一个可获取的源代码的仓库,一个包含构建脚本的项目。

下图概括了CI系统的基本结构:

 

该系统的各个组成部分是按如下顺序来发挥作用的:

1. 开发者检入代码到源代码仓库。

2. CI系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。

3. CI系统会在对应的工作区内执行构建过程。

4. (配置如果存在)构建完成后,CI系统会在一个新的构件中执行定义的一套测试。完成后触发通知(Email,RSS等等)给相关的当事人。

5. (配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器)或存储为软件仓库中的一个新版本。软件仓库可以是CI系统的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像Java.net、 SourceForge之类的网站。

6. CI系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。

Jenkins就是这么一个CI系统。之前叫做Hudson。




一、安装

1、下载安装JDK,需修改环境变量,/etc/profile

#java
export JAVA_HOME=/apps/svr/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=${JAVA_HOME}/jre

2、下载安装tomcat,修改tomcat的启动脚本,<安装目录>/tomcat-jenkins/bin/catalina.sh

下载 Apache Tomcat 8.0.32 官方压缩包:http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.32/bin/apache-tomcat-8.0.32.tar.gz

解压Tomcat压缩包到安装目录。例如安装目录为:/apps/svr/tomcat-jenkins。

查找以下这句代码:
#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
 
替换成以下代码:
LOGDIR=${CATALINA_BASE}/logs
JMX_PORT=9091
if [ -d /dev/shm/ ]; then
  GC_LOG_FILE=/dev/shm/gc-jenkins.log
else
  GC_LOG_FILE=${LOGDIR}/gc-jenkins.log
fi
JAVA_OPTS="-Dhudson.DNSMultiCast.disabled=true -Dhudson.model.DownloadService.noSignatureCheck=true -XX:+PrintCommandLineFlags -XX:-OmitStackTraceInFastThrow -XX:-UseBiasedLocking -XX:-UseCounterDecay -XX:AutoBoxCacheMax=20000 -Djava.net.preferIPv4Stack=true
-server -Xms2048m -Xmx2048m -XX:NewRatio=1 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxTenuringThreshold=6 -XX:+ExplicitGCInvokesConcurrent
-Xloggc:${GC_LOG_FILE} -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:ErrorFile=${LOGDIR}/hs_err.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOGDIR}/
-Dcom.sun.management.jmxremote.port=${JMX_PORT} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=127.0.0.1
-XX:PermSize=256m -XX:MaxPermSize=512m"


3、下载jenkins.war :http://ftp-nyc.osuosl.org/pub/jenkins/war/2.13/jenkins.war

把jenkins.war复制到tomcat的webapps目录下,例如:/apps/svr/tomcat-jenkins/webapps。

修改环境变量/etc/profile:export JENKINS_HOME=/var/lib/jenkins。并且刷新生效source  /etc/profile

4、编写启动脚本jenkins.sh:java -jar /var/lib/jenkins/jenkins.war --httpPort=9090。并启动 nohup sh jenkins.sh &

5、安装插件(Jenkins首页--系统管理--插件管理--可选插件,勾选即可

若云机不能了连接外网,则需手动下载插件,并上传(Jenkins首页--系统管理--插件管理--高级--上传插件)

插件下载地址--http://updates.jenkins-ci.org/download/plugins/<plugin-name>/<revision>/<plugin-name>.hpi




0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Centos 下 Jenkins2.6 + Git + Maven Shell一件部署与备份

非常感谢 http://blog.battcn.com/2017/07/21/jenkins-novice-config/ - 下载Jenkins2.6 官方网站:h...
  • HUXU981598436
  • HUXU981598436
  • 2017-07-25 09:56
  • 319

Jenkins学习总结(4)——持续集成,持续交付,持续部署之间的区别

经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢? 假如把开发工作流程分为以下几个阶段: 编码 -> 构建 -> 集成 -> 测试 -> 交付 ...
  • u012562943
  • u012562943
  • 2016-08-04 17:32
  • 3295

[jenkins工具]之一:持续集成和jenkins入门介绍

持续集成开发中,我们经常遇到一些奇怪问题,比如本地可以编译成功的代码但是同事们更新代码后编译出错,或者在项目有多个Target的时候,资源文件只添加到了当前的Target,另外一个Target这个时候...
  • yoxiyehei_wzx
  • yoxiyehei_wzx
  • 2016-09-01 16:29
  • 656

Jenkins 持续集成综合实战

Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。本文以 CentOS7 环境为例,总结了 Jenkin...
  • kefengwang
  • kefengwang
  • 2017-01-08 13:59
  • 5172

持续集成 之 Jenkins

持续集成 之 Jenkins
  • benkaoya
  • benkaoya
  • 2015-09-23 17:45
  • 48205

基于Jenkins快速搭建持续集成环境

看了园友张善友的博文,尝试成功.便有此作.原网址:http://www.cnblogs.com/shanyou/p/3750714.html   天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难...
  • dz45693
  • dz45693
  • 2016-06-06 11:25
  • 1880

Jenkins持续集成 安装及使用

jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作。 可以用它做网站代码提交,更新。 1,安装 首先确保目标机器上装有 java jdk 版本最好在 1.5 以上,小编使用的是...
  • fengruichao
  • fengruichao
  • 2017-02-04 11:36
  • 284

Jenkins持续集成

Jenkins是一个持续集成的工具,可以应用在任何一种开发环境下,不过这也得需要安装不同的插件来支持。 Jenkins持续集成的构建过程就是:不断从SVN上检查代码状态,如果有更新,那么就从SVN...
  • u010096526
  • u010096526
  • 2015-01-20 11:36
  • 1198

手游项目使用Jenkins搭建持续集成系统

正忙于工作,却被打断要给市场部门打个包? 测试部门要求每天有新的版本,可以验证bug? 策划要求每天有新的版本,可以跟进审查? 每次集成版本,总担心合并带来问题,要把主要模块手动跑个遍? 如果...
  • wtyqm
  • wtyqm
  • 2014-03-27 13:54
  • 7151

在Linux上使用Jenkins持续集成JavaWeb项目

什么是Jenkis?Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 用于监控持续重复的工作,功能包括: 1、持续的软件版本发布/测试项目。 2、监控...
  • zl199307
  • zl199307
  • 2017-04-07 14:05
  • 1523
    个人资料
    • 访问:40886次
    • 积分:655
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:12篇
    • 译文:0篇
    • 评论:4条
    最新评论