2017-01-18 7 views
1

私のフリースタイルジェンキンスの仕事の中で、プラグインClover PHPCheckstyleプラグインを使用した解析を使用して、コードビルドのアクションを追加することができます。JenkinsfileでClover PHPとCheckstyleを使用する

しかし、私はステージビューを持っているので、パイプラインジェンキンスジョブを使用するのが好きです。パイプラインの仕事では、私はJenkinsfile内のすべてをセットアップする必要があります。 Jenkinsfile内にClover PHPとCheckstyleプラグイン関数を含めるにはどうすればよいですか?そのページには文書はありません。

答えて

1

統合したいものにはCLIインターフェイスがありますので、Jenkinsfileのアクションを使ってCLIコマンドを呼び出すだけでシェルコマンドを呼び出すことができます。

sh "phpunit --log-junit 'reports/unitreport.xml' --coverage-html 'reports/coverage' --coverage-clover 'reports/coverage/coverage.xml' test/" 

ここで、Junitログの場所は、プロジェクトの配置場所によって異なります。これを実行する前にステップjunitを実行する必要があります。

Checkstyle also has a CLIJenkinsfileshアクションと同様の方法で電話をかけることができます。

ビルドで結果のHTMLファイルをアーカイブする場合は、ビルドページの[ビルド成果物]リンクをクリックして、結果のHTMLファイルを読むことができます。 URLの構造例は、次のようになります。

https://ci.example.com/job/develop/342/artifact/reports/coverage/index.html 

詳細については、明示的なJenkinsパイプラインのサポートが必要な場合があります。

+0

ありがとうございました。私はコマンドを理解し、それらをJenkinsfileに配置します。私が理解できないことは、ジェンキンスの仕事がどのように生成されたレポートを読むのでしょうか?フリースタイルの仕事では、プラグインを生成されたファイルに向けることができます。[image](http://i.imgur.com/NOSuYHY.png)を参照してください。 – Lars

3

はかなり工夫した後、私はこのようなパイプラインでのCheckstyleを実行するために管理:

stage ('Static code analysis') { 
    sh "sudo phpcs --config-set ignore_warnings_on_exit 1 --report=checkstyle --report-file=checkstyle-result.xml -q /code" 
    step([$class: 'hudson.plugins.checkstyle.CheckStylePublisher', pattern: 'checkstyle-*']) 
} 

最初のステップは、レポートを生成し、第二には、レポートを処理するためのCheckstyleプラグインを呼び出します。私はクローバーPHPを使用していないので、それを手伝ってはいけません。

1

Jenkinsのsnippet generatorは、このための大きなリソースです。

は残念ながら、クローバーPHPのためのネイティブサポートはありませんが、Checkstyleのためにそこにある:

checkstyle canRunOnFailed: true, defaultEncoding: '', healthy: '', pattern: 'build/logs/checkstyle.xml', unHealthy: '' 
0

他の回答を完了するには、すべて、クローバーPHPはジェンキンスパイプラインのサポートを持っていけない...しかし、あなたはこのプラグインを必要といけませんあなたは、あなたがあなたの例のためにあなたのjenkinsfileに追加する必要がインストールされているすべてのClover Plugin

一つである必要は、次のとおりです。

step([ 
$class: 'CloverPublisher', 
cloverReportDir: 'reports/coverage', 
cloverReportFileName: 'coverage.xml', 
healthyTarget: [methodCoverage: 70, conditionalCoverage: 80, statementCoverage: 80], 
unhealthyTarget: [methodCoverage: 50, conditionalCoverage: 50, statementCoverage: 50], 
failingTarget: [methodCoverage: 0, conditionalCoverage: 0, statementCoverage: 0]]) 

これは何私は現在のプロジェクトで使用しています。

関連する問題