天天看點

Sonarqube和Jenkins pipeline的使用

Sonarqube是一個開源的代碼品質檢測工具,可以單獨使用,也可以作為一個檢測步驟放在Jenkins的pipeline CI/CD 流水線。簡單的了解,他通過一個snarqube scanner 的工具來掃描代碼,然後把結果發給 sonarqube server,使用者可以在這個sonarqube server的網頁界面檢視報告。

Sonarqube和Jenkins pipeline的使用

每次運作的時候,他會通過一系列條件檢測,我們可以看見這些檢測的内容,這些檢測的内容叫做 quality gate,他最後會顯示我們的檢測結果是passed或者 failed

Sonarqube和Jenkins pipeline的使用

當我們把Jenkins和 sonarqube整合的時候,Jenkins調用 sonarqube scanner 掃描,把結果發送給sonarqube 伺服器,然後伺服器完成報告之後,通過 webhook再把結果發過Jenkins,Jenkins根據結果判斷是否繼續運作pipeline

Sonarqube和Jenkins pipeline的使用

本地測試一般可以使用docker-compose 的方式直接部署容器,而且docker-compose有個好處是裡面定義的服務,都會預設放入同一個網段,可以直接彼此通過服務名進行通路。

首先建立一個docker-compose.yaml

執行 docker-compose up -d 就可以啟動了

值得注意的一點是Docker的記憶體配置設定,如果記憶體不足,那麼容器啟動之後會自動關閉!豆子用的是Macbook Pro,需要注意調整Docker Desktop的記憶體。

Sonarqube和Jenkins pipeline的使用

啟動之後,我們可以通過 http://127.0.0.1:9000 來通路 sonarqube, 和 http://127.0.0.1:8080 來通路 Jenkins

接下來在我們配置Jenkins之前,我們可以直接測試一下 sonarqube是否工作。我直接通過sonarqube scanner的容器來通路我的代碼,并把結果發回給伺服器。這些參數可以通過指令行傳遞,也可以通過 sonar-project.properites這個檔案配置。

Sonarqube和Jenkins pipeline的使用

等待1分鐘之後 就可以看見結果了

Sonarqube和Jenkins pipeline的使用

确認sonarqube 工作之後,我們來Jenkins裡面配置一下。

Manage Jenkins - Manage Plugins - 安裝 sonarQube Scanner for Jenkins的插件

Sonarqube和Jenkins pipeline的使用

然後我們要在sonarqube裡面需要生成一個token,Jenkins裡面需要這個token進行驗證。

sonarqube裡面,右上角點選 my account - > security, generate tokens

Sonarqube和Jenkins pipeline的使用

Jenkins 裡面,Manage Jenkins - >Configure System , 然後添加server的 URL和 token

Sonarqube和Jenkins pipeline的使用

然後進入 Jenkins的 Manage Jenkins - Global Tool Configuration , 安裝 SonarQube Scanner

Sonarqube和Jenkins pipeline的使用

最後,我們還需要在sonarqube上配置 webhook,當掃描結束的時候,他會自動通知Jenkins

sonarquebe - administration - webhooks

Sonarqube和Jenkins pipeline的使用

準備就緒之後,我們就可以寫我們的pipeline檔案了。作為對比,我們寫兩個pipeline,一個是品質比較好的代碼,一個是比較差的。pipeline裡面有三個stage,分别是下載下傳代碼, 掃描代碼,以及quality gate的結果判斷是否繼續

好代碼

差代碼

執行pipeline,我們可以看見結果

Good code

Sonarqube和Jenkins pipeline的使用

Bad code

Sonarqube和Jenkins pipeline的使用