Docker 搭建 SonarQube + Jenkins 配置

Docker 搭建 SonarQube + Jenkins 配置

1.准备工作

 # 临时生效
 sysctl -w vm.max_map_count=262144
 sysctl -w fs.file-max=65536
 ulimit -n 65536
 ulimit -u 4096
 ​
 # 重启生效
 echo "sonar   -   nofile   65536
 sonar   -   nproc    4096" > /etc/security/limits.d/99-sonarqube.conf
 echo "vm.max_map_count=262144
 fs.file-max=65536" > /etc/sysctl.d/99-sonarqube.conf
 ​
 # 创建容器映射路径
 mkdir -p /home/sonar/postgres/{postgresql,data}
 ​
 mkdir -p  /home/sonar/sonarqube/{extensions,logs,data,conf}
 ​
 # 启动容器映射路径权限问题
 chmod -R 777 /home/sonar/*  
 ​

2.使用 dokcer-compose.yml 构建服务

 version: '3.1'
 services:
   postgres:
     image: postgres:latest
     restart: always
     container_name: my-postgres
     ports:
       - 54321:5432
     volumes:
       - /home/sonar/postgres/postgresql:/var/lib/postgresql
       - /home/sonar/postgres/data:/var/lib/postgresql/data
       - /etc/localtime:/etc/localtime:ro
     environment:
       TZ: Asia/Shanghai
       POSTGRES_USER: sonar
       POSTGRES_PASSWORD: sonar
       POSTGRES_DB: sonar
 ​
   sonar:
     image: sonarqube:9.6.0-community
     container_name: my-sonar
     depends_on:
       - postgres
     volumes:
       - /home/sonar/sonarqube/extensions:/opt/sonarqube/extensions
       - /home/sonar/sonarqube/logs:/opt/sonarqube/logs
       - /home/sonar/sonarqube/data:/opt/sonarqube/data
       - /home/sonar/sonarqube/conf:/opt/sonarqube/conf
       # 设置与宿主机时间同步
       - /etc/localtime:/etc/localtime:ro
     ports:
       - 9001:9000
     command:
       # 内存设置
       - -Dsonar.ce.javaOpts=-Xmx2048m
       - -Dsonar.web.javaOpts=-Xmx2048m
       # 设置服务代理路径
       - -Dsonar.web.context=/
     environment:
       TZ: Asia/Shanghai
       SONARQUBE_JDBC_USERNAME: sonar
       SONARQUBE_JDBC_PASSWORD: sonar
       SONARQUBE_JDBC_URL: jdbc:postgresql://192.168.164.130:54321/sonar?currentSchema=public
 ​

3.创建容器

 docker-compose -f docker-compose.yml up -d

4. 登录SonarQube

 #访问地址
 http://ip:9001
 #账号
 admin
 #密码
 admin

5.汉化

安装默认为英文需要安装 汉化插件

  • 离线安装

    汉化包插件下载地址: 汉化包地址

    下载插件后上传到 sonar 挂载目录 /home/sonar/sonarqube/extensions/downloads ,然后重启 docker-compose restart

  • 在线安装

    配置->应用市场>搜索插件 Chinese PackTraditional Chinese Language Pack ,安装完会提示重启 sonar,建议直接重启docker容器,过程非常缓慢

    Docker 搭建 SonarQube + Jenkins 配置_第1张图片

6. 安装Alibaba p3c Java 代码扫描插件

Sonar自带一套SonarWay代码扫描插件 属于内置,推荐和p3c插件一同使用,也可以进行规则筛选

  • 离线安装

    插件下载地址: p3c插件

    下载sonar-pmd-plugin-3.2.0-SNAPSHOT.jar,然后上传到/home/sonar/sonarqube/extensions/downloads目录中,重启生效

7.创建SonarQube用户Token

  • 点击右上角用户头像->我的账号

    Docker 搭建 SonarQube + Jenkins 配置_第2张图片

  • 选择 安全

    Docker 搭建 SonarQube + Jenkins 配置_第3张图片

  • Token生成

    及时记录token,只显示一次,

    Docker 搭建 SonarQube + Jenkins 配置_第4张图片

8.开启SCM配置

默认SCM是关闭的,如果不开启此配置,Jenkins构建项目扫描时会报错

Docker 搭建 SonarQube + Jenkins 配置_第5张图片

9.配置代码扫描权限

默认管理员用户是具备代码扫描权限的,下图举例说明如何配置

Docker 搭建 SonarQube + Jenkins 配置_第6张图片

10.代码质量配置

以Java举例

  • 质量配置->创建

Docker 搭建 SonarQube + Jenkins 配置_第7张图片

  • 创建新规则

上级选择 内置规则 这样既可以使用内置,也可以使用Alibaba的 p3c

Docker 搭建 SonarQube + Jenkins 配置_第8张图片

  • 创建成功后进行配置

Docker 搭建 SonarQube + Jenkins 配置_第9张图片

  • 激活配置

Docker 搭建 SonarQube + Jenkins 配置_第10张图片

  • 设为默认规则

Docker 搭建 SonarQube + Jenkins 配置_第11张图片

11.Jenkins 添加全局凭证

Docker 搭建 SonarQube + Jenkins 配置_第12张图片

12.安装 SonarQube Scanner 插件

Docker 搭建 SonarQube + Jenkins 配置_第13张图片

13.配置 SonarQube Sever

在 “系统管理” => “系统设置” 中找到 SonarQube servers

Docker 搭建 SonarQube + Jenkins 配置_第14张图片

进入“系统管理”=>“全局工具配置”中找到“SonarQube Scanner”,目录为安装SonarQube Scanner的目录。

Docker 搭建 SonarQube + Jenkins 配置_第15张图片

14.构建项目配置

因为每个项目配置的流程不同,只展示流程中 Sonar Scannar 配置,配置号此配置就可以进行构建了

 # must be unique in a given SonarQube instance
 sonar.projectKey=web_demo_freestyle  
 # this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
 sonar.projectName=web_demo_freestyle 
 sonar.projectVersion=1.0
  
 # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
 # This property is optional if sonar.modules is set.
 sonar.sources=.
 sonar.exclusions=**/test/**,**/target/**
 sonar.java.source=1.8
 sonar.java.target=1.8
 sonar.java.binaries=target/classes
  
 # Encoding of the source code. Default is default system encoding
 sonar.sourceEncoding=UTF-8

Docker 搭建 SonarQube + Jenkins 配置_第16张图片

15.分析状态

分析成功后,会在Sonar服务中显示当前项目的分析状态,可以进入项目中具体查看问题

Docker 搭建 SonarQube + Jenkins 配置_第17张图片

Docker 搭建 SonarQube + Jenkins 配置_第18张图片

Docker 搭建 SonarQube + Jenkins 配置_第19张图片

你可能感兴趣的:(jenkins,docker,postgresql)