少し時間ができたので久しぶりにredmineとhudsonを更新して・・・え・・!?・・あれ!?・・・hudsonさんクビになってるし! えええ!
というわけで、jenkinsさんに頼むことにしましたので、少しメモ。
0.もくてき
jenkinsさんにバグを探してもらい見つかったら罵ってもらう
jenkinsを稼働させ、linuxスレーブ(jenkinsが動いてるサーバー)とwindowsスレーブを作り、
pythonはテスト+α、windowsでは.Netビルド+テスト+αを行います。
1.jenkinsを動かす
今回は以下のURLでjenkinsを動かします。
http://host/jenkins
centosで動作してるホストで動かすので、yumのリポジトリを使います。
[bash]
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm –import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
yum install jenkins
[/bash]
編集:/etc/sysconfig/jenkins
# 最後の行なるARGSに追加
JENKINS_ARGS=”–prefix=/jenkins”
編集:/etc/httpd/conf.d/proxy_ajp.conf
LoadModuleが有効なことを確認
編集:/etc/httpd/conf/httpd.conf
# 追加したいところに。
[text]
ProxyRequests Off
ProxyPreserveHost On
<Location /jenkins>
ProxyPass ajp://localhost:8009/jenkins
ProxyPassReverse ajp://localhost:8009/jenkins
</Location>
[/text]
jenkinsのリスタートとapacheのリロード
[bash]
/etc/init.d/jenkins restart
/etc/init.d/httpd reload
[/bash]
参考:
2.windowsスレーブを追加する。
jenkinsの管理>ノードの管理から追加する。
起動方法を「windowsサービスとしてこのwindowsスレーブを制御」を選択して管理者権限のある(administrators)のユーザーを入力する。
最初は全然起動してくれなかったが、ひとつずつトラブルシューティングの内容を確認していったら動いた。
Windows slaves fail to start via DCOM – hudson – Hudson Wiki
動かないときに確認すべきポイント
- ポートをあけること
- 必要なサービスが動いていること
- JDKがインストールされていること
- 実行exeをファイアウォールの例外に追加すること
3.windowsスレーブを使って.netアプリをビルドする。
windowsスレーブには、.NetアプリケーションをGitリポジトリから取得し、MSBuildでビルドして、NUnitでテストして、PartCoverでカバレッジを測定して、テストとカバレッジをjenkinsで確認する、という流れを作ります(カバレッジについては未完成)。
GITプラグイン Jenkins GIT pluginを有効化
設定で、GITのパスを追加(linuxスレーブ向けとwindowsスレーブ向け)
パスを入力するとき、じゃなくて/を使う。
MSBuildプラグイン Jenkins MSBuild Pluginを有効化
パスを設定する。
プロジェクトを作る。
MSBuildでソリューションをビルド
/p:Configuration=Release
nunitでテスト
“D:Program FilesNUnit 2.4.8binnunit-console.exe” pathtoHogehogeTest.dll /xml=nunit-result.xml
publish NUnit test result reportでテスト結果をhtml化。
・msbuildするとき、dllの検索パスの中にnunit.framework.dllがないと怒られる。
‘HKEY_LOCAL_MACHINESOFTWAREMicrosoft.NETFrameworkAssemblyFolders’ にNUnitというキーを作って、フォルダのパスを値として設定する。
参考:AssemblyFoldersについての記述があった:Npgsql: ユーザマニュアル
・partcoverでカバレッジ
Part Cover 紹介 その3 – Part Cover console から テストコード(NUnit)のカバレッジを取得する – お だ のスペース
Hudson で PartCover を使ってみた – お だ のスペース
“D:Program FilesGubka BobPartCover .NET 2PartCover.exe” –target “D:Program FilesNUnit 2.4.8binnunit-console.exe” –target-args pathtoHogehogeTest.dll –include [namespace]* –output partcover-result.xml
xmlとxlstでhtml生成は以下のタスクを使う。
msbuildtasks.tigris.org
タスクをいれたら
Part Cover 紹介 その4 – ビルドに組み込む。MSBuild から Part Cover console を実行する – お だ のスペース
タスクを使ったプロジェクトファイルを作ってそれでビルドする。
参考:
4.pythonでビルド・テスト
pythonは、GITリポジトリから取得し、nose, unittest-xml-reporting, coverageを使ってテストとカバレッジ出力します。
まずは準備
pip install nose coverage unittest-xml-reporting
GITリポジトリの設定をして、
ビルドで「シェルの実行」を選択して、以下を実行させる。
PATH=/opt/python2.7/bin:$PATH
nosetests -v -w tests/ –with-xunit –with-coverage
coverage xml
(ここでnosetests -vってのを他のホームページなどでよく見たので、こうしてるけど、-vでもなしでもxmlの内容変わらないような気がするだけどどうだろ?)
ビルド後の処理でCoverturaカバレッジ・レポートの集計(coverage.xml)とJUnitテスト結果の集計(nosetests.xml)を設定する。
5.おまけ
Cacooのステンシルがありました。
JenkinsステンシルをCacoo Storeに公開しました – @ikikko のはてなダイアリー