??SonarQube是一款靜態(tài)代碼分析削咆、代碼質(zhì)量度量和漏洞檢測的開源代碼質(zhì)量管理平臺(tái),它提供了許多功能,包括靜態(tài)代碼分析厦滤、代碼覆蓋率掏导、復(fù)雜度分析趟咆、漏洞檢測等。SonarQube可以集成到許多流行的編程語言和集成開發(fā)環(huán)境中虐唠,幫助開發(fā)人員創(chuàng)建高質(zhì)量的軟件項(xiàng)目凿滤。SonarQube以及依賴環(huán)境軟件的安裝已經(jīng)在此系列文章的第一篇寫過庶近,這里只介紹如何配置和使用Jenkins+SonarQube進(jìn)行代碼質(zhì)量檢查翁脆。
1. 登錄http://ip:19000 鼻种,默認(rèn)用戶名密碼:admin/admin ,第一次登錄會(huì)提示更改密碼,設(shè)置一個(gè)自定義密碼即可叉钥。
2. 配置>應(yīng)用市場罢缸,安裝中文插件投队,這里選擇Chinese Pack LOCALIZATION(中文簡體)枫疆,下面那個(gè)是中文繁體。
- 如果安裝時(shí)出現(xiàn)錯(cuò)誤息楔,一般是安裝的插件和當(dāng)前SonarQube版本不兼容,此時(shí)需要到插件官網(wǎng)下載SonarQube對(duì)應(yīng)版本的插件放到圃泡,我們的目錄下/data/docker/ci/sonarqube/extensions/downloads辆亏,然后通過 配置>系統(tǒng)>重啟服務(wù)器,即可使插件生效。
3. 安裝Java質(zhì)量檢查插件甫匹,在應(yīng)用市場搜索java,然后在列表中安裝Checkstyle惦费、Findbugs兵迅、PMD。
4. 配置 > SCM薪贫,關(guān)閉禁用SCM傳感器(Disable the SCM Sensor)
5. 配置 > 權(quán)限 > 用戶恍箭,新建一個(gè)用戶,在用戶列表頁點(diǎn)擊令牌瞧省,執(zhí)行生成token扯夭,用于配置在Jenkins和SonarQube交互。根據(jù)自己的需求設(shè)置過期時(shí)間鞍匾,或者不過期交洗。
6. 切換到Jenkins配置界面,將生成的token配置到Jenkins橡淑,系統(tǒng)管理 > Credentials > 全局 > Add Credentials 构拳,選擇Secret text,在Secret填寫上面生成的token梁棠,然后點(diǎn)擊Create置森,保存token之后,就可以在SonarQube Servers添加這個(gè)token使用符糊。
7. 回到SonarQube界面凫海,配置 > 項(xiàng)目 > 管理 > 創(chuàng)建項(xiàng)目,填寫信息執(zhí)行創(chuàng)建男娄。
8. 項(xiàng)目創(chuàng)建成功后行贪,在項(xiàng)目列表點(diǎn)擊項(xiàng)目名稱漾稀,進(jìn)入到項(xiàng)目配置界面。選擇使用Jenkins > 選擇 DevOps 平臺(tái)(選擇GitLab瓮顽,根據(jù)項(xiàng)目實(shí)際情況選擇) 县好。
9. 根據(jù)提示,查看在Jenkins中的配置步驟暖混。
-
點(diǎn)擊配置分析
-
創(chuàng)建流水線作業(yè)
-
創(chuàng)建一個(gè) GitLab Webhook
-
創(chuàng)建 Jenkinsfile缕贡,選擇Maven,然后會(huì)在下方出現(xiàn)針對(duì)此工程的Maven配置拣播,復(fù)制此配置信息晾咪,稍后配置到Jenkins任務(wù)中。
10. 切換到Jenkins配置界面贮配,我們新建一個(gè)流水線任務(wù)谍倦。
11. SonarQube只提供了SonarQube檢查的流水線腳本,我們直接將下載GitLab代碼等都放到流水線任務(wù)中泪勒,這樣比較簡單昼蛀。
-
和之前的任務(wù)一樣,選擇“丟棄舊的構(gòu)建”圆存,設(shè)置保持構(gòu)建的最大個(gè)數(shù)為5
-
直接到“流水線”叼旋,選擇Pipeline script
流水線腳本如下:
node {
def mvnHome
stage('Preparation') { // for display purposes
// Get some code from a GitHub repository
echo "checkout from GitLab"
checkout scmGit(branches: [[name: '*/main']], extensions: [], userRemoteConfigs: [[credentialsId: 'git_username', url: 'http://127.0.0.1:9091/test/test.git']])
// Get the Maven tool.
// ** NOTE: This 'M3' Maven tool must be configured
// ** in the global configuration.
mvnHome = tool 'maven_j'
}
stage('SonarQube Analysis') {
echo "sonar test code"
withEnv(["MVN_HOME=$mvnHome"]) {
withSonarQubeEnv() {
sh "'$MVN_HOME/bin/mvn' clean verify sonar:sonar -Dsonar.projectKey=sonarTest -Dsonar.projectName='Sonar質(zhì)量檢查'"
}
}
}
stage('Build') {
echo "build test code"
// Run the maven build
withEnv(["MVN_HOME=$mvnHome"]) {
if (isUnix()) {
sh '"$MVN_HOME/bin/mvn" -Dmaven.test.failure.ignore clean package'
} else {
bat(/"%MVN_HOME%\bin\mvn" -Dmaven.test.failure.ignore clean package/)
}
}
}
stage('Results') {
echo "end sonar testcode"
//junit '**/target/surefire-reports/TEST-*.xml'
// archiveArtifacts 'target/*.jar'
}
}
12. 在任務(wù)左側(cè)點(diǎn)擊立即構(gòu)建
- 立即構(gòu)建
-
流水線任務(wù)可以在右側(cè)顯示階段視圖
- 查看構(gòu)建日志:點(diǎn)擊立即構(gòu)建之后,下方會(huì)出現(xiàn)進(jìn)度條沦辙,點(diǎn)擊進(jìn)度條就可以進(jìn)入構(gòu)建日志界面夫植。