现在主要是使用SonarQube,在我们将项目上传到gitlab后,Jenkins自动对项目进行构建,并通过SonarQube进行代码分析,方便詹老师查看。
因为我们各微服务都有引入基础框架,所以一定要先配置基础框架跟starter,将jar先安装到jenkins服务器的maven中,我们各微服务才能正常构建
SonarQube控制台地址
账号:admin 密码:admin
请修改成自己的项目名称!我这是由组名+项目artifactId组成,这个是自定义的,不重复就好。然后点Set Up
选择User existing token,输入bosssoft。点击Continue,选择Java、Maven就好
Jenkins控制台
账号: admin 密码:123456
直接拉到Build Triggers,这里是配置当我们上传项目到gitlab时自动推送到jenkins进行构建
打开后点Sava,项目构建成功,构建器打开先放着,下面用。
pipeline {
agent any
stages {
stage('pull code') {
steps {
// TODO 这里需要等等使用Pipeline构建器生成 记得删除此行
}
}
stage('build project') {
steps {
sh label: '', script: 'mvn clean install package -Dmaven.test.skip=true'
}
}
stage('code checking') {
steps {
script {
scannerHome = tool 'MyScanner'
}
withSonarQubeEnv('MySonarQube') {
sh "${scannerHome}/bin/sonar-scanner"
}
}
}
}
}
# 这里就是SonarQube里新建项目的key
sonar.projectKey=这里填在SonarQube里创建的项目名
sonar.projectName=这里填在SonarQube里创建的项目名
sonar.projectVersion=1.0-SNAPSHOT
sonar.sources=.
sonar.exclusions=**/test/**,**/target/**
sonar.java.source=1.8
sonar.java.target=1.8
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8
# 如果是多模块项目就填:**/target/classes
# 如果是starter这样的单模块项目就用:./target/classes
sonar.java.binaries=**/target/classes
选择checkout: Check out from version control
粘贴到Jenkinsfile文件中,刚刚是TODO的地方
全绿则表示构建成功。
已有结果,完成!
构建成功后,我们还需要将构建成功的消息推送到钉钉群聊
选择刚刚自己配置的机器人,可以进行高级配置,选择需要@的人和自定义信息。如果需要@多人要多行填写,可以点击右边的?查看
如果觉得方式一的推送方式不满足我们的需求,我们可以使用pipeline自定义消息通知。
使用文档
我这演示一个MD格式的
stage('push dingding') {
steps {
echo '测试 MARKDOWN 消息...'
}
post {
success {
dingtalk (
robot: '这里的robot就是Jenkins里创建的钉钉机器人ID,请替换成自己的',
type: 'MARKDOWN',
title: '基础框架构建成功',
text: [
'# 基础框架已构建成功',
'',
'---',
'[Jenkins控制台](http://58.22.61.222:27010/)',
'[SonarQube控制台](http://58.22.61.222:19875/)'
],
at: [
'钉钉账号'
]
)
}
}
}
每组一定要先配置自己gitlab组的凭据,随意使用一个人的账号密码就行了,只要他有权限访问到所有项目就ok。
然后一定要先构建基础框架,然后将starter也做一遍,做starter只是为了将jar包安装到jenkins服务器的maven中,构建完starer在SonarQube和Jenkins中的项目就可以删了。
当基础框架和starter都做好后,再来构建各微服务。