持续集成四 搭建soanr

2021-01-29 10:48:59 浏览数 (1)

注意点:sonar7.9后不支持mysql

目录

一.docker安装sonar

第一种:数据库使用postgres

第二种:数据库使用mysql

二.docker-compose搭建

三.加入自定义bridge



一.docker安装sonar

首先创建挂卷目录

mkdir /data/sonarqube/conf

mkdir /data/sonarqube/data

mkdir /data/sonarqube/logs

mkdir /data/sonarqube/extensions

chmod 777 /data/sonarqube -R

第一种:数据库使用postgres

1.postgres安装

docker run -d --name pgdb -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -v /data/pgdata:/var/lib/postgresql/data -d postgres

2.sonar连接postgres容器

代码语言:javascript复制
docker run -itd --name sonarqube --link pgdb 
-p 9000:9000 
-e SONARQUBE_JDBC_URL="jdbc:postgresql://pgdb:5432/sonar" 
-e SONARQUBE_JDBC_USERNAME=sonar 
-e SONARQUBE_JDBC_PASSWORD="sonar" 
-e ES_JAVA_OPTS="-Xms1g -Xmx1g" 
-v /data/sonarqube/conf:/opt/sonarqube/conf 
-v /data/sonarqube/data:/opt/sonarqube/data 
-v /data/sonarqube/logs:/opt/sonarqube/logs 
-v /data/sonarqube/extensions:/opt/sonarqube/extensions 
sonarqube  

在执行命令后,sonar没启动成功,

查看日志:

docker logs sonarqube

如果运行出现:

max virtual memory areas vm.max_map_count 65530 is too low, increase to at least 262144

表示没有足够的内存权限

root用户执行:

sysctl -w vm.max_map_count=262144

永久修改:

在 /etc/sysctl.conf 文件最后添加一行

vm.max_map_count=262144

然后在运行(docker start sonarqube)

第二种:数据库使用mysql

1.mysql

docker run -d --name mysql56 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.6

2.sonar安装,连接mysql容器

代码语言:javascript复制
docker run -d --name sonarqube --link mysql56 
-p 9000:9000 
-e sonarqube_jdbc_username=sonar 
-e sonarqube_jdbc_password="sonar" 
-e sonarqube_jdbc_url="jdbc:mysql://192.168.0.111:3306/sonar?useunicode=true&characterencoding=utf8&rewritebatchedstatements=true&useconfigs=maxperformance" 
-v /data/sonarqube/conf:/opt/sonarqube/conf 
-v /data/sonarqube/data:/opt/sonarqube/data 
-v /data/sonarqube/logs:/opt/sonarqube/logs 
-v /data/sonarqube/extensions:/opt/sonarqube/extensions 
sonarqube

3.配置mysql的数据库和用户

代码语言:javascript复制
CREATE DATABASE sonar DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE USER 'sonar' IDENTIFIED BY 'sonar';

GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';

GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';

FLUSH PRIVILEGES;

默认账号admin/admin,进入sonar,查看是否连接成功,

安装插件

先安装 Chinese pacK (中文包),其他的可以先尝试安装,如果安装不上,手动安装

插件库: https://docs.sonarqube.org/display/PLUG/Plugin Library

checkstyle

findbugs

sonarjs(前端代码分析)

sonarJava (java代码分析,插件库里的名称,在线安装的名称是:Java Code Quality and Security)

二.docker-compose搭建

具体详细看: 运维篇 docker知识回顾 9.4节“Docker-compose编写”和9.5有详细说明

代码语言:javascript复制
version: '2'
services:
  pgdb:
    image: postgres
    ports:
      - 5432:5432
    volumes:
      - /data/pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: "sonar"
    container_name: pgdb

  sonarqube:
    image: sonarqube
    ports:
      - 9000:9000
    volumes:
      - /data/sonarqube2/conf:/opt/sonarqube/conf
      - /data/sonarqube2/data:/opt/sonarqube/data
      - /data/sonarqube2/logs:/opt/sonarqube/logs
      - /data/sonarqube2/extensions:/opt/sonarqube/extensions
    depends_on:
      - pgdb
    links:
      - pgdb:db
    environment:
      SONARQUBE_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONARQUBE_JDBC_USERNAME: sonar
      SONARQUBE_JDBC_PASSWORD: "sonar"
      ES_JAVA_OPTS: "-Xms1g -Xmx1g"
    container_name: sonarqube

三.加入自定义bridge

一般我们会在jenkins配置sonar信息,然后推送扫描信息到sonar,如果都是用docker搭建的,那么同一台宿主机上的jenkins和sonar就要加入相同的bridge

没有自定义网络就创建一个,要保证jenkins也是这个网络。

docker network create dep_network

加入:

docker network connect dep_network sonarqube

0 人点赞