[TOC]
## 配置开始
首先我们进入Jenkins页面中,如下
我们构建一个自由风格的项目,这也是相中用的比较多的

<br>
<br>
## 源码管理

这里默认是不使用任何原码管理,但是可以使用git或svn来进行原码管理,这里我使用git,操作如下

首先将github上面的代码路径copy下来然后放入,Repositories URL
Repositories URL:存放项目路径
Credentials:如图下,按照自己的实际情况填写
选择Add按钮,添加github账户密码等信息

分支默认全在master分支下
<br>
<br>
## 触发器说明

build whenever a snapshot dependency is built,当job依赖的快照版本被build时,执行本job。
<br>
<br>
### 1:触发远程构建 (例如,使用脚本):
这里使用于自动化构建,拼接url后写入代码中可以实现在脚本或者工具执行构建

<br>
<br>
### 2:build after other projects are built,
当本job依赖的job被build时,执行本job

* Trigger only if build is stable:只有在构建稳定时才触发
* Trigger even if the build is unstable:即使构建不稳定,也要触发
* Trigger even if the build fails:即使构建失败,也要触发
<br>
<br>
### 3:Build periodically:
定时执行构建任务,不管远程代码分支上的代码是否发生变化,都执行一次构建。
日程表的参数
第一个参数代表的是分钟 minute,取值 0~59;
第二个参数代表的是小时 hour,取值 0~23;
第三个参数代表的是天 day,取值 1~31;
第四个参数代表的是月 month,取值 1~12;
最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。
例如:H 2 \* \* \* 表示每天两点定时执行构建。

<br>
<br>
### 4:Build when a change is pushed to GitHub:
这个是github项目的触发规则
<br>
<br>
### 5:Poll SCM:
设置定时检查代码仓库是否有变更,有变更则构建
例如:H/5 \* \* \* \* 表示每隔五分钟去检查一遍代码仓库,如果代码发生变化则执行构建,否则不构建

### 6:定时构建语法
~~~
* * * * *
~~~
第一个\*表示分钟,取值0~59
第二个\*表示小时,取值0~23
第三个\*表示一个月的第几天,取值1~31
第四个\*表示第几月,取值1~12
第五个\*表示一周中的第几天,取值0~7,其中0和7代表的都是周日
每隔5分钟构建一次
~~~
H/5 * * * *
~~~
每两小时构建一次
~~~
H H/2 * * *
~~~
每天中午下班前定时构建一次
~~~
0 12 * * *
~~~
每天下午下班前定时构建一次
~~~
0 18 * * *
~~~
每15分钟构建一次:H/15 \* \* \* \* 或\*/5 \* \* \* \*
每天8点构建一次:0 8 \* \* \*
每天8点~17点,两小时构建一次:0 8-17/2 \* \* \*
周一到周五,8点~17点,两小时构建一次:0 8-17/2 \* \* 1-5
每月1号、15号各构建一次,除12月:H H 1,15 1-11 \*
\*/5 \* \* \* \* (每5分钟检查一次源码变化)
0 2 \* \* \* (每天2:00 必须build一次源码)
<br>
<br>
## 构建环境
构建环境就是构建之前的一些准备工作,如指定构建工具(在这里我使用ant)。

**With Ant**:选择这个工具,并指定ant版本和jdk版本。这两个工具的版本我都事先在服务器上安装,并且在jenkins全局工具中配置好了。
<br>
<br>
## 构建

可以选择的项很多。这里就介绍"Invoke Ant" 和"Execute shell".
**Eexcute shell**: 执行shell命令,该工具是针对linux环境的,windows环境也有对应的工 具"Execute Windows batch command"。 在构建之前,可能我们需要执行一些命令,比如压缩包的解压之类的。为了演示,我就简单的执行 "echo $RANDOM" 这样的linux shell下生产随机数命令。
这里我选择使用Eecute shell
<br>
<br>
## **构建后操作**

构建后操作,就是对project构建完成后的一些后续操作,比如生成相应的代码测试报告。

**Publish Clover PHP Coverage Report**:发布代码覆盖率xml格式的文件报告。路径会在"build.xml"文件中定义
**Publish HTML reports**:发布代码覆盖率的HTML报告。
**Report Crap:** 发布crap报告
**E-mail Notification:** 邮件通知,构建完成后发邮件到指定的邮箱。
**以上配置完成后,点击保存。**