在日常生产开发环境中,一般当程序员把代码推到gitlab中后,还需要程序员去打开CI/CD的web界面,进行打包发布,为了更加方便,gitlab和jenkins集成了自动触发功能,也就是,当程序员把确认写好的代码,合并到某个特等的分支,推到gitlab上即可自动触发jenkins上的相应job,进行要做的操作 官方文档
实践步骤:
- 1.环境说明
- 2.创建jenkins项目
- 3.在gitlab上面配置webHook并验证自动构建
1.环境说明
- 1、jenkins和gitlab已经都安装完毕
- 2、jenkins能连接到gitlab获取项目代码并能手动构建项目
- 3、jenkins和gitlab能互相访问的到(gitlab要能连接到jenkins,都在私网或则都在公网,或则把对应地址透传出去)
- 4、因为配置自动构建所需要用的插件有要求Jenkins的版本不能太低
- 5、安装插件gitlab
2.创建jenkins项目
第一步: 创建new item
item类型如下,名字自定义
第二步:进行基本配置
然后保存
这里有一个仓库的认证,这个一会看下
3.在gitlab上面配置webHook并验证自动构建
首先准备好我们创建好的job的url和token
进入gitlab的项目中,找到这个界面,贴入上面的url和token,然后test一下
如果test成功,就添加webhook 一般就完成了,可以更改一下代码,推一下仓库试试
4.pipline上面的相关应用参数
这个推荐看下上面写的官网链接
判断是 gitlab 代码提交触发的,还是手动执行 jenkins 任务触发的
参数:
env.gitlabActionType //gitlab的动作类型,如果这个值有,并且时push,那就是gitlab有推送,并且触发了这个job
如何判断是那个分支的代码提交
参数:
env.gitlabBranch //推送的分支
gitlabBefore //这个版本的前一个版本,这个是为了筛选出现在版本的版本
gitlabAfter //这个版本的后一个版本,如果后面没有版本就写自己
实例代码:
if (env.gitlabActionType) { // trigger by gitlab
if(env.gitlabActionType=='PUSH' && (env.gitlabBranch=='develop'|| env.gitlabBranch=='develop-2.5.2'|| env.gitlabBranch=='develop-2')) {
sh "git rev-list ${gitlabBefore}..${gitlabAfter} --pretty=format:'%ad - %an: %s'"
echo 'START BUILD'
build()
deploy()
notifySuccess()
echo 'END BUILD'
} else {
// ingore
}
}