前言

本篇博客介绍了如何通过Jenkins、GitLab和SonarQube自动化地进行代码检测和打包,从而提高软件开发的效率和质量。

步骤

在Jenkins安装GitLab插件

  1. 在Jenkins的系统管理-插件管理安装GitLab Plugin插件

    image-20220110173520572

  2. 系统管理-Manage Credentials添加GitLab API token

    image-20220110173659712

    填写在GitLab创建的Token

    image-20220110153529155

    点击确定即可

  3. 系统管理-系统配置,找到GitLab配置,填写连接名、URL,选择刚刚添加的API Token,点击Test Connection,看到success则正常

    image-20220110154002502

在Jenkins安装SonarQube Scanner插件

  1. 系统管理-插件管理安装SonarQube Scanner插件

    image-20220110154340054

  2. 系统管理-Manage Credentials添加Secret text,Secret填写SonarQube创建的Token,点击确定

    image-20220110174124369

  3. 系统管理-系统配置,找到SonarQube servers配置,填写Name、Server URL,选择刚刚创建的Secret text

    image-20220110174308669

配置自动化打包及检测

打包某个分支

利用GitLab Webhook配置合并代码到指定分支后触发

配置

  1. 新建Jenkins任务

    image-20220110175919363

  2. 修改配置,填写GitLab地址,添加用户名和密码

    image-20220110180253237

  3. 添加Sonar Scanner插件

    image-20220110180334641

  4. Analysis properties填写以下内容

    sonar.projectKey=wdz_sync
    sonar.projectName=wdz_sync
    sonar.projectVersion=1.0
    
    sonar.language=java
    sonar.sourceEncoding=UTF-8
    
    sonar.sources=$WORKSPACE
    sonar.java.binaries=$WORKSPACE
    sonar.java.source=1.8
    
    • projectKey填写SonarQube上的项目Key
    • projectName填写项目名称,不建议中文
    • projectVersion填写项目版本
    • sources填写$WORKSPACE,使用变量的方式,即项目目录

构建

  • 这个是Sonar检测完成的日志

    image-20220110180802462

    访问SonarQube可以查看扫描结果

  • 下面是打包成功的日志

    image-20220110180848798

可能会出现问题:Caused by: net.sourceforge.pmd.lang.java.ast.ParseException: Line 123, Column 60: Cannot use the diamond generic notation when running in JDK inferior to 1.7 mode!

原因:没有加jdk的编译版本

解决方案:Analysis properties加上sonar.java.source=1.8

自动打包某个Tag

利用GitLab Webhook配置打Tag后触发,使用Shell脚本手动打包最新的Tag标签代码

  1. 新建Jenkins任务

    image-20220110175919363

  2. 修改配置,填写GitLab地址,添加用户名和密码

    image-20220110180253237

  3. Pre Steps新增执行Shell

    image-20220112111347591

  4. 写Shell脚本

    这里是打包最新的Tag,也可以使用Git Paramter传入参数

    #!/bin/bash
    echo '======================================'
    echo 'check tags'
    export tag=`git describe --abbrev=0 --tags`
    echo 'last tags is '$tag
    echo 'checkout tags'
    git checkout $tag
    echo 'finish'
    echo '======================================'
    
  5. 可以加入Sonar Scanner扫描器

    /var/jenkins_home/tools/hudson.plugins.sonar.SonarRunnerInstallation/sonar/bin/sonar-scanner -Dsonar.host.url=http://10.8.46.203:9000/ -Dsonar.login=5f4678fa712a70a9e4d867dac67fa18bd7bb491a -Dsonar.language=java -Dsonar.projectName=wdz_sync -Dsonar.projectVersion=$tag -Dsonar.sourceEncoding=UTF-8 -Dsonar.projectKey=wdz_sync -Dsonar.java.source=1.8 -Dsonar.java.binaries=$WORKSPACE -Dsonar.sources=$WORKSPACE -Dsonar.projectBaseDir=$WORKSPACE
    

    上面的配置根据实体情况进行调整。

  6. 配置其他功能后,点保存即可

    image-20220112111607162