sonarqube+gitlab+jenkins+maven集成搭建 (五)


Jenkins與SonarQube

Jenkins 配置 SonarQube
在 SonarQube 中生成 Server authentication token
登錄 SonarQube 后,在 “My Account” => “Securiy” 中生成 toekn

1.2、在 Jenkins 的管理插件中安裝 SonarQube Scanner 插件
已經安裝好的平台Jenkins,在該平台中裝上sonarscanner.
代碼持續化集成(測試服務器部署)
http://192.168.1.x/
admin/admin
登陸jenkins,點擊“系統管理”

點擊“管理插件”:

 

 

 搜索sonar,安裝。重啟JENKINS生效。

 

在已安裝中可以查看到。

 

1.3、配置 SonarQube Sever
這部分和配置 GitHub Server 類似,在 “系統管理” => “系統設置” 中找到 SonarQube servers
Name:隨意;
Server URL:192.168.1.217:9090;
Server authentication token: 輸入之前生成的 token;

 

進入“系統管理”-“全局工具配置”-“SonarQube Scanner”,目錄為安裝SonarQube Scanner的目錄。

 

1.4、配置 SonarScanner for MSBuild

 

在 “系統管理” => “全局 工具 配置” 找到 SonarScanner for MSBuild(
測試項目是基於 .NET ),官方提供了 .NET Framework 和 .NET Core 兩個版本,我們可以先都加上,之后根據實際項目選擇使用哪個。

 

1.5、Jenkins 任務配置
上面是 Jenkins 的一些全局配置,下面需要對單個任務進行配置。新建一個 “構建一個自由風格的軟件項目” 類型的任務 “demo-sonar”

 

 

 

在構建中加入如下數據:
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

 

1.6、測試jenkins任務
在創建的jenkins任務中,點擊“立即構建”即可立即執行sonar任務。

 

執行成功后,打開sonarqube的地址,即可看到代碼檢查結果。

 

2、jinkins與gitlab

 .1 創建項目

 

2.2打開配置
源碼管理 git URL為gitlab上的項目源碼地址
Add添加用戶名密碼

這里通過時間,每隔15分觸發。

 

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

開始構建
應用,保存。立即構建。

 

2.5 sonarqube查看
構建完成。登陸sonarqube,查看neiras。

 

設置gitlab自動觸發jenkins

 前面的步驟中已經完成了手動執行jenkins執行sonar任務完成構建部署任務,下面說明如何在代碼提交后讓gitlab自動觸發jenkins執行sonar任務。

 

jenkins中安裝gitlab插件
要實現gitlab自動觸發jenkins任務,需要在jenkins中安裝gitlab插件。從jenkins的“系統管理”-“管理插件”中找到gitlab插件並下載安裝,重啟jenkins后生效。

 

在gitlab中創建訪問token
安裝的gitlab插件在配置時,需要gitlab的訪問token,先要在gitlab中創建訪問的token。點擊“用戶設置”-“Access Tokens”菜單,進入訪問token設置界面。然后輸入“Name”,並在“Scopes”中勾選“api”,點擊“Create ...”按鈕即可創建訪問token。創建成功后,一定要將生成的token保存下來,后面將無法再查看生成的token,如果未保存后面只能重新生成。

jenkins中配置gitlab插件
在jenkins中,進入“系統管理”-“系統設置”-“Gitlab”配置。
輸入“Connection name”、“Gitlab host URL”,在“Credentials”中點擊“Add”添加gitlab的授權token。

 

 

 

配置jenkins任務,啟用觸發器
進入jenkins的任務設置界面,在“構建觸發器”中,勾上“Build when a change pushed to Gitlab.Gitlab webhook URL ...”(這里的webhook URL在后面配置gitlab時需要),根據自己的需要設置其它的選項。點擊“高級”按鈕,然后點擊“Generate”按鈕生成Secret token(這里的token后面配置gitlab時需要)。

在gitlab中配置webhook
在gitlab的項目設置中選擇“Integrations”,然后在URL和Secret token中填入上一步jenkins設置中的到的內容。由於每次代碼提交到gitlab后都觸發jenkins執行任務,所以這里勾選“Push events”,然后去掉“Enable SSL verification”的勾選項,並點擊“Add webhook”按鈕添加。

 

webhook測試
添加完成后,在下面可以看到剛才添加的webhook,點擊“Test”按鈕在彈出的菜單中選擇“Push events”發送測試請求,發送成功后會顯示“Hook executed successfully”信息。
如果成功的話,HTTP返回碼會返回200或者201。

 

webhook發送成功后,到jenkins中可以看到正在執行觸發的任務。配置成功后,后面只要有git的tag提交到gitlab即可直接觸發jenkins執行sonar任務。
這里時505錯誤代碼,按說明調試后還未解決。

 

本地URL有問題,建議復制該項目
如圖地址

 

完美解決。

第二種鏈接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文件。

編輯位於$ 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構建步驟

 

結果

 

這是我做運維的第一個月寫的文檔。用了一周時間弄出來的。有些許漏洞。還有很多部門不明其意,需要不斷努力學習。

最后

當才華支撐不起野心的時候,需要靜下心來學習。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM