Jenkins 项目构建之 常用的构建触发器 与gitlab 配置webhook
Jenkins 项目构建之 常用的构建触发器 与gitlab 配置webhook
目录- 一:Jenkins 项目构建常用的构建触发器
- 1.1 触发远程构建
- 1.2 其他工程构建后触发
- 1.3 定时构建
- 1.4轮询SCM
- 二: gitlab 配置webhook 钩子服务
- 2.1 gitlab 开启 webhook 功能
- 2.2 jenkins 下载插件,配置构建触发器
- 2.3 gitlab 在项目中添加webhook
- 2.4 进行测试
- 2.5 webhook报错解决
- 2.6 进行webhook 构建
一:Jenkins 项目构建常用的构建触发器
1.1 触发远程构建
Trigger builds remotely .
通过URL加上相关指令,实现构建。优点在于我们可以使用命令或者代码去执行,去触发构建.
进入项目的配置页面
在构建触发器部分(Build Triggers)选择触发远程构建(Trigger builds remotely (e.g., from scripts))
输入自定义的token ,然后复制给出的URL
修改index.jsp 文件,并提交到gitlab(选做,只是为了看结果)
使用Jenkins的地址+复制的URL+自定义token,触发远程构建
在项目页面,可以看到自动构建了一个新工程
访问tomcat的8080端口,可以看到我们修改的首页内容
1.2 其他工程构建后触发
Build after other projects are build
某些环境的构建,相互之间彼此依赖,所以,有些环境必须先安装。对于大型项目而言,会有多个工程需要构建,此时,就可以编排工程的构建顺序,我们可以安排环境工程先构建。
创建一个pre_project的前置工程
配置项目web_demo_pipeline, 在前置项目pre_project构建后,自动触发构建
修改index.jsp文件,构建前置项目
前置工程pre_project构建成功后,会自动触发web_demo_pipeline 的构建
1.3 定时构建
Build periodically
定时字符串从左往右分别为: 分 时 日 月 周
一些定时表达式的例子:
- 每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
修改项目配置,选择定时构建
1.4轮询SCM
Poll SCM
轮询SCM,是指定时扫描本地代码仓库的代码是否有变更,如果代码有变更就触发项目构建。
Jenkins会定时扫描本地整个项目的代码,增大系统的开销
修改项目的配置,选择轮询SCM
修改代码,提交gitlab
扫描到代码仓库变化,自动构建
二: gitlab 配置webhook 钩子服务
2.1 gitlab 开启 webhook 功能
使用root 账户登录gitlab后台, 点击扳手模样的Admin Area --->Settings --->Network--->Outbound requests
进入后,再勾选"Allow requests to the local network from web hooks and services"
2.2 jenkins 下载插件,配置构建触发器
Jenkins在下载插件页面,搜索 gitlab,下载 GitLab 和 Generic Webhook Trigger Plugin 插件
Jenkins 配置项目的构建触发器为Build when a change is pushed to GitLab. 并复制后面的URL
2.3 gitlab 在项目中添加webhook
Projects-->Explore projects--->选择项目--->Settings--->Integrations
2.4 进行测试
当前添加webhook页面--->点击Test--->Push evects
2.5 webhook报错解决
如果报错 Hook executed successfully but returned HTTP 403 . 则 webhook服务成功,但是因为权限不够,没有Jenkins的访问权限
在Jenkins页面,Manage Jenkins --> Confifure System--->
去除 Enable authentication for '/project' end-point 的勾选,不用认证,再将下方的Gitlab connections 删除
再回到之前的测试页面,再次进行测试
2.6 进行webhook 构建
更改开发环境代码,提交
Jenkins自动构建并发布