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

部署一个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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章