前言

docker部署

错误1

解决1:

问题2:

解决2:

配置sonarqube

先来安装一个汉化插件吧

问题3

整合Sonar和gitlab

安装Gitlab-runner,获取gitlab-Token

进入gitlab后,选择runner,进行相应的Token获取。

安装gitlab-runner

让我们来个git项目测试吧

手动添加项目

创建完成后请在页面等待; 让我们上传下git的代码进行debug吧


前言

项目管理是困难的,所以需要借助一些工具去规范代码,扫描出代码潜在的缺陷。这方便SonarQube非常优秀,我们先介绍一下SonarQube检查功能:1,不遵守代码标准(checkstyle)
2,潜在缺陷(空指针)
3,糟糕的复杂度(难以理解)
4,重复(通用的方法需要归纳封装)
5,糟糕的注释
7,糟糕的设计(耦合度检查)

docker部署

docker pull jenkinsci/blueocean
docker run \-d \--name myjenkins   \-p 8080:8080 \-p 50000:50000 \-v /data/jenkins-data:/var/jenkins_home \-v /var/run/docker.sock:/var/run/docker.sock \-v /usr/bin/git:/usr/local/git \-v /usr/bin/mvn:/usr/local/mvn \-v /etc/localtime:/etc/localtime  \docker.io/jenkinsci/blueoceandocker pull sonarqube:9.6.1-community
vim  docker-compose.yaml
version: "3.1"
services:db:image: postgrescontainer_name: dbports:- 5432:5432networks:- sonarnetenvironment:POSTGRES_USER: sonarPOSTGRES_PASSWORD: sonarvolumes:- ./pg_db:/var/lib/postgresql- ./pg_data:/var/lib/postgresql/dataprivileged: truesonarqube:image: sonarqube:9.6.1-communitycontainer_name: sonarqubedepends_on:- dbports:- 9000:9000networks:- sonarnetenvironment:SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonarSONAR_JDBC_USERNAME: sonarSONAR_JDBC_PASSWORD: sonarvolumes:- ./logs:/opt/sonarqube/logs- ./data:/opt/sonarqube/data- ./extensions:/opt/sonarqube/extensionsprivileged: true
networks:sonarnet:driver: bridge

错误1

[root@localhost sonarqube]# docker logs -f sonarqube

09:43:55.666 [main] WARN org.sonar.application.config.AppSettingsLoaderImpl - Configuration file not found: /opt/sonarqube/conf/sonar.properties

2022.10.12 09:43:55 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube/temp

2022.10.12 09:43:55 INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on [HTTP: 127.0.0.1:9001, TCP: 127.0.0.1:43874]

2022.10.12 09:43:55 INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[ELASTICSEARCH] from [/opt/sonarqube/elasticsearch]: /opt/sonarqube/elasticsearch/bin/elasticsearch

could not find java in ES_JAVA_HOME at /usr/lib/jvm/java-11-openjdk/bin/java

2022.10.12 09:43:55 WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [ElasticSearch]: 1

2022.10.12 09:43:55 INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running

2022.10.12 09:43:55 INFO  app[][o.s.a.SchedulerImpl] Process[ElasticSearch] is stopped

2022.10.12 09:43:55 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped

[root@localhost sonarqube]# docker logs -f db

ls: cannot access '/docker-entrypoint-initdb.d/': Operation not permitted

ls: cannot access '/docker-entrypoint-initdb.d/': Operation not permitted

ls: cannot access '/docker-entrypoint-initdb.d/': Operation not permitted

解决1:

1如果是docker run 需要 加上参数 --privileged=true
2如果是docker-compose.yaml 需要加上 privileged: true

错误原因:权限不足的问题引起的

接着访问:http://localhost:9000/ 就可以了,默认管理员用户和密码为:admin/admin。

问题2:

解决2:

sonar自带数据库,但是会被提示

嵌入式数据库应仅用于评估目的、嵌入式数据库无法扩展,不支持升级到SonarQube的较新版本,也不支持将数据从中迁移到其他数据库引擎。

以上错误原因是我的yaml 有问题,问题已修复

改完需 将目录与docker实例全部删除重新做

cd /data/sonarqube

docker stop db sonarqube

docker rm -f  db sonarqube

rm  -rf data extensions logs pg_d*

docker-compose up -d

然后登陆页面去看,错误提示消失

docker ps

CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS              PORTS                                              NAMES

641eea952d57        sonarqube:9.6.1-community       "/opt/sonarqube/bi..."   5 seconds ago       Up 4 seconds        0.0.0.0:9000->9000/tcp                             sonarqube

99c631eb5b0d        postgres                        "docker-entrypoint..."   6 seconds ago       Up 5 seconds        0.0.0.0:5432->5432/tcp                             db

1884515515a6        docker.io/jenkinsci/blueocean   "/sbin/tini -- /us..."   23 hours ago        Up 23 hours         0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   myjenkins

配置sonarqube

先来安装一个汉化插件吧

SonarQube提供了强大的插件管理功能,以中文语言包为示例,讲解如何安装插件:

登录成功后,选择Administration ——> Marketplace ——> Plugins,在搜索框输入Chinese就可以选择安装了

问题3

插件页面能搜到插件,但是没有install按钮; 需要选择上面的声明阅读后,才能出现install的按钮。【如果不在部署的那台机器上安装, 会提示联系管理员安装】

同时安装findbug插件,用于任务跟踪

当状态显示为install pending时,说明插件安装完成,点击restart server即可生效

整合Sonar和gitlab

安装Gitlab-runner,获取gitlab-Token

进入gitlab后,选择runner,进行相应的Token获取。

安装gitlab-runner

# 拉取镜像
docker pull gitlab/gitlab-runner
# 创建容器映射目录
mkdir -p /data/gitlab-runner/config
# 创建容器并运行
docker run -d \
--name gitlab-runner \
--restart always \
-v /data/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner
配置gitlab-runner相应的参数(用上图中url与token):docker exec -it gitlab-runner gitlab-runner register -n \
--url http://git.yoyi.tv/ \
--registration-token DmxqxgWsoEpGynLUrGgj \
--executor docker \
--description "Docker Runner" \
--docker-image "sonarsource/sonar-scanner-cli:latest" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock配置完成后,config下会生成配置文件

让我们来个git项目测试吧

手动添加项目

是否需要集成自己喜欢的CI,使用gitlab进行持续集成和持续部署--》选择代码编码--》按照提示在git中创建文件sonar-project.properties   .gitlab-ci.yml  与CI/CD

 

创建完成后请在页面等待; 让我们上传下git的代码进行debug吧

等待CI/CD进行

查看sonaroube手动创建的项目

可以点进各bugs等中查询详情,这样就完成了;

docker 部署jenkins + sonarqube + postgresql 代码扫描相关推荐

  1. Mac docker部署jenkins,在jenkins上运行自动化代码

    一.docker部署jenkins docker run -d -p 7000:8080 --name py42jenkins -u root -v /var/run/docker.sock:/var ...

  2. docker部署Jenkins

    本文记录了docker部署Jenkins全过程,以及遇到的一些坑和解决方法. 准备工作 主机上已安装docke(19.03.8版本) 主机上已安装jdk(建议1.8.0_161以上) 步骤 1.拉取最 ...

  3. docker 部署jenkins 主节点子节点

    介绍:docker部署jenkins主节点.子节点 一.安装配置主节点 1.下载主节点镜像 2.138.2 可以自己下载最新的 docker pull jenkins/jenkins:2.138.2 ...

  4. docker部署jenkins,发布任务执行scp免密传输

    docker部署jenkins,发布任务执行scp免密传输 # 因为jenkins的任务都是以jenkins用户执行,必须以jenkins用户进入容器生成公私钥 $ docker exec -it - ...

  5. 【sonar集成jenkins实现静态代码扫描】

    一 jenkins安装 由于公司的jenkins是用于做服务部署,不能够安装集成需要的sonarqube-scanner插件,所以我们需要自己安装一个jenkins,jenkins的安装可以通过hom ...

  6. Docker部署Jenkins服务

    Jenkins部署参考链接: https://blog.csdn.net/qq_38776582/article/details/98876819 https://www.cnblogs.com/Ly ...

  7. 华为云ECS服务器中通过docker部署jenkins

    1.什么是docker? Docker解决了软件环境部署复杂的问题. 对于一个传统的软件工程,开发人员把写好的代码放到服务器上去运行是一件很头疼的事情,因为常常会出现环境不兼容二导致各种各样的bug. ...

  8. 插件代码_我们开源了一款 SonarQube iOS 代码扫描插件

    背景: 我们在公司(好未来)内部开发了一套基于 SonarQube 的静态代码扫描服务,得益于 SonarQube 开源版本本身的功能,我们可以直接复用支持主流的编程语言,但 SonarQube 的开 ...

  9. SonarQube iOS 代码扫描插件(Objective-C/Swift/Infer/sonar-swift)

    仓库地址:https://github.com/tal-tech/sonar-swift 欢迎 Star. 介绍 静态代码扫描是一种检测项目代码的方式,能够在不运行代码的情况下对代码进行扫描,可以扫描 ...

最新文章

  1. 笔记 - ES6 - 学前浅析
  2. AI已能按音乐风格填词,周杰伦又有御用作词了?|在线可玩
  3. mybaits二十四:缓存原理示意图
  4. EasyPR-Java开源中文车牌识别系统工程部署
  5. vim查看cmd打印的trick
  6. Best Time to Buy and Sell Stock(动态规划)
  7. ASP.NET Core中的响应压缩
  8. 表达式中常用到的运算符
  9. yaf php源码,PHP-Yaf执行流程-源码分析
  10. 只删除字符串前面的‘*’号。
  11. 设置编译out_matlab2017a与 CCS 6.2联调设置
  12. Visio画UML图基本操作及技巧解析
  13. EXT Column Tree 的应用
  14. 自制导纳信号发生器 [原创cnblogs.com/helesheng]
  15. STL标准模板库操作 --- map
  16. LeetCode Array 最长回文子串-数组和string题目
  17. Django book 2.0
  18. 一篇文章教会你使用Python下载抖音无水印视频
  19. ArcMap下停靠栏的设计与实现
  20. QT关于屏幕保护程序

热门文章

  1. Hadoop in action 第45678章
  2. 有AI就不搬砖?超乎你的想象!道翰天琼认知智能机器人平台API接口大脑为您揭秘-1。
  3. 【TensorFlow】DNNRegressor 的简单使用
  4. 一秒快速修正 mysql ERROR 1406 (22001): Data too long for column ‘name‘ at row 1
  5. 公司债务法人代表有义务还吗?
  6. href传中文参数乱码问题
  7. 【第三方互联】11、创建支付宝(Alipay)互联应用
  8. 想入门自学编程,应该怎么开始?
  9. 句子重写任务近年有哪些值得关注的工作?看这一篇就够了!
  10. strictmath_Java StrictMath cbrt()方法与示例