ソースコード管理に VSS を使用しているプロジェクトを Jenkins で CI しようとすると、「Visual SourceSafe Plugin」ってのがありまして、これを使用することにしたんです。
紆余曲折ありまして、なんとか使用できるようになったんで備忘録として書き留めておきます。
そうそう、当該の「VSS を使用しているプロジェクト」の VSS のバージョン、6.0d なんです。
2005 でもないんです。こんなプロジェクト、他の会社とかでもまだまだあるんですかね?
前提条件
- Jenkins サーバマシン (Windows) には VSS のインストールが必要
- たぶん Linux では動かない(※com4j ってので COM に動的バインドしてるみたい)
- VSS のデータベース初期化ファイル (srcsafe.ini) は Windows 共有フォルダにアクセスしますので、このファイルにアクセス権がないと Jenkins のビルド時にソースを落としてくることができません
- Jenkins のプロセスを Windows のサービスとして起動している場合は、起動するユーザを共有フォルダにアクセスできるものに変更しておきます
(たぶん初期状態では起動するユーザは「Local System」になっていると思います) - Jenkins をサービスとして起動していない場合は、プロセス起動時のユーザが共有フォルダにアクセスできるようにしておきます
※ユーザID/パスワードが共有フォルダへのアクセスに使用するものとまったく同じものを作っておくか、「Windows資格情報コンテナー」をいじってアクセスするID/パスワードを適切なものにしておきます
VSSへのチェックインをしていないのに「変更あり」とされ続けてしまう問題
「SCM をポーリング」にチェックを入れて設定していたら、ソースを変更していないのにポーリングの時間毎に毎回以下のような「変更あり」の状態になってしまい、ビルドがいっぱい走っていました。Started on 201X/XX/XX 10:00:00 Polling SCM changes on master [poll] No previous build, so forcing an initial build. Done. Took 0 ms Changes found
なんでやろー?って思ってたら、VSS プラグインのバグのようです。
issues に挙がってました。
- 言及のあったエントリ(パッチもアップしてくれている)
https://issues.jenkins-ci.org/browse/JENKINS-10730 - バグ対応のパッチ
https://issues.jenkins-ci.org/secure/attachment/20758/0001-fixed-incremental-build-in-checkout-inverting-check-.patch - VSS プラグインのソース
https://github.com/jenkinsci/vss-plugin
しかし VSS プラグインはしばらく更新されていませんし、自分でパッチ当ててビルドするしかなさそうです。
自前でパッチ当て&ビルドする
プラグインを開発するための手順ページとして以下を参考にしました。
[Jenkins プラグインを開発する] http://qiita.com/kazuqqfp/items/ded99eb8d7bd967b9d2a
- 上記ページの1の手順、maven をインストールします
※maven のインストールは以下の URL でアーカイブをダウンロードして「Windows 2000/XP」の所よく読んでインストールして下さい。
http://maven.apache.org/download.cgi - 2~4の手順の代わりに、上記の VSS プラグインのソースを落としてきて、さらにパッチを当てます
※1行だけ、if 文の「==」を「!=」に変更するだけなんで、手で修正してもいいですけどね - 5の手順どおり、ソースのルートフォルダで「mvn install」します
- hpi ファイルが完成したら Jenkins に手動でインストールします
これで幸せになれる人がいれば嬉しいです。
0 件のコメント:
コメントを投稿