一、jenkins 安装插件

​GitLab Plugin​

二、配置插件,让 jenkins 能通过 api 连接 gitlab

1、登陆 gitlab,生成 token,登陆的用户要有项目的所有权限,我这里用 tomma 这个用户,用户组权限是 Maintainer

Jenkins 连接 Gitlab 实现 push 代码 自动构建_自动构建

2、登陆 jenkins,把 gitlab 生成的 token 配置到凭证里面

Jenkins 连接 Gitlab 实现 push 代码 自动构建_git_02

3、进入 jenkins 系统设置,找到 Gitlab 插件配置区域,输入 name,URL,凭证,点击 Test Connection,显示 Success,表示成功

Jenkins 连接 Gitlab 实现 push 代码 自动构建_maven_03

三、创建 jenkins 流水线项目

1、构建触发器中点击,Build when a change is pushed to GitLab. GitLab webhook,这个URL 地址,后续 gitlab 中会用到

Jenkins 连接 Gitlab 实现 push 代码 自动构建_git_04

2、点击高级,生成 Secret token,后续 在 gitlab 会用到,

如果要指定分支触发自动构建,选择 Filter branches by name,输入要包含的分支,这里选择 master

Jenkins 连接 Gitlab 实现 push 代码 自动构建_git_05

3、配置 流水线

Jenkins 连接 Gitlab 实现 push 代码 自动构建_git_06

4、流水线 Jenkinsfile

node {

properties([
disableConcurrentBuilds(),
gitLabConnection(gitLabConnection: 'gitlab'),
buildDiscarder(logRotator(numToKeepStr: '2')),
])

stage('Checkout') {
echo '开始拉取代码.....'
git branch: "master", credentialsId: 'Gitlab-Credential', url: 'http://192.168.2.105:9091/xielong/diamond.git'

}

stage('Build') {
withMaven (
maven: 'M3', mavenSettingsConfig: 'Maven-Config'
) {
updateGitlabCommitStatus name: 'build', state: 'running'
echo '开始执行打包操作.....'
sh 'mvn clean package'
}
}

updateGitlabCommitStatus name: 'build', state: 'success'

}

 四、配置 gitlab 中的 webhook

1、先用 gitlab 管理员ROOT用户登陆

Jenkins 连接 Gitlab 实现 push 代码 自动构建_自动构建_07

2、勾选 Allow requests to the local network from hooks and services,允许本地网络访问

Jenkins 连接 Gitlab 实现 push 代码 自动构建_自动构建_08

3、这一步用普通用户也可以,只要有项目所有权限就可以了(我这里用tomma这个用户)。

点击 gitlab 中的项目,然后进入 Setting > Integrations Settings,这里的 URL,Secret Token 是在 jenkins 里面生成的,最后点击 Add Webhook

Jenkins 连接 Gitlab 实现 push 代码 自动构建_maven_09

2、点击,Push events 进行测试

Jenkins 连接 Gitlab 实现 push 代码 自动构建_自动构建_10

4、如果显示 Hook executed successfully: HTTP 200,说明连接成功

Jenkins 连接 Gitlab 实现 push 代码 自动构建_maven_11

 

4、验证 jenkins,触发自动构建,显示是通过 Gitlab push 构建的

Jenkins 连接 Gitlab 实现 push 代码 自动构建_git_12

5、查看 gitlab

Jenkins 连接 Gitlab 实现 push 代码 自动构建_maven_13