2017-01-07 16 views
0

私は以前のquestionsの1つで説明したようにJenkinsビルドパイプラインを作成し、SOnarを設定しました。Sonarの結果に基づいたJenkinsビルドパイプラインの失敗

ビルドのコンソール出力には、ソナー解析の結果を確認するために使用しているURLがあります。しかし、私の要件は、Sonarが発見した欠陥の数に基づいて、特定の 'x'の欠陥が発見される。 SonarQube Build Breaker Plugin


かどうかを検討し

  • がインストール

    1. のconfigure SonarQubeサーバー上Quality Gateし、プロジェクトに割り当てる:Plsはあなたがする必要があり、これはパイプライン

  • 答えて

    0

    私はこれを最近やったことがあります。 はそうです - あなたが必要とする:

    • のconfigure品質ゲート
    • あなたはソナーで利用可能ブレーカを構築していることを確認してください:Build Breaker Break the analyzer if the project does not pass its Quality Gate
    0

    あなたはパイプラインスクリプトから直接それをやろうとすることができます:

    def scannerHome = tool 'SonarQube Scanner'; 
    withSonarQubeEnv('SonarQube') { 
        sh "${scannerHome}/bin/sonar-scanner -Dsonar.projectKey=advant-web -Dsonar.sources=. -Dsonar.exclusions=node_modules/**,build/** -Dsonar.projectVersion=1.0.${BUILD_NUMBER}" 
    } 
    sleep 10 
    sh "curl -u user:password -X GET -H 'Accept: application/json' http://localhost:9000/api/qualitygates/project_status\\?projectKey\\=my-project > status.json" 
    def json = readJSON file:'status.json' 
    echo "${json.projectStatus.status}" 
    if ("${json.projectStatus.status}" == "ERROR") { 
        currentBuild.result = 'FAILURE' 
        error('SonarQube quality gate status of a project is invalid.') 
    } 
    

    またはアップグレードの場合SonarQube Scanner for Jenkins for 2.61まで次のようなものを書くことができます。

    ... 
    timeout(time: 5, unit: 'MINUTES') { 
        def qualitygate = waitForQualityGate() 
        if (qualitygate.status != "OK") { 
         error "Pipeline aborted due to quality gate coverage failure." 
        } 
    } 
    

    をここに詳細を読むことができます: https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins

    関連する問題