簡単なデイリービルドを組んでみる その2
まずはマスターソースの取り出し。
現在のプロジェクトではソースファイルはVisual SourceSafeで管理されているので、ここからビルドPCに最新版一式を取り出すことにする。VSSはコマンドライン上で操作して、この内容をバッチファイルに書く。
プロジェクトデータベースを指定するには、環境変数にsrcsafe.iniのあるフォルダを指定しておく。フォルダはUNCパスでもOK。
set SSDIR=\\vss_server\folder
コマンドライン上でVSSを操作するには、SS.EXEにコマンドを指定する。今回はソース一式を取り出したいので「Get」コマンドを使う。まずはこんな感じ。
set VSS_PATH=C:\Program Files\Microsoft Visual Studio\VSS\win32 "%VSS_PATH%\ss" Get
SS.EXEにはパスが通っていないので環境変数に入れておく。どうせバッチファイル内だから使い捨てだし。あとは適当なオプションを選んで追加する。おおよそはこんな感じ。
set LOCAL_HOME=C:\Projects "%VSS_PATH%\ss" Get $/ProjectName/sub "-GL%LOCAL_HOME%\sub" -R -YGuest -I-N "-O@vss.log"
追加したオプションの内容は、
- $/ProjectName/sub
- VSS上でのプロジェクト名
- "-GL%LOCAL_HOME%\sub"
- プロジェクトを取り出すための作業フォルダ
- -R
- プロジェクトを再帰的に取り出す
- -YGuest
- VSSへのログインアカウント。どうせ取り出しのみなので、横着にもゲスト・アカウント
- -I-N
- Yes or Noの選択で全部 No
- "-O@vss.log"
- 結果情報を指定ファイルに書き出す
ここで注意するのは、結果ファイルの指定。パス指定なしにすると、作業フォルダにファイルができる。
後で処理結果をメールするので、処理結果を1つのファイルに追加していくことにする。最終的なVSS絡みの部分は、こんな感じ。
set SSDIR=\\vss_server\folder set LOCAL_HOME=C:\Projects set VSS_PATH=C:\Program Files\Microsoft Visual Studio\VSS\win32 "%VSS_PATH%\ss" Get $/ProjectName/sub1 "-GL%LOCAL_HOME%\sub1" -R -YGuest -I-N "-O@vss.log" type "%LOCAL_HOME%\sub1\vss.log" >> build.log del "%LOCAL_HOME%\sub1\vss.log" "%VSS_PATH%\ss" Get $/ProjectName/sub2 "-GL%LOCAL_HOME%\sub2" -R -YGuest -I-N "-O@vss.log" type "%LOCAL_HOME%\sub2\vss.log" >> build.log del "%LOCAL_HOME%\sub2\vss.log" "%VSS_PATH%\ss" Get $/ProjectName/sub3 "-GL%LOCAL_HOME%\sub3" -R -YGuest -I-N "-O@vss.log" type "%LOCAL_HOME%\sub3\vss.log" >> build.log del "%LOCAL_HOME%\sub3\vss.log"