摘要
在CICD的流程中对于的代码检查是必要的,在工程中Sonarqube是必不可少的工作,在构建CICD的系统架构中Sonarqube能帮助我们实现相关的代码检查工作。接下来我介绍的Sonarqube的构建个使用,同时与github jeknins等工具一起构建CICD系统。
一、Sonarqube的简介
sonarQube 是一款开源代码检测工具。本篇介绍通过 docker 来安装。大概的一个运作流程是这样的,先通过 sonar-scanner 插件扫描代码,把数据存储到数据库,sonarQube 读取数据库,将数据库展现在 web 平台。
二、Sonarqube在doceker构建
# 拉取两个Docker镜像
docker pull sonarqube
docker pull postgres
# 运行数据库容器
docker run --name postgresql -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres
# 运行sonarqube
docker run --name sonarqube --link postgresql -e SONARQUBE_JDBC_URL=jdbc:postgresql://postgresql:5432/sonar -p 9000:9000 -d sonarqube
三、Sonarqube扫描代码配置
四、SonarQube+Github配置
SonarQube
是一个自动代码审查工具,用于检测代码中的错误、漏洞和不规范的编码风格。本文实现利用Github
的Action
实现在代码提交时自动使用SonarQube
审查代码。
4.1 创建并安装Github APP
4.1.1 进去github设置页面
4.1.2 点击Developer settings
4.1.3 点击New Github App
按钮创建Github App
4.1.4 填写信息并设置权限
4.1.5 创建成功并生成客户端密钥
4.1.6 生成私钥并导入
4.2 配置SonarQube
4.2.1 在SonarQube
中配置的ALM集成
,配置Github
4.2.2 根据刚才创建Github APP
生成的信息创建Github配置
4.2.3 创建SonarQube token
4.3.4 使用手工模式创建
4.3.5 填写项目标识和项目名
4.3.6 记录生成的token, 之后要用
4.4 编写Github Action
4.4.1 创建Github Action
以便在提交代码时自动分析并将分析结果传到SonarQube
4.4.2 在.github/workflows/
目录下创建build.yml
文件
name: Build
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened]
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11 # 项目使用的jdk版本
- name: Cache SonarQube packages
uses: actions/cache@v1
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Cache Maven packages
uses: actions/cache@v1
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Build and analyze
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
run: mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar
4.4.3 此项目使用Maven构建
创建项目变量,这个环境变量会在上图中配置的Action
中用到
创建变量SONAR_TOKEN
,值为上面在SonarQube
生成的token
创建变量SONAR_HOST_URL
,值为上面在SonarQube
的地址
4.4.4 提交代码触发Action
进入SonarQube
的项目页面,可以看到该项目已经出现
博文参考
SonarQube篇-安装配置sonarqube+gitlab+jenkins+ldap集群_鬼刺-CSDN博客_sonarqube配置gitlab