目錄
一、實驗
1.Jenkins使用GitLab共享庫實現后端項目Sonarqube
2.優化GitLab共享庫
3.Jenkins使用GitLab共享庫實現前端項目Sonarqube
4.Jenkins通過插件方式進行優化
二、問題
1.sonar-scanner 未找到命令
2.npm?未找到命令
一、實驗
1.Jenkins使用GitLab共享庫實現后端項目Sonarqube
(1)已搭建GitLab共享庫
① 進入共享庫項目
② 封裝庫目錄(2)Jenkins修改配置
①修改選項參數
②啟用SCM并保存
(3)Jenkins安裝插件SonarQube Scanner
(4) Sonarqube生成令牌
(5)Jenkins添加憑證
?(6)GitLab修改Jenkinsfile
(7)Jenkins手動構建項目
(8)Blue Ocean 查看構建成功
(9)輸出結果
(10)Sonarqube已新增項目
2.優化GitLab共享庫
(1)GitLab新建Sonar.groovy
(2) 修改Jenkinsfile
(3)Jenkins再次手動發起流水線
(4)Blue Ocean查看
3.Jenkins使用GitLab共享庫實現前端項目Sonarqube
(1)Jenkins前端項目開啟SCM
(2)添加選項參數
(3)GitLab修改Sonar.grovvy,添加主函數CodeSonar進行分支判斷,并添加子函數SonarWeb(前端)
(4)修改Jenkinsfile的“SonarScan”階段代碼,調用主函數CodeSonar
(4)Jenkins 手動發起流水線
(5)Blue Ocean查看
(6)查看日志
(7)Sonarqube已新增項目
4.Jenkins通過插件方式進行優化
(1)在Jenkins中安裝插件sonarqube scanner并安裝
(2)體統配置添加Sonarqube服務器,選擇憑據
(3) 工具新增SonarQube Scanner?
(4)使用withSonarQubeEnv DSL引入在Jenkins中配置的sonar環境
## 括號中的`mysonar`一定要與Jenkins設置頁面定義的一致。
stage("SonarScan"){steps {script {groupName = "${JOB_NAME}".split("/")[0]projectName ="${JOB_NAME}".split("/")[-1]//sonar.CodeSonar("${env.buildTool}",projectName,groupName)withSonarQubeEnv("mysonar") {sh """sonar-scanner -Dsonar.host.url=${SONAR_HOST_URL} \-Dsonar.projectKey=${projectName} \-Dsonar.projectName=${projectName} \-Dsonar.projectVersion=${BUILD_ID} \-Dsonar.login=${SONAR_AUTH_TOKEN} \-Dsonar.ws.timeout=30 \-Dsonar.projectDescription="my first project" \-Dsonar.links.homepage=http://192.168.204.8:82/${groupName}/${projectName} \-Dsonar.links.ci=http://192.168.204.15:8080/job/${groupName}/job/${projectName}/ \-Dsonar.sources=src \-Dsonar.sourceEncoding=UTF-8 \"""}}}}
(5)直接在回放中修改前端項目devops03-web-service
(6)點擊運行
(7)Blue Ocean 查看
(8)查看日志
(9)分析成功
二、問題
1.sonar-scanner 未找到命令
(1)報錯
(2)原因分析
環境變量
(3)解決方法
修改GitLab的Jenkinsfile文件
修改前:
……
sonar-scanner -Dsonar.host.url=http://192.168.204.8:9000 \
……
修改后:
……
/opt/sonar-scanner-4.8.0.2856-linux/bin/sonar-scanner -Dsonar.host.url=http://192.168.204.8:9000 \
……
2.npm?未找到命令
(1)報錯
(2)原因分析
環境變量
(3)解決方法
修改GitLab共享庫的Build.grovvy
修改前:
def NpmBuild(){sh "npm install && npm run build"}
修改后:
def NpmBuild(){nodejs("node14.16.1") {sh "npm install && npm run build"}}