1 触发远程构建
触发构建URL
http://192.168.137.130:8080/job/test04/build?token=5555
1.1 浏览器触发构建
通过浏览器可以直接触发构建
1.2 curl命令触发
curl -u admin:123456 http://192.168.137.130:8080/job/test04/build?token=5555
如果权限配置了,就得输入上号密码才能触发
1.3 参数配置
1.3.1 项目配置
如果是参数化构建
触发器
构建步骤
1.3.2 手动构建
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的参数值
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的值是默认勾选的所有参数
2 构建触发器
2.1 其他工程构建后触发
test03构建完
2.2 构建后操作
2.3 Multijob
需要安装Multijob插件
多个任务顺序串行执行,还可以添加静默期,给两个job之间留点时间缓冲
Multijob触发的其他构建,其他构建配置的各种参数化构建参数都会失效,如果需要构建参数,可以在Multijob具体的job下面配置
3 定时构建
3.1 正常配置
很多时候配置的时间都是以当前时间往后多久触发构建
定时字符串从左往右分别为: 分 时 日 月 周一些定时表达式的例子:
每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 参数化构建
定时构建会输出参数的值为默认值
4 轮询SCM
轮询SCM,是指定时扫描本地代码仓库的代码是否有变更,如果代码有变更就触发项目构建
5 Gitlab webhook
默认就带,不需要额外安装Gitlab Hook
5.1 Jenkins设置
等会需要把生成的webhook URL和token配置到Gitlab中。
如果jenkins安装了Gitlab插件,额外配置
5.2 Gitlab配置webhook
1)开启webhook功能
使用管理员账户登录到后台
2)在项目添加webhook
3)点击进行测试
4)jenkins触发自动构建
5)jenkins构建添加静默期
默认情况下代码提交完立刻开始构建,可能还有后续代码提交,多等待一会再构建
如果处于静默期间再次提交代码,静默期时间不会重置,还是会继续倒计时
6 Jenkins基于Git参数构建
需要安装Git Parameter插件
6.1 基于分支构建
构建显示所有分支,可以点击确定,参数化构建的时候填写了默认值origin/master,所以即使不点击,也会按默认值进行构建
6.2 基于CommitID构建
6.3 基于CommitID对比更新
有些时候,并没有新代码提交,到了构建时间依旧会更新构建,不仅容易导致资源紧张(同时多个构建),还影响开发环境
有没有办法对比是否有更新,有更新则构建,无更新则构建结束
之前轮询SCM可以实现,但是它是扫描本地代码,如果代码量很大,容易耗时
通过这两个参数对比是否本次构建需要编译打包更新环境
GIT_PREVIOUS_SUCCESSFUL_COMMIT如果本次构建成功则更新成最新的GIT_COMMIT
如果本次构建失败,则保留原来的
有些时候即使没有更新代码,可能有依赖包要更新,可能构建的包有问题想重新构建一遍,这个时候上述简单shell就无法满足了
可以考虑构建成功后,将最新GIT_COMMIT写入文件,下次构建,读取文件中的commitID和最新的GIT_COMMIT进行对比,这样子可以满足之前俩参数对比情况
如果没新代码也想更新,可以将文件置空,这样子对比完也可以自动构建