3.sonarqube的使用-jenkins

内容分享3小时前发布
0 0 0

一、自由风格的项目

1. 新建任务 (构建一个自由风格的软件项目)>

3.sonarqube的使用-jenkins

2. 源码管理中填写gitlab仓库地址,以及凭据

3.sonarqube的使用-jenkins

3. 在构建中选择“Execute SonarQube Scanner”

3.sonarqube的使用-jenkins

  • 填写配置文件,配置文件书写规则

sonar.projectKey=simple-python-pyinstaller-app
sonar.projectName=simple-python-pyinstaller-app
sonar.sourceEncoding=UTF-8
sonar.sources=.

3.sonarqube的使用-jenkins

4.点击构建即可查看结果

3.sonarqube的使用-jenkins

  • 失败原由于:单元测试的覆盖率太低。阀值的设置在前面SonarQube中已涉及过

    3.sonarqube的使用-jenkins

二、使用流水线的任务

1.新建任务,填写名称,类型选择流水线

3.sonarqube的使用-jenkins

2.在项目的根目录创建文件:sonar-project.properties

sonar.projectKey=simple-python-test
sonar.projectName=simple-python-test
sonar.projectVersion=1.2
# 指定python版本
sonar.python.version = 3.8
# 项目描述
sonar.projectDescription = 测试项目
# 项目检测的语言类型
sonar.language=py
# 项目的源码地址,根目录使用 .
sonar.sources=sources
sonar.sourceEncoding=UTF-8
# 排除检测的文件目录(逗号隔开)
sonar.exclusions=**/static/**,**/__init__.py,**/*.xml
# 测试文件的地址
sonar.tests=./tests
sonar.test.inclusions = **/test_*.py
# 排除测试文件(逗号隔开)
sonar.test.exclusions = **/static/**,**/__init__.py,**/coverage.xml
# 单元测试覆盖率
sonar.python.coverage.reportPaths=tests/report/coverage.xml
# 用来从覆盖率报告中排除的匹配方式(逗号隔开)
sonar.coverage.exclusions=**/static/**,**/__init__.py
# 单元测试执行(显示执行数量)
sonar.python.xunit.skipDetails=false
sonar.python.xunit.reportPath = tests/report/junit_report.xml
# 配置不需要检测重复率的文件
# sonar.cpd.exclusions =
# 控制分析期间生产的日志的数量/级别
# sonar.log.level = INFO

3. jenkinsfile增加

pipeline {
    agent {
        label "windows_node"
    }
    stages {
        stage( 环境 ) {
            steps {
                sh  D:/Python3.8/python -m venv ./venv 
                sh  ./venv/Scripts/python -V 
                sh  ./venv/Scripts/pip install --default-timeout=200 -i https://mirrors.aliyun.com/pypi/simple/ --upgrade -r requirements.txt 
            }
        }
        stage( 单元测试 ) {
            steps {
                sh  ./venv/Scripts/coverage run -m pytest --junitxml="./tests/report/junit_report.xml" 
                sh  ./venv/Scripts/coverage xml -o tests/report/coverage.xml -i 
            }
        }
        stage( SonarQube analysis ) {
            steps {
                script {
                    scannerHome = tool "MysonarScannerForJenkins"
                }
                withSonarQubeEnv("MySonaraServer") {
                    sh "../../tools/hudson.plugins.sonar.SonarRunnerInstallation/MysonarScannerForJenkins/bin/sonar-scanner"
                }
            }
        }
        stage( Quality Gate ) {
            steps {
                timeout(time: 120, unit:  SECONDS ) {
                    sleep(8)
                    waitForQualityGate abortPipeline: true
                }

            }
        }
        stage( 清理 ) {
            steps {
                sh  rm -rf log 
                sh  rm -rf static 
                sh  rm -rf tests/report 
            }
        }

    }
}


4. 构建结果,可以查看报告

3.sonarqube的使用-jenkins

5. 查看报告,并修改使用的质量阀

5.1 测试的质量阀规定:代码超过200行则为失败

3.sonarqube的使用-jenkins

5.2. 重新构建完后来,失败,不进行后续的构建

3.sonarqube的使用-jenkins

3.sonarqube的使用-jenkins

三、参考文档

  • sonar jenkins的流水线写法
  • 使用docker安装jenkins
  • 配置文件的写法
© 版权声明

相关文章

暂无评论

none
暂无评论...