Docker搭建Jenkins+sonarqube持续集成代码质量扫描

搭建sonar环境(搭建任何环境都要注意端口的占用)

因为我们的服务都是运行在docker上的所以我们的sonar也用docker进行搭建
因为新版本的sonar不再支持Mysql数据库所以我们要用到postgres数据库

思路:

1.首先要搭建一个能正常访问的sonarqube平台(要先搭建数据库)

2.然后搭建代码扫描器,由扫描器把扫描代码的结果上传到sonarqube存储到数据库中
(因为我们的jenkins项目是流水线项目所以没直接修改构建的项目,而是通过jenkinsfile来进行操作)

实施过程:

postgres:

docker pull  postgres
docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres

sonarqube:

docker run --name sq --link db -e SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD="sonar" -p 9000:9000 -p 9092:9092 -d sonarqube

访问IP:9000可以访问到sonarqube平台

因为我们用的是linux扫描器所以需要下载安装包

安装包地址(因为我们镜像下载都是最新版本的所以安装包也下载最新版本否则出现版本问题很麻烦):

https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/

安装扫描器:

cd /root
mkdir sonar-cli
cd sonar-cli
rz(使用自己的方法把安装包拉倒服务器中)
unzip sonar-scanner-cli-4.6.0.2311-linux.zip

要扫描某个项目的代码需要修改Jenkinsfile
在steps下执行命令添加执行命令

sh " bash /root/sonar-cli/sonar-scanner-4.6.0.2311-linux/bin/sonar-scanner    -Dsonar.projectKey=tcr-app  -Dsonar.projectName=tcr-app  -Dsonar.sources=.   -Dsonar.host.url=http://172.24.111.3:9000   -Dsonar.login=admin    -Dsonar.password=root"  (-Dsonar.projectName=tcr-app项如果没有出现扫描完代码不显示项目名称的情况下不用添加否则还会出现一点小bug)

-Dsonar.projectKey=tcr-app  (项目标识,如果项目没有定义名称的话那么就会默认使用标识作为项目名称)
-Dsonar.projectName=tcr-app (项目名称,最后扫描完代码上传到sonarqube的项目名字)	
-Dsonar.sources=. (扫描代码的路径)
-Dsonar.host.url=http://172.24.111.3:9000 (指定上传的sonarqube服务)
-Dsonar.login=admin (登陆sonar的用户)
-Dsonar.password=root"  (登陆sonar的密码)

预计会遇到的问题:
版本问题:这个问题就需要自己去查了,我直接都用的最新版本
编码格式字符集问题:会导致代码扫描不成功
解决:缺少语言包

是在不懂就把下面的包全部安装上:yum 安装 、dnf安装、agt安装
evolution-data-server-langpacks-3.28.5-11.el8.noarch
langtable-data-0.0.38-5.el8.noarch
glibc-langpack-en-2.28-72.el8_1.1.x86_64
langtable-0.0.38-5.el8.noarch
slang-2.3.2-3.el8.x86_64
glibc-langpack-zh-2.28-72.el8_1.1.x86_64
langpacks-en-1.0-12.el8.noarch
python3-langtable-0.0.38-5.el8.noarch

本地测试如果成功了,可能jenkins也会失败,因为可能缺少插件Locale plugin,如果有这个插件那么需要添加单个节点的环境变量
在配置从节点里面增加节点属性里面增加环境变量 LANG 变量内容 zh_CN.UTF-8(根据本地服务器的变量LANG来决定)
再次构建应该就可以了。

你可能感兴趣的:(运维文档,linux,运维,centos,docker,服务器)