devops - Docker安装SonarQube

SonarQube 代码质量检查工具

相关文章:Docker安装GitLabDocker安装Jenkins


拉取postgres数据库

docker pull postgres

查看SonarQube镜像

docker search sonarqube

拉取GitLab镜像

注意sonarqube的版本,高版本已经不兼容jdk1.8

docker pull sonarqube:8.9.6-community

准备 docker-compose

/usr/local/docker/sonarqube_docker/docker-compose.yml

version: '3.1'
services:
  db:
    image: 'postgres'
    container_name: db
    ports:
      - 5432:5432
    networks:
      - sonarnet
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
      
  sonarqube:
    image: 'sonarqube:8.9.6-community'
    container_name: sonarqube
    depends_on:
      - db
    ports:
      - 9000:9000
    networks:
      - sonarnet
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar

networks:
  sonarnet:
    driver: bridge

创建容器

docker-compose up -d

跟踪日志

docker logs -f gitlab

下载中文插件:

报错显示内存不足:

增加虚拟内存:

vim /etc/sysctl.conf
vm.max_map_count=262144

修改生效:

sysctl -p

测试访问:

http://192.168.31.102:9000/ 默认账号admin,密码admin

使用Maven进行代码质量检测

1)修改 Maven 的 conf/settings.xml 文件:

profiles、activeProfiles 标签下新增 sonar 配置

  </profiles>
    <profile>
      <id>jdk8</id>
	  <activation>
	    <activeByDefault>true</activeByDefault>
		<jdk>1.8</jdk>
	  </activation>
	  <properties>
	    <maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
	  </properties>
    </profile>

	<profile>
	  <id>sonar</id>
	  <activation>
	    <activeByDefault>true</activeByDefault>
	  </activation>
	  <properties>
	    <sonar.login>admin</sonar.login>
		<sonar.password>password</sonar.password>
		<sonar.host.url>http://192.168.31.102:9000</sonar.host.url>
	  </properties>
	</profile>
  </profiles>

  <activeProfiles>
    <activeProfile>jdk8</activeProfile>
    <activeProfile>sonar</activeProfile>
  </activeProfiles>

2)mytest项目下的控制台执行代码质量检测:

mvn clean
mvn compile
mvn sonar:sonar

3)执行成功后访问 http://192.168.31.102:9000/ 会显示检测结果

Sonar-Scanner 代码质量检测

下载unzip,用于解压zip文件

yum -y install unzip

将 sonar-scanner-cli-4.6.0.2311-linux.zip 放到 /root 下

unzip /root/sonar-scanner-cli-4.6.0.2311-linux.zip

目录名字改短

mv /root/sonar-scanner-4.6.0.2311-linux/ /root/sonar-scanner/

将 sonar-scanner 移动到 jenkins_docker/data/ 数据卷下

mv /root/sonar-scanner/ /usr/local/docker/jenkins_docker/data/

修改sonar-scanner配置文件

vim /usr/local/docker/jenkins_docker/data/sonar-scanner/conf/sonar-scanner.properties

在 Sonarqube(http://192.168.31.102:9000/) 上生成 token

进入 Jenkins 下 mytest 目录测试 sonar-scanner

cd /usr/local/docker/jenkins_docker/data/workspace/mytest
/usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=linux-mytest -Dsonar.login=366824812ef5c81172bbddbe7e4faed4a2684314 -Dsonar.projectKey=linux-mytest -Dsonar.java.binaries=./target/

执行成功后访问 http://192.168.31.102:9000/ 会显示检测结果

Sonarqube 整合 Jenkins

Jenkins 下载 SonarQube Scanner 插件:

Jenkins 系统管理 - 系统配置 SonarQube servers:

添加按钮点击没反应可以尝试写完Name、URL之后 应用 保存 重新进入该页面。如果还不行可以尝试重启 Jenkins:http://192.168.31.102:8080/restart

Jenkins 系统管理 - 全局配置 SonarQube Scanner:

Jenkins 项目下增加构建步骤:

sonar.projectname=${JOB_NAME}
sonar.projectKey=${JOB_NAME}
sonar.source=./
sonar.java.binaries=target

删除 jenkins 下 .scannerwork 文件夹:

rm -rf /usr/local/docker/jenkins_docker/data/workspace/mytest/.scannerwork/

在 Jenkins 中再次构建,查看日志是否有 sonarqube:

文档信息

Search

    Table of Contents