docker上搭建SonarQube + Maven+Jenkins

准备环境

jdk1.8

mysql5.7

maven?3.3.9

下载sonar相关安装包

服务端:

sonarqube:http://www.sonarqube.org/downloads/

客户端工具:

sonar-runner:http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.3/sonar-runner-dist-2.4.zip

汉化:

中文汉化包:https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/tag/sonar-l10n-zh-plugin-1.27,下载之后将插件放到sonarqube的extensions/plugins目录下,重启sonar即可。

将sonarqube、sonar-runner包解压到/usr/local/下

>>unzip?sonar-runner-dist-2.4.zip

>>unzip?sonarqube-7.7.zip

安装mysql:

docker上安装mysql5.6

创建sonar数据库

mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;

mysql> CREATE USER 'sonar' IDENTIFIED BY 'sonar';

mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' ;

mysql> CREATE USER 'sonar'@'localhost'? IDENTIFIED BY 'sonar';

mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' ;

mysql> FLUSH PRIVILEGES;

修改配置文件

>>vim? ?/usr/local/sonarqube-7.7/conf/sonar.properties

sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

sonar.jdbc.username=snoar

sonar.jdbc.password=snoar

sonar.web.host=ip地址 #docker的IP

sonar.web.port=9000

>>vim /usr/local/sonarqube-7.7/conf/wrapper.conf

wrapper.java.command=/usr/bin/java ##把wrapper.java.command修改成本机的jdk1.8路径

>>vim sonar-runner-2.4/conf/sonar-runner.properties

sonar.host.url=http://ip:9000

sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

sonar.jdbc.username=sonar

sonar.jdbc.password=sonar

sonar.sourceEncoding=UTF-8

sonar.login=admin

sonar.password=admin

配置环境变量

>>vim ~/.zshrc

export SONAR_HOME=/usr/local/sonarqube-7.7

export SONAR_RUNNER_HOME=/usr/local/sonar-runner-2.4

export PATH=$PATH:$SONAR_RUNNER_HOME/bin

启动SonarQube

SonarQube不能以root用户启动,所以必须先创建一个非root用户

>>useradd sonar

>>chown -R sonar:sonar?sonarqube-7.7/

启动:

?>>su sonar

>>./usr/local/sonarqube-6.7.4/bin/linux-x86-64/sonar.sh start

关闭:

>>./usr/local/sonarqube-6.7.4/bin/linux-x86-64/sonar.sh stop

查看启动日志:

>>tail -f /usr/local/sonarqube-7.7/logs/sonar.log

登录http://ip:9000

Maven项目执行sonar扫描

如下,在maven的 setting.xml中加入SonarQube连接的配置

<pluginGroups>

? ? ? <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>

</pluginGroups>

<profiles>

? <profile>

? ? ? ? ? <id>sonar</id>

? ? ? ? ? <activation>

? ? ? ? ? ? ? <activeByDefault>true</activeByDefault>

? ? ? ? ? </activation>

? ? ? ? ? <properties>

? ? ? ? ? ? ? <sonar.host.url>http://localhost:9000</sonar.host.url>

? ? ? ? ? ? ? <sonar.jdbc.url>

? ? ? ? ? ? ? jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8

? ? ? ? ? ? ? </sonar.jdbc.url>

? ? ? ? ? <sonar.jdbc.username>sonar</sonar.jdbc.username>

? ? ? ? ? <sonar.jdbc.password>sonar</sonar.jdbc.password>

? ? ? ? ? </properties>

? </profile>

<profiles>

在需要扫描的目标项目的pom.xml中引入sonar-maven-plugin 插件?

<plugin>

? ? <groupId>org.sonarsource.scanner.maven</groupId>

? ? <artifactId>sonar-maven-plugin</artifactId>

? ? <version>3.6.0.1398</version>

</plugin>

在项目根目录下执行如下命令,成功之后即可生成sonar报告,可以去 web页面查看分析结果报告:

>>?mvn install sonar:sonar -DskipTests

或者 在mvn命令中指定sonar-maven-plugin:

>> mvn clean install org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar

Gradle项目执行sonar扫描

在项目的根目录下build.gradle里加入以下配置

buildscript {

? ? repositories {

? ? ? ? mavenCentral()

? //或者 maven {url "https://plugins.gradle.org/m2/"}

? ? }

? ? dependencies {

? ? ? ? classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.7.1" //插件后面的版本号可配

? ? }

}

apply plugin: "org.sonarqube"

sonarqube{

? ? properties{

? ? ? ? property "sonar.host.url", "http://ip:9000"? ? //sonarqube 服务器地址

? ? ? ? property "sonar.sourceEncoding", "UTF-8"

? ? ? ? property "sonar.sources", "src"

? ? }

}

配置完成之后,在根目录下执行:

>>gradle sonarqube --info??

跳过测试 加 -x testgradle sonarqube -xtest

在docker上搭建Jenkins(已安装jdk8)

安装tomcat

1)mkdir -p /usr/local/tomcat8

2)cd /usr/local/tomcat8

3)wget http://www-eu.apache.org/dist/tomcat/tomcat-8/v8.5.41/bin/apache-tomcat-8.5.41.tar.gz ##tomcat压缩包版本的版本可按需选择

4)tar -zvxf apache-tomcat-8.5.38.tar.gz -C .

5)cd apache-tomcat-8.5.38/bin

6)./startup.sh #启动tomcat 或 ./shutdown.sh 停止tomcat

7)ps aux | grep tomcat ##查看tomcat是否启动成功


安装Jenkins到webapps目录下

>> wgethttp://mirrors.jenkins-ci.org/war/latest/jenkins.war -P /usr/local/tomcat8/apache-tomcat-8.5.41/webapps

访问Jenkins主页http://ip:8080/jenkins按说明初始化jenkins即可

1、关闭Jenkins

http://ip:8080/jenkins/exit

2、重启Jenkins

http://ip:8080/jenkins/restart

3、重新加载配置信息

http://ip:8080/jenkins/reload

?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容

  • 教程:https://www.yiibai.com/jenkins/ 本节内容: Jenkins介绍 安装部署Je...
    达微阅读 9,005评论 2 77
  • 本文重点说明sonarqube的使用和搭建,以及集成到Jenkins,从因到果进行详细的说明。gitLab+Jen...
    GeekSpring阅读 25,529评论 1 7
  • 1.SonarQube Sonar的功能:是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检...
    Broom阅读 9,405评论 0 6
  • 【练习四| 可参考记录格式】 1.列出今天发生的每一件的事的结果(至少5-10件) 2.我对于这件事的结果怎么评估...
    闫晓丽314阅读 123评论 0 0
  • 前言: 本文两个模型是目标达成专家、幸福进化俱乐部创始人@易仁永澄老师,在【在行】app上开设的目标管理入门课程,...
    521杰行天下阅读 202评论 0 1