Jenkins配置Gitlab自动触发构建
现在要让gitlab去触发,让gitlab点击立即构建,这也是通过插件实现
Git push 触发自动构建
在我们已经成功实现了将 Gitlab 中 monitor 仓库的代码部署到 nginx服务中,但是每次部署需要我们手动去点击“立即构建”,下面我们将实现当 Gitlab 收到push 请求后,就触发 Jenkins 构建,将仓库的变化部署到 nginx 服务中。
Jenkinsjob 配置构建触发器
回到 My-freestyle-job 的配置页面,下拉到构建触发器部分
勾选 gitlab 触发选项,进入具体配置页面
点击高级
Enabled GitLab triggers 允许gitlab触发
push events 允许push 只要gitlab收到push操作 构建就执行 触发事件
Opened Merge Request Events 合并请求 合并操作也可以触发
只有两种方式可以触发 push上去触发构建, 执行merge请求 把代码合并进来了
允许哪个分支 , 当哪个分支收到push或者merge请求,默认为所有分支 收到触发制的时候 就是执行job
可以单独定义 只允许master分支 才构建
根据自己需求定义
token作用,访问webhooks URL 需要携带token过来,才能触发,有url也不行,有url和token才触发
配置完成后,保存配置。
Gitlab 仓库配置 webhooks
当仓库收到push 不是gitlab收到 是某一个仓库收到 push操作或者merge请求事件 才会触发构建 ,和仓库相关
进入 Gitlab 中 monitor 仓库的设置页面,
进入集成配置页面,复制 jenkins 触发器配置页面的 url 及 Token
触发事件 默认事件类型是push
配置完成后,添加weohooks
添加了一条 ,在页面下面测试触发设置 测试用test 测试用push events 推送事件
200显示成功,执行成功了
我们在 jenkins job 主页面看到构建任务被触发。
在gitlab 模拟一个push请求过来, jenkins自动触发构建
触发成功
刚才是模拟请求
这次执行构建任务的时候,我们没有点立即构建
这是模拟push操作
接着我们将仓库克隆到客户端,在客户端测试触发 push 操作
admin可以直接向master push,dev用户不可用
克隆 monitor 仓库到 ci-node1 本地 ci-node1上绑定是root用户
[root@ci-node1 data]# git clone git@192.168.31.11:test/monitor.git Cloning into 'monitor'... remote: Counting objects: 435, done. remote: Compressing objects: 100% (372/372), done. remote: Total 435 (delta 53), reused 435 (delta 53) Receiving objects: 100% (435/435), 8.78 MiB | 0 bytes/s, done. Resolving deltas: 100% (53/53), done.
cd monitor 仓库里面 更改 index.html 文件,push 至 Gitlab
[root@ci-node1 data]# cd monitor/
[root@ci-node1 monitor]# vim index.html
改红色框主的
改后 wq 保存退出
修改好index.html 文件提交
[root@ci-node1 monitor]# git add . [root@ci-node1 monitor]# git commit -m "modify index.html on ci-node1" [master b364e08] modify index.html on ci-node1 1 file changed, 1 insertion(+), 1 deletion(-)
发送push push成功
[root@ci-node1 monitor]# git push -u origin master Counting objects: 5, done. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 315 bytes | 0 bytes/s, done. Total 3 (delta 2), reused 0 (delta 0) To git@192.168.31.11:test/monitor.git f6070e1..b364e08 master -> master Branch master set up to track remote branch master from origin.
看看gitlab 仓库有没有变化,Gitlab 收到本次推送的内容,
Jenkins 对应的 job 已经触发构建
这个地方改变 代表部署成功
网站 index.html 内容被更新
构建前:
构建后
同时我们在 jenkins 中 job 主页面的“新修改记录”部分可以看到我们的修改日志。