边搭建边记录,整个DevOps环境的搭建可能会很久。。。
一、安装Jenkins:
参考:Jenkins基础篇--windows安装Jenkins-CSDN博客
注意上面选择JDK的路径,选择到安装目录,该目录并不一定要在path中配置了(就是因为不在path中,这里的选择JDK的目录才很有用)。
安装完后,先不着急登录使用,如果需要修改项目主空间目录,最好这时候整,不然后面还要重新下一次插件。可参考:
Jenkins持续集成之修改jenkins工作目录_jenkins修改工作空间根目录-CSDN博客
二、安装额外的插件:
Manage Jenkins -> Plugins-> Available plugins
三、安装SonarQube:
1、先安装PostgreSQL:https://blog.csdn.net/GoodburghCottage/article/details/125975089
2、再安装SonarQube:https://blog.csdn.net/weixin_44009447/article/details/132646864
2.1 数据库的配置,可以使用默认的:
sonar.jdbc.url=jdbc:postgresql://localhost/postgres?currentSchema=public
2.2 这时候如果JDK没有在Path里面配置,那大概率会出现:
Starting SonarQube...
Unrecognized option: --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
类似的日志。这时候可以参考:https://blog.csdn.net/wang_624/article/details/129961824
这时候再配置环境变量增加SONAR_JAVA_PATH可能会需要重启电脑,那么再简单粗暴一点,直接在代码里配置上JDK的路径:
set SONAR_JAVA_PATH="C:\Users\XXXXX\.jdks\corretto-17.0.8.1\bin\java.exe"
if not "%SONAR_JAVA_PATH%"=="" (
启动,正常了。
四、安装Sonar_Scaner:
可参考:百度安全验证https://baijiahao.baidu.com/s?id=1766818517549151742&wfr=spider&for=pc
不过文章中说的使用sonar-scaner去扫描java的方式,好像在新版本的SonarQube里已经不能用了,除非替换某个jar包成旧版本的。这里就不折腾,java还是使用maven来检测。下面会介绍。
五、安装Maven(我一般用IDE里面自带的,没想到这里还要装一个):
https://blog.csdn.net/swadian2008/article/details/113530102
六、Maven检测代码并上传到SonarQube中进行显示:
大体流程可以参考这篇文章的使用部分:Windows配置SonarQube代码审查工具详细步骤(附带IDEA SonarLint插件使用)_sonarqube windows安装_Keson Z的博客-CSDN博客
1、下载完整的代码到本地;
2、检查本地代码里面有没有target目录,没有就新建一个(一般都有的);
3、配置maven,加上SonarQube的相关信息:
<pluginGroups>
<!-- pluginGroup
| Specifies a further group identifier to use for plugin lookup.
<pluginGroup>com.your.plugins</pluginGroup>
-->
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
<sonar.login>sqa_5e74a2bd324e59f457028ssssss</sonar.login>
<sonar.host.url>http://localhost:9000</sonar.host.url>
</properties>
</profile>
</profiles>
以上代码profile片段如果在运行mvn命令的时候指定了url、login的token估计就都不会生效,而优先使用命令行里的了。这里先配置上。
4、SonarQube里面新建项目(这里的项目名和key不一定需要按照artifactId来写),一路往下点,并获取到建议的命令,比如:
mvn clean verify sonar:sonar -Dsonar.projectKey=yudao -Dsonar.host.url=http://localhost:9000 -Dsonar.login=sqp_4a6d289cb9e356f4bb54645746734561d72a3
在下面这个页面里获取到:
这里mvn需要走到verify则需要先跑test,但有些情况下test可能跑不下去,这时候可以先跳过,增加一个-DskipTests属性即可:
mvn clean verify sonar:sonar -Dsonar.projectKey=yudao -Dsonar.host.url=http://localhost:9000 -Dsonar.login=sqp_4a6d289cb9e356f4bb54645746734561d72a3 -DskipTests
注意,最好也加上-Dsonar.projectName属性,否则下次pom.xml里面的name更新后,SonarQube里对外展示的项目名也会跟着更新,不可控。
5、可能会遇到的问题:
5.1 windows配置环境里使用的是jre而不是jdk。这时候会报说没有编译工具,会提示你是不是用了jre,这时候下载一个jdk安装就好了;
5.2 SonarQube、Maven、代码使用的版本不一致,会报很长一段错误(隐约记得有说接口不匹配),这时候需要把这三位的JDK版本搞一致,最好使用同样的JDK包。
5.3 报很多单元测试问题。可以先使用-DskipTests屏蔽掉测试环节,后面再把测试调通后放开。
5.4 报错“Authentication error when executing blame svn”,这个需要在SonarQube的下面这个地方把SCM禁用掉(打开开关就是禁用):
七、Jenkins集成SonarQube并通过maven扫描:
可参考:13.Jenkins集成sonarqube_jenkins sonarqube_做咩啊~的博客-CSDN博客
JAVA项目使用的还是Maven集成会更顺利,但是遇到一个问题报错是:
'mvn' 不是内部或外部命令,也不是可运行的程序
通过这篇文章介绍的:Jenkins构建时,报“‘mvn‘ 不是内部或外部命令,也不是可运行的程序_jenkins mvn不是内部或外部命令-CSDN博客第二个方法,可以解决这个问题(记得要重启节点,如果是build-in的,则重启Jenkins整个服务器)。
八、Jenkins集成SonarQube并通过Scaner扫描(比如扫描vue代码):
之前安装Scaner的时候已经集成到Jenkins了,这里就讲一下在构建中如何使用。
1、同样的,还是在SonarQube里面先新建项目,比如:
2、一路往下点击,生成新的token或者使用已有的token都可以:
把上面的命令拷贝出来,有需要使用。
sonar-scanner.bat -D"sonar.projectKey=test" -D"sonar.sources=." -D"sonar.host.url=http://localhost:9000" -D"sonar.login=这里换成大家自己的"
3、回到Jenkins里面,把以上命令里面的参数添加到Build Steps里面就可以(各属性直接拷贝粘贴就好):