SonarQube:GitLab,Jenkins,Sonar 实现代码自动检查

GitLab,Jenkins,Sonar 实现代码自动检查

简介: 提交代码到 GitLab,Jenkins 自动拉取代码,Sonar 负责代码检查。

本文中自动分析过程大致为以下步骤:

  1. 提交 Java 项目代码至 GitLab。

  2. GitLab 通过 webhook 自动触发 Jenkins执行任务

  3. Jenkins 获取代码,执行 Sonar 分析代码。

  4. 在 Sonar 的服务器界面查看分析结果

本文的文章结构为:

  1. 先实现代码扫描。

  2. 在此基础上,实现自动化代码扫描。

目的: 保证代码质量,便于后期代码维护。代码自动化检查。

本文参考: https://www.jianshu.com/p/e111eb15da90


环境:

  • CentOS Linux release 7.6.1810 (Core)

  • Docker version 18.09.3, build 774a1f4

  • Jenkins 2.177 (2019-05-12)



创建时间:2019/5/21 20:45:56 

创建人:于子源

修改记录:修改人+修改时间+修改说明(多人修改时,增加多条)

当前版本:version 1.0.0

安装 Jenkins

跳转:https://blog.csdn.net/KissedBySnow/article/details/89297526

安装 SonarQube

  1. 安装 SonarQube

     docker run \
       -d \
       --name sonar \
       -p 9000:9000 \
       sonarqube:7.4-community
    

    123 实验机在安装的时候并未报错,本次安装为 121 实验机的安装过程,报错如下:

    WARNING: IPv4 forwarding is disabled. Networking will not work.

    警告:IPv4转发被禁用。人际关系网行不通。

    解决方法: 跳转: https://blog.csdn.net/yjk13703623757/article/details/68939183

  2. 访问 http://localhost:9000 地址,等待出现下面界面。点击界面右上角 log in ,并使用默认用户和密码 admin / admin登录。

  3. 登录后按照下图中步骤,生成访问 token (生成声纳令牌A)

    在这里插入图片描述

配置 Jenkins

Jenkins 安装 SonarQube Scanner 插件

Jenkins 安装 SonarQube Scanner 插件。

Jenkins 配置 SonarQube Scanner 插件

  1. 系统设置

    在 Jekins 中,进入 系统管理->系统设置->SonarQube servers: 勾选 Enable injection of SonarQube server configuration ... 选项。输入:

    • Name: 可自定义。

    • Server URL: SonarQube 服务器的 URL。

    • Server authentication token: 点击 Add 配置凭证:类型: 选择 GitLab API tokenAPI token: 为前面部署 SonarQube 服务器时创建的 token。

    在这里插入图片描述

    点击 Add 没有反应,建议更换浏览器,是浏览器兼容性问题。

    在这里插入图片描述

  2. 全局工具配置

    进入 系统管理->全局工具配置->SonarQube Scanner: 点击 SonarQube Scanner installations... 并配置 SonarQube Scanner

    在这里插入图片描述

    点击 Maven installations... 并配置 Maven

    在这里插入图片描述

创建 Maven 项目

  1. Source Code Management (源码管理): 选择 Git

    • Repository URL: 为 GitLab/GitHub 地址。

    • credentials (凭证信息): 点击 Add 添加凭证。在这里就不详细说明了。

    • Additional Behaviours: 添加 Clean before checkout

    在这里插入图片描述

  2. Build Environment (构建环境): 勾选 Prepare SonarQube Scanner environment

    在这里插入图片描述

  3. Post Steps (发布步骤): 点击 Add post-build step,添加 Execute SonarQube Scanner

    Task to run: 输入 scan,即分析代码。
    Analysis properties: 输入以下内容:

     sonar.projectKey=demo
     sonar.projectName=demo
     sonar.language=java
     sonar.java.binaries=$WORKSPACE/target/classes/ 
     sonar.sources=$WORKSPACE/src
     sonar.java.source=1.8
    
    • sonar.language 指定了要分析的开发语言(特定的开发语言对应了特定的规则)

    • sonar.java.binaries 定义了需要分析代码的编译后 class 文件位置

    • sonar.sources 定义了需要分析的源代码位置(示例中的$WORKSPACE 所指示的是当前 Jenkins 项目的目录)

    • sonar.java.source 指定java版本

    在这里插入图片描述

测试 Jenkins 任务

构建项目:点击立即构建。

在这里插入图片描述

执行成功后,打开 SonarQube 的地址,即可看到代码检查结果。

在这里插入图片描述

至此,已经完成了第一步,Jenkins 与 Sonar 之间已经打通。代码也已经可以被扫描了。


接下来了是完成第二步,打通 GitLab 与 Jenkins 之间的 Sonar 通道,当代码提交到 GitLab 上时,GitLab 通知 Jenkins 构建项目。这一步完成之后,代码就可以自动触发了。

GitLab 创建 Personal Access Tokens

用户设置->Access Tokens->Personal Access Tokens:

Name: 自定义。

Scopes: 勾选 api

在这里插入图片描述

点击 Create personal access token 创建个人访问令牌。创建成功后,将生成的 Your New Personal Access Token 保存下来,接下来要用到。

在这里插入图片描述

Jenkins 安装 GitLab 插件

Jenkins 安装 GitLab 插件。

Jenkins 配置 GitLab 插件

在 Jekins 中,进入 系统管理->系统设置->Gitlab:

  • Connection name: 自定义。

  • Gitlab host URL: GitLab 的网址。

  • Credentials: 点击 Add 配置凭证:类型: 选择 GitLab API tokenAPI token: 为刚刚在 GitLab 生成的 Personal Access Token

在这里插入图片描述

在这里插入图片描述

点击 Test Connection 测试是否配置成功。测试成功后保存。

在这里插入图片描述

配置 Jenkins 任务

Build Triggers (构建触发器): 勾选 Build when a change pushed to Gitlab.Gitlab webhook URL...

这里的 webhook URL 在后面配置 GitLab 时需要用到,记得保存。点击 高级 按钮,然后点击 Generate 按钮生成 Secret token (秘密令牌)

在这里插入图片描述

在这里插入图片描述

GitLab 配置 webhook

在 Gitlab 的项目设置中选择 Integrations:

URL: 上一步的 webhook URL

Secret token: 上一步生成的 Secret token (秘密令牌)

由于每次代码提交到 GitLab 后都触发 Jenkins 执行任务,所以这里勾选 Push events,然后去掉 Enable SSL verification 选项,并点击 Add webhook 按钮完成添加。

在这里插入图片描述

在这里插入图片描述

测试 webhook

添加完成后,在下面可以看到刚才添加的 webhook,点击 Test 按钮在弹出的菜单中选择 Push events 发送测试请求。

在这里插入图片描述

发送成功后会显示 Hook executed successfully 信息。

在这里插入图片描述

webhook 发送成功后,到 Jenkins 中可以看到正在执行触发的任务。配置成功后,后面只要 git push到 GitLab 即可触发 Jenkins 执行 Sonar 任务。

至此,结束。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值