基于gitlab的webhook集成jenkins,并在gitlab流水线中展示jenkins的job状态信息

文章目录

    • 1. 环境信息
    • 2. gitlab 部署
    • 3. jenkins部署
    • 4. gitlab集成jenkins
      • 4.1 jenkins的凭据上保存gitlab的账号信息
      • 4.2 jenkins中配置gitlab的连接信息
      • 4.3 编写jenkins上pipeline文件
      • 4.4 jenkins上创建pipeline项目
      • 4.5 gitlab上配置webhooks事件
      • 4.6 测试

1. 环境信息

gitlab服务器: 4C8G

  • 系统OS:Ubuntu 22.04.3 LTS
  • gitlab:gitlab-jh-16.6

jenkins服务器: 4C8G

  • jenkins : Version 2.426.1
  • jenkins Plugin - GitLab Plugin:1.7.16
  • Docker:version 25.0.0-beta.1, build 2b521e4

2. gitlab 部署

  • 参考安装私有化部署版GitLab

3. jenkins部署

  • 参考Jenkins安装和插件管理与应用

本案例基于docker部署jenkins,并安装GitLab Plugin,安装操作如下:

mdkir /home/ubuntu/jenkins_home
chown -R 1000:1000 /home/ubuntu/jenkins_home
docker pull jenkins/jenkins:latest
docker tag jenkins/jenkins:latest jenkins/jenkins:2.426.1
docker run -itd -p 8080:8080  --restart=always --name=jenkins -v /home/ubuntu/jenkins_home/:/var/jenkins_home jenkins/jenkins:2.426.1

4. gitlab集成jenkins

  • 参考With a webhook

4.1 jenkins的凭据上保存gitlab的账号信息

可以是用户名和密码,也可以是个人token,建议两个都保存下即可,后面会有用到。
基于gitlab的webhook集成jenkins,并在gitlab流水线中展示jenkins的job状态信息_第1张图片

4.2 jenkins中配置gitlab的连接信息

此处需要gitlab的令牌token,并需要通过`Test Connection
基于gitlab的webhook集成jenkins,并在gitlab流水线中展示jenkins的job状态信息_第2张图片

4.3 编写jenkins上pipeline文件

updateGitlabCommitStatus 可以将jenkins的构建信息写到gitlab的流水线中

pipeline {
    agent any

    stages {
        stage('pull code') {
            steps {
                script{
                    try{
                        git branch: 'master', credentialsId: 'gitlab', url: 'http://192.168.31.100/ops/spring.git'
                        updateGitlabCommitStatus name: 'code-checkout', state: 'success'
                    } catch (e) {
                        updateGitlabCommitStatus name: 'code-checkout', state: 'failed'
                    }
                }
            }
        }
        stage('build') {
            steps {
                script{
                    try{
                        sh '''
                        ls -l
                        '''
                        updateGitlabCommitStatus name: 'code-build', state: 'success'
                    } catch (e) {
                        updateGitlabCommitStatus name: 'code-build', state: 'failed'
                    }
                }
            }
        }
        stage('test') {
            steps {
                script{
                    try{
                        sh '''
                        ls -l
                        '''
                        updateGitlabCommitStatus name: 'code-test', state: 'success'
                    } catch (e) {
                        updateGitlabCommitStatus name: 'code-test', state: 'failed'
                    }
                }
            }
        }
        stage('deploy') {
            steps {
                script{
                    try{
                        sh '''
                        ls -l
                        '''
                        updateGitlabCommitStatus name: 'code-deploy', state: 'success'
                    } catch (e) {
                        updateGitlabCommitStatus name: 'code-deploy', state: 'failed'
                    }
                }
            }
        }
    }
}

4.4 jenkins上创建pipeline项目

项目的描述信息
基于gitlab的webhook集成jenkins,并在gitlab流水线中展示jenkins的job状态信息_第3张图片
选择Build when a change is pushed to GitLab-pened Merge Request Events
基于gitlab的webhook集成jenkins,并在gitlab流水线中展示jenkins的job状态信息_第4张图片
点击Generate,并记录Secret token
基于gitlab的webhook集成jenkins,并在gitlab流水线中展示jenkins的job状态信息_第5张图片
将pipeline文件里面的信息粘贴进去
基于gitlab的webhook集成jenkins,并在gitlab流水线中展示jenkins的job状态信息_第6张图片

4.5 gitlab上配置webhooks事件

选择你需要配置的项目 - 设置 - webhooks - 添加

基于gitlab的webhook集成jenkins,并在gitlab流水线中展示jenkins的job状态信息_第7张图片
webhooks的测试
基于gitlab的webhook集成jenkins,并在gitlab流水线中展示jenkins的job状态信息_第8张图片

4.6 测试

由于jenkins上的Build Triger 我们选择的是Build when a change is pushed to GitLab-pened Merge Request Events,因为我们可以创建一个mr来触发


可以在gitlab的pipeline上看到jenkins的构建信息

你可能感兴趣的:(gitlab,持续集成-CI&CD,gitlab,jenkins)