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対応した時の苦労話でも書いてみようかと思ってます。

StepCounterプラグインの紹介

このエントリは Jenkins Advent Calendar jp 2011 : ATND の最終日、25日目の分です。

今日は、私が作ったStepCounterプラグインを紹介します。

はじめに

このプラグインは、その名の通り、ステップ数を集計するプラグインです。
世の中にはステップ数を集計するツールはたくさんありますが、このプラグインの特徴は二点あります。

  1. Mavenなどのビルドツールが不要
  2. ソースの種別ごとに集計し、エンコードが指定できる

要するに、SVNとJenkinsがあれば使えて、Javaソース、Groovyソース、プロパティファイル等、種類ごとにステップ数が集計できる、というものです。

ちなみに、ステップ数の計測処理はhttp://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi?page=StepCounter:Project AmaterasのStepCounterを使わせていただいています。そのため、対応しているファイル形式もStepCounterと同じです。

使ってみる

では、Jenkins coreのソースをステップ数を集計してみます。

1. ジョブを作ります。

2. ソースを取得するGitやSVNの設定を行います。

3. StepCounterを有効にして、集計したいソース種別ごとに設定を行います。ソースの指定はAntと同じ形式で行うことができます。

4. ジョブの設定を保存し、実行します。実行ログは以下のように出力されます。

5. 集計結果はプロジェクトのトップに推移グラフとして表示されます。

6. また、詳細を「ステップ数」というリンクで見ることができます。

7. 詳細画面はこんな感じです。

ここではこのジョブを定期的に動かしていないため、推移が分かりませんが、毎日、あるいは毎週定期的にジョブを起動すれば、どのソースがどの程度増減したかが分かるようになります。

さいごに

今後は、以下の機能を追加していきたいと思っています。
-差分詳細の表示
-メール通知
-新しいファイル形式への柔軟な対応(今現在groovyは未対応でした)
-テキスト以外のファイル形式への対応(ExcelやWord)
-Excelへの出力
-メール通知の際の、Excel表添付
下の三つは年上の方への対策機能ですね・・・

Jenkinsのgithubにも公開しているので、使っていただければ幸いです