什么是SonarQube?

看看维基百科的说明:

SonarQube与CI/CD架构图

SonarQube与CI/CD架构图

Docker运行SonarQube

简单了解之后,开始安装SonarQube.这里用Docker安装

注:这里用mysql来存储SonarQube的数据,SonarQube7.9起已经不在支持mysql了,可以安装官方推荐的PostgreSQL

  • SonarQube 6.7.7
  • Docker-CE 19.03.1
  • Mysql 5.7

安装

直接运行这个docker命令来安装,网上其他的教程有什么挂载文件什么的,我试了都会安装失败,原因还是因为权限原因,因为SonarQube不是以root用户运行的,导致没权限读写挂载出来的文件夹.

注意:创建容器前一定要先保证你连的容器有对应的数据库

docker run -d --name sonarqube -p 9099:9000 -p 9092:9092 --link=dev_mysql:mysql -e SONARQUBE_JDBC_USERNAME=app -e SONARQUBE_JDBC_PASSWORD=app -e SONARQUBE_JDBC_URL="jdbc:mysql://mysql:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" --restart=always sonarqube:6.7.7-community
  • --link=dev_mysql:mysql     这个命令我链接到了我的mysql容器,dev_mysql是容器的名字,mysql是在SonarQube容器里的别名,所以链接数据库时直接用mysql这个别名就可了.

  • SONARQUBE_JDBC_USERNAME :数据库的账户

  • SONARQUBE_JDBC_PASSWORD :数据库密码

访问

安装好后直接访问9099端口,登录的账户和密码默认都是admin.首页就是这个样子的.


Jenkins集成SonarQube

Jenkins和SonarQube都是运行在Docker容器里的

下载和安装插件

直接下载最新版的,然后导入,导入的方法可以看插件导入方法[1]

  • 插件下载地址:https://updates.jenkins.io/download/plugins/sonar/

SonarQube生成Token

进入SonarQube管理界面

Administration->Security->Users


然后随便输入一个名字,点击生成,记下Token


添加全局凭证

类型选Secret text,然后Secret和ID输入框都填入刚才生成的Token


设置SonarQube servers

进入 系统管理->系统设置->SonarQube servers    设置好后点保存

因为我SonarQube和Jenkins安装在同一台机器不同的Docker容器里的,所以这里URL直接填SonarQube的Docker容器的IP和端口


安装SonarQube Scanner

下载压缩包

  • 下载SonarQube Scanner压缩包:SonarQube Scanner[2]

解压到Jenkins挂载出来的目录里

只有解压到挂载出来的Jenkins的目录里,Docker容器安装的Jenkins才能读取到,我这里是宿主机的/opt/jenkins挂载到了Jenkins容器里的/var/jenkins_home目录上,所以我只要解压到宿主机的/opt/jenkins目录中就可以了

Jenkins配置全局工具

进入 系统管理->全局工具配置->SonarQube Scanner     找到模块后点击新增SonarQube Scanner

SONAR_RUNNER_HOME填你Jenkins这个Docker容器里的路径


构建一个Maven项目

网上很多教程说要勾上这个选项:

其实这个是可选的,下面有一句话:These variables are useful when configuring a SonarQube analysis using standard build steps such as Maven, Gradle, Ant, and command line scripts.This feature is not needed if you're using "SonarQube Scanner" or "SonarScanner for MSBuild" build steps.

翻译过来就是:因为我们这里用的就是SonarQube Scanner,所以这个我们是可以不用勾上的,但是勾上也没影响;

开始构建

  • 具体怎么构建项目可以看:Jenkins教程-创建Maven项目[3],这里就不多介绍了

添加Execute SonarQube Scanner

在原来构建的基础上加上Execute SonarQube Scanner,就可以了


在Analysis properties里填上构建的参数


唯一的项目标识符(必填) sonar.projectKey =tiny-config1

项目元数据(以前是必需的,自SonarQube 6.1起是可选的) sonar.projectName =tiny-config1 sonar.projectVersion = 1.0

源目录的路径(必需) sonar.sources = srcDir1,srcDir2

测试源目录的路径(可选) sonar.tests = testDir1,testDir2

Java项目编译类的路径(可选) sonar.java.binaries = bin

逗号分隔的库路径列表(可选) sonar.java.libraries = path / to / library.jar,path / to / classes / dir

附加参数 sonar.my.property =value

保存后就可以正常构建了.

错误解决(没有错误可跳过这段)

如果在构建项目的时候,Jenkins控制台如果报一下错误,这是因为SonarQube的Java版本太低造成的

升级SonarQube的Java版本

进入SonarQube的管理台:Administration->Marketplace->SonarJava

如果你版本没升级,右边会有个update按钮,点击就可以升级了,升级完后重启SonarQube;这边因为我已经升级过了,所以没有这个按钮


构建完成后

Jenkins控制台显示SUCCESS就表示构建成功了


这时候就可以点击构建项目的SonarQube直接跳转到SonarQube控制台了


这里就可以看到结果了


总结

到这里就可以根据SonarQube的提示去改BUG了.这BUG有点多=_=!.

在搭建过程中,最主要的就是那个SonarQube Scanner这个的安装了,因为Jenkins都是Docker化的,所以他可以选择自动安装,但是我这边选择自动安装却没用,所以就自己下载了SonarQube Scnner的包挂载到Jenkins容器里去,然后直接指定SonarQube Scnner的目录就可以了;

参考资料

[1]

插件导入方法: https://mjava.top/jenkins/problem-jenkins-01/

[2]

SonarQube Scanner: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873-linux.zip

[3]

Jenkins教程-创建Maven项目: https://mjava.top/jenkins/build-jenkins-mavne/


docker运行jenkins挂掉_【图文】Jenkins教程集成SonarQube相关推荐

  1. docker运行mysql性能_使用docker运行mysql

    以前开发的时候都是用本地的sqlite开发,但是极少数情况下,sqlite支持的语法发布到服务器上链接mysql会报错. 为了避免这种现象,还是链接本地mysql开发还是更稳定的, 可是开发的项目多了 ...

  2. docker jenkins 公钥_搭建 Jenkins 与 GitLab 的持续集成环境

    一.生成新的公私钥 ssh-keygen -t rsa -b 4096 -C "11776174@qq.com" Generating public/private rsa key ...

  3. android 重启后进入安全模式_图文详细教程:台式电脑或笔记本也可以运行Android系统,凤凰OS...

    安装完Android系统后会和Windows双系统共存,并不会影响原来系统的数据安全,不用担心! 好了,简单粗暴,第一步:下载凤凰OS安卓系统.附官网下载链接http://www.phoenixos. ...

  4. jenkins自动化_通过Jenkins自动化PSR合规性

    jenkins自动化 one of the reasons our society can function is our ability to communicate in a standard? ...

  5. docker运行python程序_如何使用Docker运行多个Python脚本和一个可执行文件?

    我想创建一个包含两个Python包和一个包含一个可执行文件的包的容器.在 这是我的主包(dockerized_packeg)树:dockerized_project ├── docker-compos ...

  6. python运行怎么下一步_简明Python3教程 18.下一步是什么

    如果你有认真通读本书之前的内容并且实践其中包含的大量例程,那么你现在一定可以熟练使用python了. 同时你可能也编写了一些程序用于验证python特性并提高你的python技能.如果还没有这样做的话 ...

  7. docker 运行windows程序_如何从Windows上运行任何Linux图形GUI程序?

    Win10上的wsl模式虽然解决了运行linux程序的痛点,然而所运行的程序依然受困于Terminal中.比如emacs: 终端版本的emacs 试图获得赏心悦目的视觉效果,比如优美的字体和图形,必须 ...

  8. Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

    一.前言 Jenkins作为CI.CD的先驱者,虽然现在的风头没有Gitlab强了,但是还是老当益壮,很多中小公司还是使用比较广泛的.最近小编经历了一次Jenkins发包,感觉还不错,所以自己学习了一 ...

  9. navicat运行db文件_使用 YAML 文件配置 Jenkins 流水线

    本文转载自:Jenkins 中文社区 这也是一种自定义流水线 DSL 的方法 几年前,我们的 CTO 写了一篇关于 使用 Jenkins 和 Docker 为 Ruby On Rails 应用提供持续 ...

最新文章

  1. vue 定位所在地_vue系列教程之微商城项目|商品购买
  2. VTK:Utilities之Screenshot
  3. jboss4 java_JBoss核心Java Web服务
  4. 网页防篡改技术_阿里云云安全中心和web应用防火墙的网页防篡改功能有什么不同...
  5. windows守护进程_在Linux的Windows子系统上(WSL)使用Docker(Ubuntu)
  6. CSDN Chrome插件更新:用CSDN的方式让开发再快一点
  7. session依赖cookie,如果浏览器禁用了cookie呢?
  8. Win7简单方法让笔记本变身无线热点,共享手机上网
  9. pcie转m2装系统win10_NVMe SSD安装Win10系统详解:小白秒懂
  10. vue组件库(Element UI)
  11. 【PR】PR剪辑视频片段并保存
  12. 大学计算机实验报告u盘启动安装,用U盘安装Win7操作系统实验报告.doc
  13. 据说这是一堂价值300万元的课。有空看下,不要错过
  14. App中快速复用微信登录授权的一种方法
  15. layui之图片上传
  16. 2022-2028全球人造黄油结晶器行业调研及趋势分析报告
  17. java远程连接linux并发送命令,两种方案比较Jsch与ganymed-ssh2
  18. JDOM解析xml文件
  19. ubuntu windows 分别安装openslide
  20. 基于kubernetes平台的CICD持续集成

热门文章

  1. 虚拟机 NAT模式与桥接模式的区别
  2. 公众号 接收规则 消息_微信公众平台 发送模板消息(Java接口开发)
  3. qt mysql 系统时间_使用QT和参数在SQLite数据库中插入日期时间
  4. 判断表达式值是否为空_如何在 Python 中判断列表是否为空
  5. java tostring方法_Java虚拟机如执行方法调用的(二)?
  6. python计算PR曲线sklearn.metrics.precision_recall_curve
  7. matlab/ansys协同的一个例子
  8. JavaSE——流程控制(接收输入Scanner、分支结构(if与switch)、循环结构(while、do-while与for))
  9. Structure from motion 问题
  10. 数据预测之BP神经网络具体应用以及matlab实现