Jenkins全流程搭建

第 1 章 概 述

 持续集成(CI)是一种实践,旨在缓和和稳固软件的构建过程。持续集成最早由Martin Fowler 于10年前已经提出,希望通过持续集成能够实现以下过程:

Ø  任何人在任何地点,任何时间可以构建整个项目。

Ø  在持续集成构建过程中,每一个单元测试都必须被执行。

Ø  在持续集成构建过程中,每一个单元测试都必须通过。

Ø  持续集成构建的结果是可以发布的软件包。

Ø  当以上任何一点不能满足时,整个团队的主要任务就是去解决这个问题。

Jenkins是一个软件界非常流行的开源CI服务器,下面主要做一些基础介绍。


第 2 章 基础篇

2.1 Jenkins安装

2.1.1 资源下载

首先从http://Jenkins-ci.org/下载Jenkins的安装版本。双击安装文件进行安装(不推荐jar包形式安装);

另外,还需要下载jdk的安装包,建议1.5以上版本;

2.1.2 运行Jenkins的前提

1)        环境变量的设置(斜体为必选项):

a)        JAVA_HOME,设置JDK的安装目录,建议采用JDK1.5以上

b)        ANT_HOME,设置Ant的目录,建议采用ant最新版本1.8

c)        JENKINS_HOME,设置Jenkins的配置文件目录,默认为用户的目录,建议为Jenkins的安装目录,便于控制;

d)        PATH,需要将javaant的目录配置到path目录下;

e)        CLASSPATH,需要将JDK的tools.jar配置到CLASSPATH下;

2)        其他外部条件(非必要

a)        需要WebLogic923的远程控制的jar文件,文件有weblogic_sp.jarweblogic.jarwebservices.jar三个jar文件,这三个文件位于WebLogic安装目录的相对目录server\lib下;

b)        将上述三个jar配置到系统的CLASSPATH环境变量中;

2.1.3 Jenkins启动

1)对于Jenkins.war安装的情况,可以有两种方法进行运行Jenkins;

a)        直接通过命令行

转到Jenkins.war所在的目录,当前为D:\Jenkins

java -jar Jenkins.war --httpPort=8080 –prefix=Jenkins

说明:httpPort为Jenkins运行的端口,默认端口为8080,上述命令其实Jenkins运行在Winstone容器中;

b)        在Web容器中运行

Jenkins可以运行在标准的Web服务器中,支持Tomcat、Jboss、WebLogic中,只需要将Jenkins.war放置到相应目录,启动服务就可以进行访问;

2)对于服务形式安装的jinkens,默认开机后直接在地址栏输入http://localhost:8080即可进入其主页;

2.1.4 Jenkins访问

验证Jenkins是否运行正常,通过访问http://hostIP:port/Jenkins即可。


2.2  Jenkins基本设置

  Jenkins的基本设置都在系统的后台设置中,类似于Windows的控制面板。

2.2.1 设置JDK(系统管理->GlobalTool Configuration)


2.2.2 设置ANT(系统管理->GlobalTool Configuration)

可以在这里进行ANT_HOME设置,假如系统已经设置了ANT_HOME,可以不需要再进行配置,同时可以让Jenkins安装一个最新的ANT。

备注:为了让配置更加简单,建议在系统级设置JAVA_HOME和ANT_HOME,便于系统的迁移。

2.2.3 配置邮件信息(系统管理->系统设置)


系统能够在执行计划完成后发送结果邮件,需要配置邮件服务器的相关信息:

上面还需要配置Jenkins的URL地址,作为后期访问地址,一旦设定URL,就不要轻易修改。


2.2.4 创建工程示例

在Jenkins主菜单点击“新建任务”,出现下图:

键入任务名称,选择“构建一个自由风格的软件项目”选项,点击“OK”按钮后,出现下面的界面:

说明:

a)        项目名称(Projectname):项目(任务)名称不能重复,后面通称任务;

b)        描述(Description):,主要对任务进行简要说明;

c)        丢弃旧的构建(Discardold builds):是否保留过去的构建,默认是保留。(帮助:这里控制着您想要在Jenkins所在的磁盘把构建记录存储的有效期(诸如控制台输出、编译构件等等)。Jenkins为此提供了两个标准:1。时间驱动。在Jenkins中您可以判断如果达到一定时限来删除一条记录(例如,七天前)。2。数量驱动。在Jenkins中您可以确保它拥有N份构建。如果又有新的构建开始,最早的那份(记录)就将被删除。Jenkins也可以让您建立的个别构建定义为'永远保持这个记录',以便防止某些重要的构建被自动丢弃。)

d)        参数化构建过程(Thisbuild is parameterized): 如果选择此选项,Jenkins将允许您提供一套任意的键值对参数,它们会被传递到构建过程里。配置的参数往往是构建运行环境中的一些环境变量。(帮助:当您使用了Jenkins的各种自动化,有时要求在构建过程中提供一组用户的输入,使用“parameterize”就能够更方便构建。例如,您可能会设立一个按需测试,在那里用户可以提交一个二进制文件的压缩文件来进行测试。

e)        关闭构建(DisableBuild):禁止此任务进行构建,默认是不禁止;

f)         在必要时并发构建(Executeconcurrent builds if necessary)

g)        Advanced Project Options

1)    Quiteperiod:构建前等待时间;

2)    RetryCount:从SCM仓库中取出尝试时间;

3)    Blockbuild when upstream project is building:假如上一个仍在构建过程中,停止本次构建任务;

4)    Usecustom workspace:指定当前任务的workspace,否则默认为JENKINS_HOME的工作目录

h)        Source Code Management:指定编译源代码的获取方式:


1)    None:手动方式;

2)    Git:从Git仓库中获取;

3)    SVN:从SVN仓库中获取;

a)        Builds Triggers:设置构建触发器

1)    触发远程构建

2)    Buildafter other projects are built:设置构建的流水线,配置在设置的任务构建完成后自动构建此任务,进行设置后,可以在任务统揽中看到以下“下游项目说明”(操作步骤略)

1)    Build peridically

2)    Github hook trigger builds remotely (e.g., fromscripts):设置远程触发进行任务构建;

3)     Build periodically:设置构建频率,设置跟QuartzCronTrigger设置雷同;

4)     PollSCM:设置从SCM库中检查源代码是否更新:

备注:关于第五和第六两点,基本配置为

分钟 小时 天 月 星期

举例: 每分钟进行集成 * * * * *, 每5分钟进行集成5 * * * *,每天12点和23整点进行集成 0 12,23 * * *

a)        Build Environment:设置构建环境设置

1)    Deleteworkspace before build starts

2)    Abortthe build if it`s stuck

3)    Addtimestamps to the Console Output

4)    Usesecret text(s) of file(s)

b)        Build:执行构建

构建支持6种方式,shell(运行于Linux环境)、Maven(支持Maven编译)、Command(windows批处理命令)、Ant、EasyAnt、Export job runtime parameters。

举例:

1)    InvokeAnt:

备注:

Ø  Targets主要是执行ant脚本中哪几个部分,可以添加多个;

Ø  BuildFile:需要指定Ant脚本的物理位置;

Ø  Properties:添加Ant指定的属性;

Ø  JavaOptions:设置运行java时的属性,例如内存、堆大小等;

2)    ExecuteWindows batch command


备注:执行Windows的批处理命令,这里不能利用Hodson设置的变量;

a)        构建后操作

1)    PublishJavadoc:设置构建时产生JavaDoc时的文件目录;

2)    Archivethe artifacts:设置构建后哪些文件需要进行归档处理;

3)    E-mailNotification:邮件提醒

备注:可以向多个人发送邮件,通过“”进行分割

4)    StatusMonitor:构建状态监控;

2.2.5配置结束

好,基本的配置到这里结束,可以搭建一个新的任务进行构建了。

2.3运行并监控构建作业

2.3.1 主控制面板

当配置完成一个任务后,回到主控制面板:

Ø  上图中右边列表列举现在已经配置的任务已经任务当前的状态

Ø  左边有构建队列,当有构件时,会把当前正在构建的队列在上面进行列举;

Ø  上图右下角有RSS订阅,支持订阅全部、失败和最后一次等;

2.3.2 手动构建一个任务

当一个任务配置完成后,可以采用手动构建和触发器构建两种方式,在项目验证阶段,可以通过手动触发方式,点击任务区的“立即构建”,会在BuildHistory中出现以下进度条:

点击进度条,可以进入到具体的编译过程,例如下图:

等构建完毕后,你可以看到最新任务构建的结果图:

浏览任务的整体运行状况入下图:

最左边列图示为最后一次构建状态,第二列图示为整个任务的构建总体结果,具体如下表示。

2.3.3任务构建状态

Jenkins通过当前构建状态和构建稳定新

Ø  当前构建状态分为以下几种

 

项目构建完成,同时被认为是稳定的

 

项目构建完成,但被认定为不稳定

 

构建失败

 

作业已经禁止

Ø  构建稳定行,Jenkins会基于一些后处理器任务为构建发布一个稳健指数(从0-100 ),越高越稳定

 

构建成功率>80%

 

构建成功率60%-79%

 

构建成功率40%-59%

 

构建成功率20%-39%

 

构建成功率0-19%

期待任务编译都处于和 状态。


猜你喜欢

转载自blog.csdn.net/lianghailun/article/details/72846647