前提jenkins中已经配好sonarqube和下载sonar-Scanner插件
一、pipeline运行Maven项目
1.新建pipeline项目
2.生成SVN/GIT代码检出路径
拉取代码语法生成:
填写url
直接复制即可
3.填写脚本:
pipeline{
agent any
parameters {
choice(name: 'Action', choices: ['deploy', 'test'], description: '操作说明:(1)deploy表示对选择的指定服务进行更新 (2)test表示对选择的指定服务进行功能测试')
}
stages{
stage('拉取代码'){
steps{
//可以在流水线语法中生成
}
}
stage('确认操作') {
steps{
echo "confirm"
}
input{
//这里是一个弹框,在构建时会弹出
message "确定操作为:${params.Action}?"
ok "确定"
submitter "admin,anthony"
}
}
stage('sonarQube分析'){
steps{
//注意,这里是你在jenkins中配置的sonarqube servers的名字
withSonarQubeEnv('sonarScanner') {
sh 'mvn sonar:sonar'
}
script {
timeout(1) {
//这里设置超时时间1分钟,不会出现一直卡在检查状态
//利用sonar webhook功能通知pipeline代码检测结果,未通过质量阈,pipeline将会fail
def qg = waitForQualityGate('sonar')
if (qg.status != 'OK') {
error "未通过Sonarqube的代码质量阈检查,请及时修改!failure: ${qg.status}"
}
}
}
}
}
stage('构建代码'){
steps{
script {
if ("${params.Action}" == 'test') {
echo "测试"
sh "mvn install sonar:sonar"
}else if ("${params.Action}" == 'deploy') {
echo '发布'
sh "mvn install sonar:sonar"
//具体发布代码根据需求来
}
}
}
}
}
}
4.最后Bulid
二、pipeline运行前端项目
和Maven项目的1、2、4步一样,拉取代码之后确认、唯一不同的是sonar分析的脚本信息(前端js一般没特殊处理不需要构建即去掉上面mvn有关的shell命令,用sonar分析完打包发布执行需要的命令即可)
脚本:
stage('sonarQube分析'){
steps{
script {
//在jenkins中配置的SonarQue-Scanner的名字
scannerHome = tool 'SonarQube-Scanner'
}
//sonarQube-servers的名字
withSonarQubeEnv('sonarScanner') {
//我这个安装的sonarScanner在jenkins目录下,有点长,需要的自己生成一个软连接执行sonar-scanner
sh'/root/.jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/SonarQube-Scanner/bin/sonar-scanner -Dsonar.projectKey=项目名 -Dsonar.projectName=项目名 -Dsonar.language=js'
}
}
}