Jenkins代码自动发布
本实验我们实现只要GitLab的master分支有新代码提交,Jenkins 自动触发Build New(立即构建)功能,实现代码自动发布。
回到choujiang任务中点击构建触发器,Jenkins 本身内置了4种构建触发器,分别是:
触发远程构建:需要额外调用url 通知Jenkins 去触发构建
在构建其他项目工程后构建:可以配合其他构建触发器一起使用,但是没有解决主要工程构建的问题
定期构建:会存在即使,远程仓库代码没有任何变动,也会触发构建,导致资源浪费
轮循构建:相比于定时构建,轮循构建只有在代码变动的情况下,才会触发构建,减少了一部分资源的浪费,但是依赖于轮询,其定时轮询机制本身会消耗Jenkins 服务器的资源,导致一些资源上的浪费。
这四种构建触发器,基本可以满足我门日常工作的大部分需求,但其不足的地方也很明显,综合以上问题:webhook 应运而生 (这里以 gitlab 为例) webhook 拦截特定事件(如 push 代码后 ,自动触发远程构建),事件以 http 的方式通知第三方服务,如触发持续集成Jenkins。
1 安装GitLab构建触发器插件
左侧栏 Manage Jenkins(管理Jenkins)→ Manage Plugins(管理插件)
点击下方 install without restart
安装成功后不用重启Jenkins服务
2 构建webhook触发器
插件安装完毕后,项目配置目录下构建触发器器会新增一个触发器选项,选择并设置对应触发构建事件,具体配置如下图:
上述配置默认即可,点击 高级 按钮后如下图:
3 GitLab设置webhook
回到GitLab的choujiang项目中点击左侧 设置→webhooks 粘贴Jenkins的令牌到Secret token处:
提示:Webhooks的网址为Jenkins任务中构建触发器指定的地址,复制下图地址到GitLab的网址处:
上述操作表示当GitLab的choujiang项目中有新代码上传到master分支后,GitLab通过令牌通知Jenkins触发构建操作。
配置完成后点击Add webhook。
提示:由于版本问题可能出现如下报错
原因:gitlab 10.6 版本以后为了安全,不允许向本地网络发送webhook请求。
解决方法:通过 Admin→设置→网络→外发请求 配置如下图:
点击保存更改。
再次回到项目中重新添加并验证结果:
点击下方 Add webhook 在页面最下方验证项目钩子,如下图:
4 测试webhook
展开测试栏后点击Push events(推送事件)选项进行钩子测试:
测试结果在页面上方显示HTTP 200表示推送成功:
Jenkins验证构建操作:
小结:经测试webhook 已经生效,接下来可以试试本地push 代码检测是否生效了!
推送代码:
[root@git ~]# cd /choujiang/
[root@git choujiang]# vim index.html
[root@git choujiang]# git status
[root@git choujiang]# git add .
[root@git choujiang]# git commit -m 'modify index.html'
[root@git choujiang]# git remote
[root@git choujiang]# git push -u origin master
Jenkins验证是否自动构建:
小结:通过上述操作已经实现GitLab 利用 webhook 实现push 代码后 Jenkins 自动构建。
5 jenkins返回构建状态到GitLab
Jenkins每次自动构建完成后,jenkins可以把构建的结果反馈给 Gitlab,这样在 Gitlab 上就可以查看每一次 push 后构建的执行结果。
6 配置Jenkins与GitLab凭据
首先在Jenkins上配置,打开 Manage jenkins(管理Jenkins)→configure System(系统设置)下拉找到GitLab部分
第③步骤他需要一个API token,通过gitlab地址在结合GitLab生成的token,通过这种方式就可以访问GitLab,接下来还要去GitLab 生成一个token。
GitLab生成token:
创建后会在页面上方生成token:
复制token到Jenkins:
凭据添加成功后,回到系统设置页面,为 Gitlab 选择认证并Test Connection(测试访问):
测试成功后保存退出系统设置。
7 指定构建后操作步骤
所谓的构建后操作就是 你构建执行完以后,可以做些什么事情,我们希望某个项目构建后,就将结果返回到GitLab时,我们需要在具体项目中配置构建后操作步骤
进到项目中点击 配置→构建→增加构建后操作步骤,具体配置如下图:
先择后结果如下图,点击保存:
回到任务主页面,执行“立即构建”。
8 GitLab验证构建结果
构建成功后,在 Gitlab 仓库列表页面验证:
出现下图表示已跳转到jenkins:
小结:当Jenkins自动触发完构建以后,下次不用再去jenkins看页面,直接通过GitLab页面查看结果即可。
评论区