Jenkins与SonarQube
Jenkins 配置 SonarQube
在 SonarQube 中生成 Server authentication token
登录 SonarQube 后,在 “My Account” => “Securiy” 中生成 toekn
![](https://img-blog.csdnimg.cn/img_convert/4de728c0ccdef5fbf0face002afb493d.png)
1.2、在 Jenkins 的管理插件中安装 SonarQube Scanner 插件
已经安装好的平台Jenkins,在该平台中装上sonarscanner.
代码持续化集成(测试服务器部署)
http://192.168.1.x/
admin/admin
登陆jenkins,点击“系统管理”
![](https://img-blog.csdnimg.cn/img_convert/7a4da3e36270485b951a85cd2ab3059c.png)
点击“管理插件”:
![](https://img-blog.csdnimg.cn/img_convert/991a50ef033ce1e0dbaf5a0b3b1e8857.png)
搜索sonar,安装。重启jenkins生效。
![](https://img-blog.csdnimg.cn/img_convert/25910c8f791f9c5f6698d96f025796d1.png)
在已安装中可以查看到。
![](https://img-blog.csdnimg.cn/img_convert/a4f306198e33dc27e92b5ad85843687f.png)
1.3、配置 SonarQube Sever
这部分和配置 GitHub Server 类似,在 “系统管理” => “系统设置” 中找到 SonarQube servers
Name:随意;
Server URL:192.168.1.217:9090;
Server authentication token: 输入之前生成的 token;
![](https://img-blog.csdnimg.cn/img_convert/3502749354c4e569a957a21f5900c681.png)
进入“系统管理”-“全局工具配置”-“SonarQube Scanner”,目录为安装SonarQube Scanner的目录。
![](https://img-blog.csdnimg.cn/img_convert/a35b618459a8163877e589708716d089.png)
1.4、配置 SonarScanner for MSBuild
在 “系统管理” => “全局 工具 配置” 找到 SonarScanner for MSBuild(
测试项目是基于 .NET ),官方提供了 .NET Framework 和 .NET Core 两个版本,我们可以先都加上,之后根据实际项目选择使用哪个。
![](https://img-blog.csdnimg.cn/img_convert/1aa7c107a01fadb835914804da490211.png)
1.5、Jenkins 任务配置
上面是 Jenkins 的一些全局配置,下面需要对单个任务进行配置。新建一个 “构建一个自由风格的软件项目” 类型的任务 “demo-sonar”
![](https://img-blog.csdnimg.cn/img_convert/572f4cce833548666fc90e9dabb50ad9.png)
![](https://img-blog.csdnimg.cn/img_convert/103bf786c53e5a758240b5d1888ff586.png)
![](https://img-blog.csdnimg.cn/img_convert/ba84b124a7d42c600d710f24e0525a93.png)
在构建中加入如下数据:
Task to run : scan
sonar.projectKey=demo
sonar.projectName=demo
sonar.projectVersion=1.0
sonar.sources=.
sonar.sourceEncoding=UTF-8
sonar.exclusions=node_modules/**/*,.idea/**/*
sonar.login=admin
sonar.password=admin
![](https://img-blog.csdnimg.cn/img_convert/5e67657301df33208a941de8e6711a1f.png)
1.6、测试jenkins任务
在创建的jenkins任务中,点击“立即构建”即可立即执行sonar任务。
![](https://img-blog.csdnimg.cn/img_convert/8f31465161783232072cad1a55c36b15.png)
执行成功后,打开sonarqube的地址,即可看到代码检查结果。
![](https://img-blog.csdnimg.cn/img_convert/e7a5b09ab4e531f79e6ef1ea11c267e4.png)
2、jinkins与gitlab
.1 创建项目
![](https://img-blog.csdnimg.cn/img_convert/0fd7c5db4df40ed2094fc04dbc4fe2ab.png)
2.2打开配置
源码管理 git URL为gitlab上的项目源码地址
Add添加用户名密码
![](https://img-blog.csdnimg.cn/img_convert/059ec6964690c00ff4d642e3d0e56da8.png)
这里通过时间,每隔15分触发。
![](https://img-blog.csdnimg.cn/img_convert/59fa150e820c52ec00cb814b32582192.png)
2.3构建设置
输入:
sonar.projectKey=neiras
sonar.projectName=neiras
sonar.projectVersion=1.1
sonar.language=java(未设置,则按多语言分析)
sonar.login=admin
sonar.password=admin
sonar.java.binaries=bin
sonar.sources=src
sonar.java.source=1.8
![](https://img-blog.csdnimg.cn/img_convert/6b7a5e4423d30ebe47b79d7157ea79d1.png)
开始构建
应用,保存。立即构建。
![](https://img-blog.csdnimg.cn/img_convert/0f2de35809b4bc800ec50f39ca7f1705.png)
2.5 sonarqube查看
构建完成。登陆sonarqube,查看neiras。
![](https://img-blog.csdnimg.cn/img_convert/deee752dfea1c1ca97d5c812fccd415a.png)
设置gitlab自动触发jenkins
前面的步骤中已经完成了手动执行jenkins执行sonar任务完成构建部署任务,下面说明如何在代码提交后让gitlab自动触发jenkins执行sonar任务。
jenkins中安装gitlab插件
要实现gitlab自动触发jenkins任务,需要在jenkins中安装gitlab插件。从jenkins的“系统管理”-“管理插件”中找到gitlab插件并下载安装,重启jenkins后生效。
![](https://img-blog.csdnimg.cn/img_convert/169b34c9736e5d5fb6a0f6496fac5014.png)
![](https://img-blog.csdnimg.cn/img_convert/c4594bcb3650e8e5d4785f53368fbd12.png)
在gitlab中创建访问token
安装的gitlab插件在配置时,需要gitlab的访问token,先要在gitlab中创建访问的token。点击“用户设置”-“Access Tokens”菜单,进入访问token设置界面。然后输入“Name”,并在“Scopes”中勾选“api”,点击“Create ...”按钮即可创建访问token。创建成功后,一定要将生成的token保存下来,后面将无法再查看生成的token,如果未保存后面只能重新生成。
![](https://img-blog.csdnimg.cn/img_convert/e4262e33f4de199c924a973b8dfeba8f.png)
jenkins中配置gitlab插件
在jenkins中,进入“系统管理”-“系统设置”-“Gitlab”配置。
输入“Connection name”、“Gitlab host URL”,在“Credentials”中点击“Add”添加gitlab的授权token。
![](https://img-blog.csdnimg.cn/img_convert/d1e398f16ea0873879741e8e422f40cf.png)
配置jenkins任务,启用触发器
进入jenkins的任务设置界面,在“构建触发器”中,勾上“Build when a change pushed to Gitlab.Gitlab webhook URL ...”(这里的webhook URL在后面配置gitlab时需要),根据自己的需要设置其它的选项。点击“高级”按钮,然后点击“Generate”按钮生成Secret token(这里的token后面配置gitlab时需要)。
![](https://img-blog.csdnimg.cn/img_convert/a14d5349e22e430aa805a53afaabecee.png)
![](https://img-blog.csdnimg.cn/img_convert/2362f85afb02e105f9e1c25987e69d16.png)
在gitlab中配置webhook
在gitlab的项目设置中选择“Integrations”,然后在URL和Secret token中填入上一步jenkins设置中的到的内容。由于每次代码提交到gitlab后都触发jenkins执行任务,所以这里勾选“Push events”,然后去掉“Enable SSL verification”的勾选项,并点击“Add webhook”按钮添加。
![](https://img-blog.csdnimg.cn/img_convert/c9871e550daf19c2ace24fa77b361395.png)
webhook测试
添加完成后,在下面可以看到刚才添加的webhook,点击“Test”按钮在弹出的菜单中选择“Push events”发送测试请求,发送成功后会显示“Hook executed successfully”信息。
如果成功的话,HTTP返回码会返回200或者201。
webhook发送成功后,到jenkins中可以看到正在执行触发的任务。配置成功后,后面只要有git的tag提交到gitlab即可直接触发jenkins执行sonar任务。
这里时505错误代码,按说明调试后还未解决。
![](https://img-blog.csdnimg.cn/img_convert/e506938c6dd84daf47cc44a97f8b5b07.png)
![](https://img-blog.csdnimg.cn/img_convert/ccec40de6011fc5a74be59b45a6e035a.png)
![](https://img-blog.csdnimg.cn/img_convert/db42977727c1de279fdf69ee2a71ca01.png)
本地URL有问题,建议复制该项目
如图地址
![](https://img-blog.csdnimg.cn/img_convert/d0cc08f074aad30656193b2825c02a28.png)
完美解决。
第二种链接URL格式是http://<jenkisn的IP地址和端口>/gitlab/build_now/<jenkins的job名称>,例如jenkins的IP地址为192.168.4.1:8080,job名称是job,那么该URL为http://192.168.4.1:8080/gitlab/build_now/job1
3、moven集成sonar
在jenkins创建项目后,单纯的构建如下步骤,指定语言为java时只能扫描出java语言的重复率。取消指定java语言后可以检测出其他语言如后缀js的文件存在的bug。但不会扫描到java的漏洞。这里就需要moven来构建。需要修改moven配置文件,项目的pom.xml文件。
![](https://img-blog.csdnimg.cn/img_convert/a6cbc5d2b150d4d8ea6ecbf089dc3baa.png)
编辑位于$ MAVEN_HOME/conf/的settings配置文件,共两处
第一处:设置插件前缀
<settings>
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
</settings>
3.2 配置sonar的服务器URL。
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.host.url>http://192.168.101.11:9000</sonar.host.url>
</properties>
</profile>
3.3 在maven项目的pom.xml文件中,添加以下信息
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.6.0.1398</version>
</plugin>
</plugins>
</pluginManagement>
</build>
说明:sonnar的版本4.0.0.1744
3.4 jenkins构建步骤
![](https://img-blog.csdnimg.cn/img_convert/551bd1fc1df6dd5da3c44accb95c404a.png)
结果
![](https://img-blog.csdnimg.cn/img_convert/f736fc91b39662b132398e156e5fc34f.png)
这是我做运维的第一个月写的文档。用了一周时间弄出来的。有些许漏洞。还有很多部门不明其意,需要不断努力学习。
最后
当才华支撑不起野心的时候,需要静下心来学习。