Sonar代码扫描笔记
准备
环境
1.java 11(sonar 新版本需要java 11)
2.SonarQube
注意点:启动时,若有端口冲突,则至\sonar\conf
路径下的sonar.properties
解开sonar.web.port=
该句的注释,并配置端口号
数据库配置
2019年4月10号,SonarQube发文称在7.9之后,所有的SonarQube的版本(CE、DE、EE和DCE)中将停止对MySQL的支持。建议所有的商业环境中使用PostgreSQL。故采用PostgreSQL
下载地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
port : 5432 user:postgres password:admin
步骤:
1.创建用户
2.创建sonar数据库
3.配置sonar.properties
.
4.重启sonar
参考教程:https://www.cnblogs.com/Simple-Small/p/12882948.html
启动
运行\sonar\bin\windows-x86-64\StartSonar
打开网址 http://localhost:9000 (或者自己配置的端口号,我的是8090)
管理员登录(初始账户:admin 初始密码:admin)(我的是账户 admin 密码adminadmin)
普通登录账户:users 密码:users (该账号为系统中配置所得:配置–>权限)
125地址:http://xx.xx.xx.xxx:9285/projects
扫描项目
点击创建项目–输入项目标识及显示名–创建令牌(生成的令牌token不会再显示第二次,要立即复制)–选择分析语言及操作系统–开始扫描
方法一:
复制提示参数至控制台运行(一直报错,暂未解决,怀疑是使用令牌名称的原因,可能要使用令牌码?)
方法二(推荐):
需要扫描的目录下面添加文件sonar-project.properties,根据自己的参数进行修改。
sonar.login=admin (可使用令牌码)
sonar.password=adminadmin
sonar.projectKey=just-test
sonar.projectName=just-test
sonar.sources=src
sonar.projectVersion=0.1.0
sonar.host.url=http://localhost:8090
cmd 在当前扫描的路径下运行scanner(D:\sonar-scanner\bin\sonar-scanner.bat),等待即可
当前弊端:因为扫描的代码在自己本地,所以需要在自己本地下载扫描器进行扫描。
因此集成jenkins 扫描svn代码可无需自己下载扫描器
Jenkins + SVN + Sonar
jenkins 准备
启动
下载jenkins
在jenkins 目录文件夹下运行java -jar jenkins.war --httpPort=5016
我本地访问地址:http://xx.xx.xx.xx:5016/
管理员账号及密码:
admin \ adminadmin
jenkins 管理员密码修改
.jenkins\users\admin_11473407485452606327
搜索password 替换123456加密后:
#jbcrypt:$2a$10$MiIVR0rr/UhQBqT.bBq0QehTiQVqgNpUGyWW2nJObaVAM/2xSQdSq
则可以以“123456”登录管理员admin.
jenkins 手动build 项目
安装:前端项目的构建都依赖node.exe, 所以要指定NodeJS的安装目录,需要先安装nodeJS插件,路径System Configuration-->Manage Plugins-->可选插件
搜索nodejs 安装, 安装完成后重启jenkins。
配置:路径Manage Jenkins > Global Tool Configuration
最下面会出现nodejs,点击新增NodeJS按钮(可选择从官网安装,我这里选择直接读取我本机的nodejs)
(附如果查看自己电脑node 的安装路径及版本:cmd node -v \\ npm config ls)
1.安装subversion 插件后,jenkins首页,新建Item创建项目,选择freestyle project -->
2.源码管理 :选择subversion, 填写项目地址,添加credentials等 -->
3.构建环境:勾选provide Node & npm bin/folder to PATH
–>
4.构建,增加构建步骤,选择Execute Windows batch command
,输入cmd命令npm i && npm run build && xcopy .\dist\* D:\logs\dist\ /s/e/y
,开始构建时jenkins首先会checkout 代码(根据第二步填写的地址,至C:\Users\…\jenkins\workspace\项目名下),再执行此处配置的命令,xcopy是复制第一个参数文件至第二个参数处。
5.保存
6.首页,配置的项目名处点击build now,即开始构建项目。
jenkins 自动build 项目
需要SVN 服务器权限
(大致步骤:
进入【系统管理】-【Jenkins命令行接口】,进入【Jenkins命令行】页面,下载jenkins-cli.jar,放到Svn所在服务器的root目录下,进入Svn的hooks目录下,创建文件post-commit,并赋予执行权限,文件内容如下
source /etc/profile
java -jar /root/jenkins-cli.jar -s Jenkins的URL/jenkins/ -auth 账户:密码 build 项目名```
jenkins-cli.jar 里面提供了一些API可以用来执行脚本自动新建项目自动构建等等,具体可以看【Jenkins命令行】)
参考:https://blog.csdn.net/q13554515812/article/details/86651851
SVN搭建
下载visualSVN Server,地址:http://www.visualsvn.com/server/download/, 安装。
新建仓库后可新建用户新建组等,目前该svn服务器搭建于125上,访问地址:
用户:admin password: admin
之后即可上传及下拉代码
设置jenkins 自动构建
方法一:通过svn 钩子触发jenkins 构建
1.下载jenkins cli, 复制至SVN服务器端的某个目录下。
2. 进入hooks 目录下(SVN仓库安装地址下面,eg:D:\grace.wu\SVN\SVNRepositories\SVNTest\hooks),新建post-commint.cmd,写批处理脚本如下:
set REPOS=%1
set TXN=%2
set JENKINS_CLI="D:\grace.wu\SVN\SVNRepositories"
java -jar %JENKINS_CLI%\jenkins-cli.jar -s http://10.29.69.55:5016/ -auth admin:adminadmin build justForTest```
坑:网上大部分的hooks script都是基于linux的shell脚本,windows服务器下不能直接执行
问题:build 的时候指定了build 的item,因此仓库更新时都会去build这个item,应该可以判断更新的是哪个path然后指定某个path更新某个item,但是对SVN hooks及批处理脚本命令不熟,暂时不会,且一旦jenkins 的item的名字发生更改还需更改svn服务器脚本,较为麻烦。应该在jenkins系统里面配置svn更新自动更新。
方法二:jenkins系统里设置自动构建
jenkins 集成sonar
1.安装sonarqube scanner插件:System Configuration-->Manage Plugins-->可选插件
搜索sonarqube scanner
安装
2.Manage Jenkins ==> Global Tool Configuration
指定sonnar 扫描器的安装路径
3.添加Jenkins访问SonarQube Server的凭证:Manage Jenkins ==> Configure System ==> SonarQube servers
name:随意,URL:sonar 的URL ,Server authentication token:添加(类型选择secret text,在secret中输入sonar的令牌码)保存
4.项目–>配置–>构建–>增加构建步骤,选择Execute SonarQube Scanner->Analysis properties:
sonar.login=014c092b9ce8872d7eefab1384624cef2a207b37
sonar.projectKey=jenkins-test
sonar.projectName=jenkins-test
sonar.sources=src
sonar.projectVersion=0.1.0```
5.build 即可
参考文献
https://www.cnblogs.com/wangpenghui522/p/13853935.html