使Jenkins Pipeline执行结果显示在gitlab中

393 阅读3分钟

公众号:自动化测试实战

如果你在每次merge时希望执行pipeline,且Pipeline执行结果和merge结果都显示在gitlab里,如下图:

假设你已经装好了Jenkins和gitlab。

安装Jenkins插件

需要安装的插件:

  • git
  • pipeline

安装步骤:

  • 点击左侧菜单栏的“Manage Jenkins”(管理Jenkins)。
  • 选择“Manage Plugins”(管理插件)。
  • 在“Available”(可选)标签下搜索上述插件,并进行安装

在GitLab中配置Webhooks

  1. 进入GitLab项目设置:

打开你想要集成的GitLab项目,点击左侧菜单的“Settings”(设置) -> “Webhooks”(Webhook)。

  1. 添加新的Webhook:
  • URL:填写你的Jenkins服务器的Webhook URL,通常格式为 http://<JENKINS_URL>/project/<JOB_NAME>。
  • Secret Token:可选,用于安全验证,需在Jenkins中对应配置。
  • 触发事件:选择“Push events”(Push事件)和其他需要触发Pipeline的事件(如Merge Request events)。

完成后点击“Add Webhook”添加。

在Jenkins中创建和配置Pipeline作业

  1. 创建新的Pipeline项目:
  • 点击Jenkins主页的“New Item”(新建任务)。
  • 输入项目名称,选择“Pipeline”,然后点击“OK”。
  1. 配置源码管理:
  • 在项目配置页面,找到“Pipeline”部分。
  • 选择“Pipeline script from SCM”(从源码管理中获取Pipeline脚本)。
  • SCM选择“Git”。
  • 填写你的GitLab仓库URL和凭证(如果仓库是私有的,需提供认证信息)。
  1. 指定Pipeline脚本位置:

通常,Pipeline脚本(Jenkinsfile)放在仓库根目录。

在“Script Path”(脚本路径)中填写 Jenkinsfile。如果要把Pipeline脚本写在Jenkins pipeline编辑器而非Jenkinsfile里,可以忽略这步。

  1. 配置GitLab触发器:
  • 在“Build Triggers”(构建触发器)部分,选择“Build when a change is pushed to GitLab”(当有变更推送到GitLab时构建)。这里可根据自己的需要进行选择
  • 如果使用Secret Token,在Jenkins的“Configure”页面中相应位置填写与GitLab Webhook中一致的Token。

编写你的pipeline脚本

比如我的脚本如下:

pipeline {
    agent any

    stages {
        stage('Checkout') {
            steps {
                git url'https://gitlab.com/your-repo.git'branch'main'
            }
        }
        stage('Build') {
            steps {
                // 你的构建步骤,如Maven构建
                sh 'mvn clean install'
            }
        }
        stage('Test') {
            steps {
                // 运行测试
                sh 'mvn test'
            }
        }
        stage('Deploy') {
            steps {
                // 部署步骤
                sh 'deploy.sh'
            }
        }
    }
    post {
        success {
            updateGitlabCommitStatus name'build'state'success'
        }
        failure {
            updateGitlabCommitStatus name'build'state'failed'
        }
    }
}

在GitLab中配置Jenkins CI/CD集成

  1. 生成Jenkins API Token:
  • 在Jenkins中,进入你的用户配置页面(点击右上角用户名 -> “Configure”)。
  • 在“API Token”部分,生成一个新的Token,用于GitLab与Jenkins的认证。
  1. 这步可省略,因为已经添加了webhook】在GitLab中添加Jenkins的访问凭证:
  • 进入GitLab项目的“Settings”(设置) -> “CI/CD” -> “Variables”(变量)。

  • 添加如下变量:

    • JENKINS_URL:你的Jenkins服务器地址。
    • JENKINS_USER:Jenkins用户名。
    • JENKINS_API_TOKEN:之前生成的Jenkins API Token。

这些变量可以在Jenkinsfile中引用,用于与Jenkins交互。

触发Pipeline并查看执行记录

  1. 提交变更触发Pipeline:

推送代码到GitLab仓库,符合Webhook触发条件,Jenkins会自动接收并开始执行Pipeline。

  1. 查看Jenkins中的构建日志:

在Jenkins项目页面,可以看到Pipeline的执行情况和详细日志。

  1. 在GitLab中查看Pipeline状态:

回到GitLab项目,进入“CI/CD” -> “Pipelines”,可以看到对应的Pipeline状态(成功或失败),以及关联的Jenkins构建信息。

通过以上步骤,就可以在Jenkins中执行Pipeline,并将执行记录同步显示在GitLab的Pipelines记录中了。