1 触发远程构建

Jenkins构建触发器_自动构建

触发构建URL

 http://192.168.137.130:8080/job/test04/build?token=5555

1.1 浏览器触发构建

通过浏览器可以直接触发构建

Jenkins构建触发器_自动构建_02

1.2 curl命令触发

curl -u admin:123456 http://192.168.137.130:8080/job/test04/build?token=5555

如果权限配置了,就得输入上号密码才能触发

Jenkins构建触发器_默认值_03

1.3 参数配置

1.3.1 项目配置

如果是参数化构建

Jenkins构建触发器_默认值_04

Jenkins构建触发器_默认值_05

触发器

Jenkins构建触发器_默认值_06

构建步骤

Jenkins构建触发器_默认值_07

1.3.2 手动构建

Jenkins构建触发器_自动构建_08

1.3.3 web触发

不加参数

http://192.168.137.130:8080/job/test02/build?token=5555

不加参数直接跳转到构建页面不会自动构建

http://192.168.137.130:8080/job/test02/buildWithParameters?token=5555&userName='lisi'

可以触发自动构建

userName的值就是构建时userName的参数值

Jenkins构建触发器_自动构建_09

1.3.4 命令触发

不加参数会直接报错

添加参数

curl -u admin:123456 http://192.168.137.130:8080/job/test02/buildWithParameters?token=5555&userName=''

curl -u admin:123456 http://192.168.137.130:8080/job/test02/buildWithParameters?token=5555&userName='lisi'

不管userName的值设置成啥,构建时userName的值是默认勾选的所有参数

Jenkins构建触发器_默认值_10

2 构建触发器

2.1 其他工程构建后触发

Jenkins构建触发器_本地代码_11

test03构建完

Jenkins构建触发器_自动构建_12

Jenkins构建触发器_自动构建_13

2.2 构建后操作

Jenkins构建触发器_默认值_14

2.3 Multijob

需要安装Multijob插件

Jenkins构建触发器_默认值_15

Jenkins构建触发器_默认值_16

多个任务顺序串行执行,还可以添加静默期,给两个job之间留点时间缓冲

Jenkins构建触发器_默认值_17

Jenkins构建触发器_本地代码_18

Multijob触发的其他构建,其他构建配置的各种参数化构建参数都会失效,如果需要构建参数,可以在Multijob具体的job下面配置

Jenkins构建触发器_自动构建_19

3 定时构建

3.1 正常配置

Jenkins构建触发器_默认值_20

很多时候配置的时间都是以当前时间往后多久触发构建

Jenkins构建触发器_本地代码_21

定时字符串从左往右分别为: 分 时 日 月 周一些定时表达式的例子: 
每30分钟构建一次:H代表形参 H/30 * * * * 10:02 10:32 
每2个小时构建一次: H H/2 * * * 
每天的8点,12点,22点,一天构建3次: (多个时间点中间用逗号隔开) 0 8,12,22 * * * 
每天中午12点定时构建一次 H 12 * * * 
每天下午18点定时构建一次 H 18 * * * 
在每个小时的前半个小时内的每10分钟 H(0-29)/10 * * * * 
每两小时一次,每个工作日上午9点到下午5点(也许是上午10:38,下午12:38,下午2:38,下午4:38) H H(9-16)/2 * * 1-5

3.2 参数化构建

Jenkins构建触发器_默认值_22

Jenkins构建触发器_本地代码_23

定时构建会输出参数的值为默认值

4 轮询SCM

轮询SCM,是指定时扫描本地代码仓库的代码是否有变更,如果代码有变更就触发项目构建

Jenkins构建触发器_本地代码_24

Jenkins构建触发器_自动构建_25

Jenkins构建触发器_本地代码_26

5 Gitlab webhook

默认就带,不需要额外安装Gitlab Hook

5.1 Jenkins设置

Jenkins构建触发器_本地代码_27

Jenkins构建触发器_默认值_28

等会需要把生成的webhook URL和token配置到Gitlab中。

如果jenkins安装了Gitlab插件,额外配置

Jenkins构建触发器_自动构建_29

5.2 Gitlab配置webhook

1)开启webhook功能

使用管理员账户登录到后台

Jenkins构建触发器_默认值_30

2)在项目添加webhook

Jenkins构建触发器_本地代码_31

3)点击进行测试

Jenkins构建触发器_自动构建_32

Jenkins构建触发器_自动构建_33

4)jenkins触发自动构建

Jenkins构建触发器_自动构建_34

Jenkins构建触发器_本地代码_35

5)jenkins构建添加静默期

默认情况下代码提交完立刻开始构建,可能还有后续代码提交,多等待一会再构建

Jenkins构建触发器_默认值_36

Jenkins构建触发器_本地代码_37

如果处于静默期间再次提交代码,静默期时间不会重置,还是会继续倒计时

6 Jenkins基于Git参数构建

需要安装Git Parameter插件

6.1 基于分支构建

Jenkins构建触发器_本地代码_38

Jenkins构建触发器_本地代码_39

Jenkins构建触发器_本地代码_40

构建显示所有分支,可以点击确定,参数化构建的时候填写了默认值origin/master,所以即使不点击,也会按默认值进行构建

Jenkins构建触发器_默认值_41

Jenkins构建触发器_自动构建_42

6.2 基于CommitID构建

Jenkins构建触发器_本地代码_43

Jenkins构建触发器_默认值_44

Jenkins构建触发器_自动构建_45

Jenkins构建触发器_默认值_46

6.3 基于CommitID对比更新

有些时候,并没有新代码提交,到了构建时间依旧会更新构建,不仅容易导致资源紧张(同时多个构建),还影响开发环境

有没有办法对比是否有更新,有更新则构建,无更新则构建结束

之前轮询SCM可以实现,但是它是扫描本地代码,如果代码量很大,容易耗时

Jenkins构建触发器_本地代码_47

Jenkins构建触发器_本地代码_48

通过这两个参数对比是否本次构建需要编译打包更新环境

GIT_PREVIOUS_SUCCESSFUL_COMMIT如果本次构建成功则更新成最新的GIT_COMMIT

如果本次构建失败,则保留原来的

Jenkins构建触发器_默认值_49

Jenkins构建触发器_默认值_50

Jenkins构建触发器_默认值_51

有些时候即使没有更新代码,可能有依赖包要更新,可能构建的包有问题想重新构建一遍,这个时候上述简单shell就无法满足了

可以考虑构建成功后,将最新GIT_COMMIT写入文件,下次构建,读取文件中的commitID和最新的GIT_COMMIT进行对比,这样子可以满足之前俩参数对比情况

如果没新代码也想更新,可以将文件置空,这样子对比完也可以自动构建