Jenkins流水线构建gitlab项目整合SonarQube扫描代码

文章目录

  • 为什么要配置
  • 注意
  • 创建SonarQube工程
  • Jenkins配置
    • 首次构建,配置凭据(此步骤每组有一个人做了就好)
    • 构建项目
  • 配置项目
  • 配置推送钉钉
    • 配置钉钉
    • 配置Jenkins
    • 配置Jenkins项目(方式一)
    • 配置Jenkins项目(方式二)
  • 注意

为什么要配置

​ 现在主要是使用SonarQube,在我们将项目上传到gitlab后,Jenkins自动对项目进行构建,并通过SonarQube进行代码分析,方便詹老师查看。

注意

​ 因为我们各微服务都有引入基础框架,所以一定要先配置基础框架跟starter,将jar先安装到jenkins服务器的maven中,我们各微服务才能正常构建

创建SonarQube工程

SonarQube控制台地址

  • 进入首页后点击 Log in 登录

账号:admin 密码:admin

  • 点击右上角的 + 新建项目

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第1张图片

  • 输入 Project Key

请修改成自己的项目名称!我这是由组名+项目artifactId组成,这个是自定义的,不重复就好。然后点Set Up
Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第2张图片

  • 选择Token

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第3张图片

选择User existing token,输入bosssoft。点击Continue,选择Java、Maven就好

Jenkins配置

Jenkins控制台

账号: admin 密码:123456

首次构建,配置凭据(此步骤每组有一个人做了就好)

  • 点击左侧的凭据,点击系统,点击表格中的全局凭据

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第4张图片

  • 点击新增凭据

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第5张图片

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第6张图片

  • 点击确定新增完毕,返回凭据栏发现刚刚新增的凭据已经出现

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第7张图片

构建项目

  • 在首页点击左上角的New Item

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第8张图片

  • 选择构建方式

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第9张图片

  • 配置Build Triggers

直接拉到Build Triggers,这里是配置当我们上传项目到gitlab时自动推送到jenkins进行构建

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第10张图片

  • 打开gitlab中的项目,添加配置

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第11张图片

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第12张图片

  • 配置Pipeline

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第13张图片

  • 打开Pipeline语法构建器

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第14张图片

打开后点Sava,项目构建成功,构建器打开先放着,下面用。

配置项目

  • 在项目根目录下新建 Jenkinsfilesonar-project.properties两个文件,注意J是大写
pipeline {
    agent any

    stages {
        stage('pull code') {
            steps {
                // TODO 这里需要等等使用Pipeline构建器生成 记得删除此行
            }
        }
        stage('build project') {
            steps {
                sh label: '', script: 'mvn clean install package -Dmaven.test.skip=true'
            }
        }
        stage('code checking') {
            steps {
                script {
                    scannerHome = tool 'MyScanner'
                }
                withSonarQubeEnv('MySonarQube') {
                    sh "${scannerHome}/bin/sonar-scanner"
                }
            }
        }
    }
}
# 这里就是SonarQube里新建项目的key
sonar.projectKey=这里填在SonarQube里创建的项目名
sonar.projectName=这里填在SonarQube里创建的项目名
sonar.projectVersion=1.0-SNAPSHOT


sonar.sources=.
sonar.exclusions=**/test/**,**/target/**

sonar.java.source=1.8
sonar.java.target=1.8
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

# 如果是多模块项目就填:**/target/classes
# 如果是starter这样的单模块项目就用:./target/classes
sonar.java.binaries=**/target/classes
  • 使用Pipeline语法构建器

选择checkout: Check out from version control

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第15张图片

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第16张图片

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第17张图片

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第18张图片

粘贴到Jenkinsfile文件中,刚刚是TODO的地方

  • 将代码推送到gitlab上
  • 推送后Jenkins会自动构建,我们到项目中查看构建结果

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第19张图片

全绿则表示构建成功。

  • 查看SonarQube

Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第20张图片

已有结果,完成!

配置推送钉钉

构建成功后,我们还需要将构建成功的消息推送到钉钉群聊

配置钉钉

  • 在自己群聊新增机器人(需要使用PC版)
    Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第21张图片
  • 点击添加机器人,选择自定义
    Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第22张图片
  • 输入机器人信息,名字,安全设置选加签
    Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第23张图片

配置Jenkins

  • 进入系统设置
    Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第24张图片
  • 找到钉钉,配置机器人
    Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第25张图片Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第26张图片填写完可以点测试测一下
    Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第27张图片
    保存配置

配置Jenkins项目(方式一)

选择刚刚自己配置的机器人,可以进行高级配置,选择需要@的人和自定义信息。如果需要@多人要多行填写,可以点击右边的?查看
Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第28张图片

  • 测试
    推送代码到gitlab
    构建完成后钉钉收到信息推送
    Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第29张图片

配置Jenkins项目(方式二)

如果觉得方式一的推送方式不满足我们的需求,我们可以使用pipeline自定义消息通知。
使用文档
我这演示一个MD格式的

  • 取消勾选Jenkins项目中的钉钉机器人
    Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第30张图片
  • 修改项目中的Jenkinsfile
    这里的robot就是Jenkins里创建的钉钉机器人ID,请替换成自己的
stage('push dingding') {
   steps {
       echo '测试 MARKDOWN 消息...'
   }
   post {
        success {
            dingtalk (
                robot: '这里的robot就是Jenkins里创建的钉钉机器人ID,请替换成自己的',
                type: 'MARKDOWN',
                title: '基础框架构建成功',
                text: [
                    '# 基础框架已构建成功',
                    '',
                    '---',
                    '[Jenkins控制台](http://58.22.61.222:27010/)',
                    '[SonarQube控制台](http://58.22.61.222:19875/)'
                ],
                at: [
                    '钉钉账号'
                ]
            )
        }
    }
}
  • 推送代码测试
    Jenkins流水线构建gitlab项目整合SonarQube扫描代码_第31张图片更多功能可以查看上面的文档使用~

注意

每组一定要先配置自己gitlab组的凭据,随意使用一个人的账号密码就行了,只要他有权限访问到所有项目就ok。

然后一定要先构建基础框架,然后将starter也做一遍,做starter只是为了将jar包安装到jenkins服务器的maven中,构建完starer在SonarQube和Jenkins中的项目就可以删了。

当基础框架和starter都做好后,再来构建各微服务。

你可能感兴趣的:(前沿技术,jenkens)