目录
一、实验
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"}}