2

Jenkins 2.50の宣言型パイプラインで次のSonarQube(6.3)分析ステージがコンソールログのこのエラーで失敗しています:http://pastebin.com/t2ja23vC。具体的には:Jenkinsの宣言型パイプラインでwaitForQualityGateを使用

SonarQube installation defined in this job (SonarGate) does not match any configured installation. Number of installations that can be configured: 1.

更新:http://pastebin.com/HZZ6fY6V

(SonarQubeサーバの下で、それはJenkinsfileと一致しますので)ジェンキンスの設定で "SonarGate" に "SonarQube" を変更した後、私は別のエラーが出ます

java.lang.IllegalStateException: Unable to get SonarQube task id and/or server name. Please use the 'withSonarQubeEnv' wrapper to run your analysis.


ステージはSonarQubeドキュメントの例の変形例である:https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins#AnalyzingwithSonarQubeScannerforJenkins-AnalyzinginaJenkinspipeline

stage ("SonarQube analysis") { 
    steps { 
     script { 
      STAGE_NAME = "SonarQube analysis" 

      if (BRANCH_NAME == "develop") { 
       echo "In 'develop' branch, don't analyze." 
      } 
      else { // this is a PR build, run sonar analysis 
       withSonarQubeEnv("SonarGate") { 
       sh "../../../sonar-scanner-2.9.0.670/bin/sonar-scanner" 
       } 
      } 
     } 
    } 
    } 

    stage ("SonarQube Gatekeeper") { 
    steps { 
     script { 
      STAGE_NAME = "SonarQube Gatekeeper" 

      if (BRANCH_NAME == "develop") { 
       echo "In 'develop' branch, skip." 
      } 
      else { // this is a PR build, fail on threshold spill 
       def qualitygate = waitForQualityGate() 
       if (qualitygate.status != "OK") { 
       error "Pipeline aborted due to quality gate coverage failure: ${qualitygate.status}" 
       } 
      } 
     } 
    } 
    }  

また、Webフックsonarqube-webhookをURL http://****/sonarqube-webhook/で作成しました。そのようなものか、http://****/sonarqube/sonarqube-webhook?サーバーダッシュボードにアクセスするには、http://****/sonarqubeを使用します。

私は新しい品質ゲートを作成しSonarQubeの品質ゲイツセクションで

enter image description here

私はSonarGateの設定が正しいかどうかを確認していません。 jenkins-mochaを使用して、カバレッジデータを生成するためにSonarで使用されるlcov.infoファイルを生成します。

おそらく、品質ゲートの設定は間違った設定ですか?カバレッジ%が満たされていない場合、Jenkinsで仕事を失うことになります。

enter image description here

は最後に、私はジェンキンスのシステム構成では、以下の構成が全く必要とされるかどうかわからないです:

enter image description here

とITの9000ない900

(.. 。スクリーンショットのテキストをカット) enter image description here

答えて

1

にタスクIDを渡すために使用ジョブのためのnkinsスレーブ(ジョブがマスター上で実行されている場合、それはうまくいく)。私はスキャナプラグインのv2.61のテストビルドを使用して、これをテストしているhttps://jira.sonarsource.com/browse/SONARJNKNS-282

と作業それを見つけた:あなたはもっとここで読むことができます。 解決策は、リリースされたときにv2.61にアップグレードすることです。

この段階では、その後に動作します:

stage ("SonarQube analysis") { 
    steps { 
     withSonarQubeEnv('SonarQube') { 
     sh "../../../sonar-scanner-2.9.0.670/bin/sonar-scanner" 
     } 

     def qualitygate = waitForQualityGate() 
     if (qualitygate.status != "OK") { 
     error "Pipeline aborted due to quality gate coverage failure: ${qualitygate.status}" 
     } 
    } 
} 
3

SonarQube Jenkinsプラグインは、2つの特定の行のビルド出力をスキャンし、SonarQubeレポートのタスクプロパティとプロジェクトURLを取得するために使用します。 sonar-scannerの呼び出しでこれらの行が出力されない場合、waitForQualityGate()呼び出しには、それらを検索するタスクIDはありません。したがって、より詳細にするために正しい設定を見つけなければなりません。

  • Working dir: <dir with report-task.txt>がある

    • ANALYSIS SUCCESSFUL, you can browse <project URL>がバッジにリンクを追加するために使用される(ビルド歴史の中で):

      は、彼らがどのように機能するかを理解するためのプラグインのSonarUtilsクラスでextractSonarProjectURLFromLogsextractReportTask方法を参照してください。帝を使用する場合は、ジェンキンス用SonarQubeスキャナのバグが発見されたwaitForQualityGateステップ

  • +1

    おかげで、これのすべては、この機能のドキュメントに記載されていません。実際、この文書は非常に軽量でプラグ&プレイのように思えます。そうでなければSonarQubeは本当に統合をよりスムーズにする必要があります。 –

    +0

    これは技術的な実装の詳細なので言及していません。私たちはそれを「プラグアンドプレイ」にすることを目指し、少なくともGradleプロジェクトでは失敗しました。それでも他のケースではうまくいくはずです。マスター/スレーブの問題を調査中です。 –

    +0

    ありがとう、私はジェンキンスセットアップでスレーブを使用します。同じスレーブ(ビルドマシン)もSonarQubeサーバーをホストします。 –

    関連する問題