StepCounterプラグインのPipeline対応

Jenkins2には新機能「Pipeline」が搭載されています。
CircleCIやConcourseCI,Spinnakerのようにスクリプトベースでビルドやデプロイのジョブを記述することができる、というものです。

この機能、プラグイン側もそこそこ対応しないといけなかったので対応してみました。

書き方

Pipelineのスクリプトの基本的な書き方はデフォルトで「Pipeline Syntax」というヘルプ機能があるのでそれを使えば簡単に書けちゃうんですが・・

それだけだと寂しいのでStep Counter Plugin - Jenkins - Jenkins Wikiに記載したサンプルベースで簡単に解説しようかなと思います。

カウント処理のみ

もともとUIで設定していた「カウントするファイルの設定」を、ファイルの種類を「key」に、解析対象を「filePattern」、除外対象を「filePatternExclude」、エンコーディングを「encoding」に指定して、配列形式で記載します。

stepcounter settings: [[encoding: 'UTF-8', filePattern: 'src/main/**/*.java', filePatternExclude: '', key: 'Java'], [encoding: 'UTF-8', filePattern: 'src/test/**/*.java', filePatternExclude: 'src/test/java/sample/*.java', key: 'TestCode']]

この処理だけをするスクリプトはこんな感じ。

node {
   stage 'StepCount'
    stepcounter settings: [[encoding: 'UTF-8', filePattern: 'src/main/**/*.java', filePatternExclude: '', key: 'Java'], [encoding: 'UTF-8', filePattern: 'src/test/**/*.java', filePatternExclude: 'src/test/java/sample/*.java', key: 'TestCode']]
}
Excel形式で出力

去年こっそり追加してた機能です。エンタープライズな仕事しているのでExcel必須。残念ながらxls形式で、xlsxには対応していません・・
カウント処理のみのスクリプトにファイル名とフォーマットを追加すればOKです。
ファイルパスとファイル名を「outputFile」に、フォーマットを「outputFormat」に指定します。

stepcounter outputFile: 'sample.xls', outputFormat: 'excel', settings: [[encoding: 'UTF-8', filePattern: 'src/main/**/*.java', filePatternExclude: '', key: 'Java'], [encoding: 'UTF-8', filePattern: 'src/test/**/*.java', filePatternExclude: 'src/test/java/sample/*.java', key: 'TestCode']]

これでワークスペース配下にsample.xlsファイルが出力されます。

その他の出力形式

outputFormatに指定できるのは「excel」、「csv」、「json」、「xml」です。

一旦こんな感じです。
時間があったらPipeline対応した時の苦労話でも書いてみようかと思ってます。