Jenkins(11):Jenkins的自动化构建实例

常见的triggers

  • build periodically

    设定类似cron周期性时间触发构建

  • poll SCM

    设定类似cron周期性时间触发检查代码变化,只有代码变动时才触发构建

  • Hooks

    用过SVN的都知道,钩子嘛。。。

    Github hooks

    Gitlab hooks

  • Events

    Gerrit event

 

build periodically

H 代表jenkins 自己分配时间,不去指定客观时间。一般都是Jenkins根据监控资源利用率,算法分配的。

* * * * *

(五颗星,中间用空格隔开)

第一颗*表示分钟,取值0~59
第二颗*表示小时,取值0~23
第三颗*表示一个月的第几天,取值1~31
第四颗*表示第几月,取值1~12
第五颗*表示一周中的第几天,取值0~7,其中0和7代表的都是周日

1.每30分钟构建一次:

H/30 * * * *

2.每2个小时构建一次

H H/2 * * *

3.每天早上8点构建一次

0 8 * * *

4.每天的8点,12点,22点,一天构建3次

0 8,12,22 * * *

(多个时间点,中间用逗号隔开)

 

jenkins Exec command 不执行 jenkins schedule_取值

jenkins Exec command 不执行 jenkins schedule_maven_02

 

 

Poll SCM

1.Poll SCM:定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作

2.如果我想每隔30分钟检查一次源码变化,有变化就执行

 

jenkins Exec command 不执行 jenkins schedule_Jenkins_03

 

 

 

自动化代码构建实例

 

  • 在之前的freestyle任务基础之上实现构建
  • 检查maven 环境
  • 构建命令 mvn clean compile、mvn package
  • 归档构建产物
  • 演练参数的
  • 通过配置triggers进行自动化构建
  • 多并发任务场景和规则

 

测试项目代码

首先构建好了 gitlab,测试项目准备好,测试项目找了半天。上传到百度云了,分享一下,感谢原作者。

演示项目来自于:

链接: https://pan.baidu.com/s/12MTYhVZ3NJP3F5nIPCcDyA  提取码: 2myy

徐小平

我的书《Maven实战》


 

我是本地上传的项目

 

jenkins Exec command 不执行 jenkins schedule_取值_04

 

创建一个issue

创建分支

jenkins Exec command 不执行 jenkins schedule_取值_05

jenkins Exec command 不执行 jenkins schedule_取值_06

 

 

安装maven

软件下载

wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gz

 

安装

tar vxf apache-maven-3.2.3-bin.tar.gz
sudo mv apache-maven-3.2.3 /usr/local/maven

修改环境变量

在/etc/profile中添加以下几行

MAVEN_HOME=/usr/local/maven
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

source /etc/profile使环境变量生效。

 

配置构建

我是在master构建的,个人认为这种操作不应该影响线上环境,也不应该放到线上机器上,万一呢。。。

jenkins Exec command 不执行 jenkins schedule_取值_07

jenkins Exec command 不执行 jenkins schedule_maven_08

jenkins Exec command 不执行 jenkins schedule_取值_09

source /etc/profile

pwd

mvn -v

mvn clean compile

 

#有一个mail模块是系统级别的

sudo /usr/local/maven/bin/mvn package

#完成后 修改一下权限,否则下一次麻烦

sudo chown -R  jenkins: .

 

 

sudo 配置一下,这是Jenkins安装方式RPM不如war好的地方,tomcat+war完全可以用一个业务账户,权限把握的更好,而Jenkins账户要提权是真的不安全。

jenkins  ALL=(ALL)    NOPASSWD:ALL

 

jenkins Exec command 不执行 jenkins schedule_Jenkins_10

 

可能遇到的问题

我因为之前安装gitlab起了postfix,结果项目报错了。

 

jenkins Exec command 不执行 jenkins schedule_取值_11

 

sudo systemctl stop postfix

 

构建后归档

jenkins Exec command 不执行 jenkins schedule_Jenkins_12

 

 

 

jenkins Exec command 不执行 jenkins schedule_maven_13

jenkins Exec command 不执行 jenkins schedule_maven_14