gitlab自动触发jenkins打包

793 阅读2分钟

在日常生产开发环境中,一般当程序员把代码推到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类型如下,名字自定义 image.png

第二步:进行基本配置

image.png

image.png

image.png

image.png 然后保存

这里有一个仓库的认证,这个一会看下

3.在gitlab上面配置webHook并验证自动构建

首先准备好我们创建好的job的url和token

image.png

image.png

进入gitlab的项目中,找到这个界面,贴入上面的url和token,然后test一下

image.png 如果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
                }
            }