背景:由于项目所涉及的环境比较多,因此采用Jenkins进行自动化部署,系统的部署方式是在各个服务器上有源码,在服务器上有拉取gitlab代码并且打包启动的脚本命令,用Jenkins自动化部署主要针对于测试和UAT环境
操作原理:当gitlab发生了merge事件后,触发Jenkins自动构建,并且远程调用服务器上的脚本命令,实现自动化部署
配置步骤如下:
前提条件:Jenkins所在的服务器上安装git、Jenkins、maven软件,安装完毕后进入Jenkins进行配置
第一步:
为Jenkins安装插件,主要的插件有Publish Over SSH、SSH plugin、Generic Webhook Trigger Plugin(此插件的功能是当分支merge的时候触发自动构建,但是我在配置的时候发现不用此功能,用另外一种配置也可以达到相同的效果)、Gitlab Hook Plugin、GitLab Plugin
第二步:
配置SSH的远程服务器
在系统管理->系统配置中找到SSH remote hosts进行配置
第三步:
配置Gitlab
在系统配置,在系统管理->系统配置中找到Gitlab进行配置
在选择Credentials的时候需要额外的操作,在添加凭证的时候选择API Token的方式进行
该配置可参考该地址:jenkins配置凭证 - 简书,或者百度关键字 jenkins配置gitlab API Token
配置完后可以点击Test进行连接测试,返回success代表成功
第四步:
新建任务:
选择Build when a change is pushed to GitLab
选择Target Branch Regex 代表哪一个分支发生了merge事件后 触发构建功能
注意:
Secret token在gitlab的配置中会涉及到
GitLab webhook 的地址也需要,在配置gitlab中会涉及到
自动执行脚本的时候遇到环境变量未生效,其实自动化部署类似于SSH的远程执行命令,最好加上
source /etc/profile 这样声明环境变量
配置完成
第五步:
GitLab的配置
此处只是勾选了merge事件,当发生merge的时候触发
配置完后进行测试
当配置的时候会发生
提示webhook无法保存:Url is blocked: Requests to the local network are not allowed
配置完成后,当发生merge的时候就可以自动化