2016年2月29日月曜日

[Jenkins] ビルドのパラメータ「List Subversion tags (and more)」に branches にあるディレクトリが列挙されないときに確認すること

trunk/branches/tags の基本ディレクトリはありますか?


うん。普通はあるよね。
でも、それでハマったんだ。

もし、同じことで困っている人は trunk/branches/tags の基本ディレクトリがあるか確認してみてください。
以下は、経緯と理由です。

やりたかったこと
やりたかったことは、これ。
iutest の場合)
「List Subversion tags (and more)」を普通に設定すると trunk,branches/*,tags/* のディレクトリが列挙されます。
が、問題のリポジトリはなぜか列挙されなかったのです。


再現用に作ったリポジトリの構成は以下。


こんな感じで列挙されない。


フィルターの正規表現を間違えたのか?プラグインのバージョンで違う?とかやって時間を潰してしまいました…

理由
調べたところ、プラグインのソースに行きつきました。(subversion-2.5.7)
https://github.com/jenkinsci/subversion-plugin/blob/subversion-2.5.7/src/main/java/hudson/scm/listtagsparameter/ListSubversionTagsParameterDefinition.java

getTags

getSVNRootRepoDirectories

getTags 関数を見ると、isSVNRepositoryProjectRoot が true の場合のみ、getSVNRootRepoDirectories が呼ばれて branches/tags 以下のディレクトリをリストアップしてくれます。

isSVNRepositoryProjectRoot

isSVNRepositoryProjectRoot を見ると、trunk/branches/tags ディレクトリがあることが条件であることがわかります。

つまり、ルートディレクトリと判断されてない!!誰だよこのリポジトリ作ったのは…



この記事が誰かの助けになれば幸いでございます。

2016年2月24日水曜日

[Jenkins] Plot Plugin を使って見える化

最近、見える化って大事だよなー
と、より強く思うようになってきました。けど、見える化って難しかったりしますよね?

今回は、見える化に使えそうな Jenkins プラグインを紹介したいと思います。
(こんなんあるよ程度の紹介です。すごく便利というわけではなかったり…)

Plot Plugin
Plot Plugin は csv ファイルや xml ファイルなどを集計して、グラフ化してくれるプラグインです。

今回は簡単に csv ファイルを出力してグラフ化してみました。
出力するデータは、 iutest のリリースパッケージのファイルサイズです。

段々とファイルサイズが大きくなっているのが一目瞭然ですね。

csv の出力は、Jenkins の「Windows バッチコマンドの実行」で以下のコマンドを実行しています。
Windows バッチでは、変数参照で %z のようにすると、ファイルサイズが取得できます。
echo tar.gz, zip > package_size.csv
for %%F in (iutest*.tar.gz) do SET /p SS=%%~zF< nul >> package_size.csv
for %%F in (iutest*.zip) do echo , %%~zF>> package_size.csv
exit /b 0

出力される csv はこんなかんじです。
tar.gz, zip 
796836, 1188539
1行目にデータの名前を列挙、2行目にデータの値を列挙する形式なので注意。
あとは、この .csv ファイルを集計するように Jenkins の設定をすれば、上図のようなグラフが表示できます。



今回は簡単な事例を紹介しましたが、ちょっとのことでも視覚化されるとイイ感じですよね。

その他事例
Jenkinsにスローテストのグラフを表示する - くりにっき
Rails Best Practices を CI (Jenkins) で確認する | Aiming 開発者ブログ
Hudsonでコードの行数を記録する - みずぴー日記

2016年2月17日水曜日

NuGet のパッケージバージョンをバッジにする

NuGet のパッケージバージョンを Github でバッジ表示したいな~と思ったので、調べてみました。

こちらのスライドで、「Version Badge」というのが紹介されていたので使ってみることにしました。


Version Badge にアクセスすると、以下のようなページが開くので NuGetを選択します。

検索ボックスにパッケージ名を入れて、Find ボタンを押すと
こんな感じにバッジの URL がでるので、あとはコピペして完了です。

簡単ですね!
NuGet version