軟件測試相關【sonar】【配合gitlab實現提交代碼檢測】


1、下載Sonar GitLab Plugin 4.1.0

  官方地址:https://github.com/gabrie-allaigre/sonar-gitlab-plugin

  直接下載地址:https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2Fgabrie-allaigre%2Fsonar-gitlab-plugin%2Freleases%2Fdownload%2F4.1.0-SNAPSHOT%2Fsonar-gitlab-plugin-4.1.0-SNAPSHOT.jar

⚠️:Only SonarQube < 7.7, because preview mode is removed

  下載完成之后,放到如圖所示目錄下:

    

  

 

 

 

2、下載:SonarQube 7.6

  官方地址:https://github.com/SonarSource/sonarqube

  

  啟動sonarQube:

  

 

 

  默認訪問地址:http:localhost:9000

  默認賬號密碼:admin    admin

 

3、搭建gitlab 

  - 搭建過程省略

  - 新建一個User Token

    

 

 

      

 

 

     - 然后將sonarQube用戶,添加到需要檢測的項目中,分配"開發者"權限

  

4、sonarQube 關聯gitlab:

    - Gitlab url:填寫gitlab訪問地址

    - Gitlab User Token: 就是第三步創建完的access token

  

 

 

 

5、安裝gitlab-runner:

  我本地是mac,所以直接執行:brew install gitlab-runner

 

  如果是linux系統,則按照如下步驟安裝:

    - 注冊runner:

    注冊runner,你需要有一個項目,並且需要至少master權限。
    進入到項目,左側點擊settings->CI/CD頁面,選擇第二項Runners settings

      

 

     - 在安裝gitlab-runner所在機器上執行如下注冊流程:

1、Add GitLab’s official repository: 添加官方倉庫
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

2、Install the latest version of GitLab Runner: 安裝最新版本 sudo yum install gitlab-runner
3、To install a specific version of GitLab Runner: 安裝指定版本 yum list gitlab-runner --showduplicates | sort -r sudo yum install gitlab-runner-10.0.0-1
4、更新gitlab-runner sudo yum update sudo yum install gitlab-runner

5、注冊runner:
   [root@s102
/]# gitlab-runner register # 輸入 GitLab 地址 Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/): http://192.168.0.110/ # 輸入 GitLab Token, 此處的token為上圖中該項目針對runner的token值 Please enter the gitlab-ci token for this runner: oApF5Y_f1NRfCfeNbE5WRx # 輸入 Runner 的說明, 可以為空 Please enter the gitlab-ci description for this runner: gitlab-runner # 設置 Tag,可以用於指定在構建規定的 tag 時觸發 ci Please enter the gitlab-ci tags for this runner (comma separated): deploy # 這里選擇 true ,可以用於代碼上傳后直接執行(根據版本,也會沒有次選項) Whether to run untagged builds [true/false]: true # 這里選擇 false,可以直接回車,默認為 false(根據版本,也會沒有次選項) Whether to lock Runner to current project [true/false]: false # 選擇 runner 執行器,這里我們選擇的是 shell Please enter the executor: virtualbox, docker+machine, parallels, shell, ssh, docker-ssh+machine, kubernetes, docker, docker-ssh: shell


如果是docker安裝的,則需要如下:
Please enter the Docker image (eg. ruby:2.1):
alpine:latest

url:私有git的路徑
token:項目的token,用於關聯runner和項目
name:runner的名字,用於區分runner
tags:用於匹配任務(jobs)和執行任務的設備(runners)
executor:執行環境


備注:當我們完成設置后,可通過vi ~/.gitlab-runner/config.toml打開runner 的配置文件看到之前配置的內容

   官方示例:https://docs.gitlab.com/runner/register/

  

  啟動gitlab-runner: 

cd ~
gitlab-runner install
gitlab-runner start

 

6、配置maven:

  下載版本:maven:3.6.3-jdk-8

  配置文件:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      https://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository>/usr/share/maven/ref/repository</localRepository>

<mirrors>
  <!--配置私有maven鏡像-->
  <mirror>
    <id>nexus-private</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus osc</name>
    <url>http://127.0.0.1/repository/maven-central/</url>
  </mirror> 

  <mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>        
  </mirror>
</mirrors>
</settings>

 

7、開啟gitlab CI

  在項目根目錄下添加文件:.gitlab-ci.yml

stages:
  - scan

sonar-check:
  stage: scan
  tags:
    - code-check
  script:
    - mvn clean verify -Dmaven.test.skip=true
    - mvn -e -X --batch-mode sonar:sonar
        -Dsonar.host.url=http://127.0.0.1:7777
        -Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA
        -Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
        -Dsonar.gitlab.project_id=$CI_PROJECT_ID
        -Dsonar.issuesReport.html.enable=true
        -Dsonar.analysis.mode=preview #設置后,sonar不創建項目,只做分析

提交后,在gitlab項目界面,查看流水線即可查看執行狀態。

 

 

靜態分析:

mvn --batch-mode sonar:sonar \
    -Dsonar.host.url=http://10.236.65.36:9000 \
    -Dsonar.login=wanyang3 \
    -Dsonar.password=****** \
    -Dsonar.issuesReport.html.enable=true \
    -Dsonar.analysis.mode=preview \
    -Dsonar.preview.excludePlugins=issueassign,scmstats

 

 

mvn --batch-mode verify sonar:sonar \
    -Dsonar.host.url=http://10.236.65.36:9000 \
    -Dsonar.login=wanyang3 \
    -Dsonar.password=****** \
    -Dsonar.analysis.mode=preview \
    -Dsonar.gitlab.project_id=$CI_PROJECT_ID \
    -Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA \
    -Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME

  說明:sonar.gitlab.* 參數為插件可使用變量,每個變量有不同的用處,具體可參考 Sonar Gitlab Plugins properties,$CI_PROJECT_ID,$CI_COMMIT_SHA,$CI_COMMIT_REF_NAME 等變量為 GitLab CI 變量,可以在 CI 流程中直接使用這些變量

  具體可參考 GitLab CI Variables:https://docs.gitlab.com/ce/ci/variables

 

8、Issues Report Plugins

  Issues Report Plugins 介紹

使用 Issues Report Plugins 插件可以為我們生成一份 HTML 格式的問題報告,對於開發人員來說是很有好處的,我們可以在改動代碼后 Push 代碼到倉庫前,檢測一下代碼質量,生成問題報告,提醒自己避免提交有明顯問題的代碼到倉庫中,當然也可以去 SonarQube Web 上查看詳細情況。

  Issues Report Plugins 使用

  Issues Report Plugins 插件的使用很簡單,只需要 Maven 命令行指定參數執行即可。注意:SonarQube > 5.1 版本,該插件已經過時了,不過我們還是直接可以使用,免安裝。5.1 版本以后由 SonarLint 替代該插件。

mvn sonar:sonar 
    -Dsonar.analysis.mode=preview  # 設置 mode,默認為preview
    -Dsonar.issuesReport.lightModeOnly=true # 設置是否只生成新增問題的報告
    -Dsonar.issuesReport.html.enable=true # 設置生成 HTML 格式的報告
    -Dsonar.issuesReport.html.name=xxxx # 設置生成 HTML 報告的文件名字
    -Dsonar.issuesReport.html.location=/xx/xx # 設置生成 HTML 報告的文件存儲路徑
    -Dsonar.issuesReport.console.enable=true # 設置報告輸出到控制台

  當設置-Dsonar.issuesReport.html.enable=true時,該插件默認會生成兩份 HTML 報告,一份是包含所有問題的報告 ,一份為只包含新增問題的報告 ,除非設置了-Dsonar.issuesReport.lightModeOnly=true,則只生成包含新問題的報告。

  默認生成報告的路徑為<maven_project>/target/sonar/issues-report/,使用-Dsonar.issuesReport.html.location 可修改生成路徑。

  報告默認文件名為 issues-report.html (全部問題報告),issues-report-light.html(新增問題報告),使用-Dsonar.issuesReport.html.name=xxxx 可修改生成的文件名稱。

  當設置-Dsonar.issuesReport.console.enable=true時,則不會生成HTML文件報告,會將檢測結果打印到控制台輸出。

 

 

 

參考其他:

  GitLab-CI與GitLab-Runner:https://www.cnblogs.com/cnundefined/p/7095368.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM