NAntでビルドからVSSのチェックインまでを自動化する
VSSディレクトリが以下のようになっていて、
$/PROJECT ├─Function1_DLL │ └─Module1.DLL │ └─Function1_SRC └─Function1 └─Module1 └─Module1.sln
ローカルディレクトリに下記のように取得してあるとき、
C:¥Dev¥PROJECT ├─Function1_DLL │ └─Module1.DLL │ └─Function1_SRC └─Function1 └─Module1 └─Module1.sln
Module1.slnをビルドして、VSS上のModule1.dllを更新するNAntプロジェクト。
<?xml version="1.0" encoding="utf-8"?> <project name="SampleProject" default="main" basedir="C:/Dev/" xmlns="http://nant.sf.net/schemas/nant-0.85.win32.net-1.0.xsd"> <description>Sample project for NAnt 0.85</description> <!-- Properties --> <property name="src.dir" value="Project/Function1_SRC/Module1" /> <property name="obj.dir" value="Project/Function1_DLL" /> <property name="module.name" value="Module1.dll" /> <property name="solution.name" value="Module1.sln" /> <property name="vss.dir" value="//SERVER_NAME/VSS_DIR" /> <!-- srcsafe.iniがあるディレクトリ --> <property name="vss.usr" value="username" /> <property name="vss.pwd" value="password" /> <!-- Targets --> <target name="main" depends="" > <!-- VSSから最新版取得 --> <call target="update" /> <!-- クリーン --> <call target="clean" /> <!-- ビルド --> <call target="build" /> <!-- オブジェクトをチェックアウト --> <call target="checkout" /> <!-- オブジェクトをリリースディレクトリに移動 --> <call target="move" /> <!-- オブジェクトをチェックイン --> <call target="checkin" /> </target> <!-- VSSから最新版取得 --> <target name="update" depends="" > <vssget dbpath="${vss.dir}/srcsafe.ini" path="$/${src.dir}" password="${vss.pwd}" username="${vss.usr}" recursive="true" replace="true" localpath ="${src.dir}" /> </target> <!-- クリーン --> <target name="clean" depends="" > <delete dir="${src.dir}/bin" /> <delete dir="${src.dir}/obj" /> </target> <!-- ビルド --> <target name="build" description="Build of the solution" depends="" > <solution configuration="release" solutionfile="${src.dir}/${solution.name}" failonerror="false" /> </target> <!-- オブジェクトをチェックアウト --> <target name="checkout" depends="" > <vsscheckout dbpath="${vss.dir}/srcsafe.ini" path="$/${obj.dir}/${module.name}" password="${vss.pwd}" username="${vss.usr}" localpath="${obj.dir}" recursive="false" writable="true" /> </target> <!-- オブジェクトをリリースディレクトリに移動 --> <target name="move" depends="" > <copy file="${src.dir}/obj/Release/${module.name}" tofile="${obj.dir}/${module.name}" /> </target> <!-- オブジェクトをチェックイン --> <target name="checkin" depends="" > <vsscheckin dbpath="${vss.dir}/srcsafe.ini" path="$/${obj.dir}/${module.name}" password="${vss.pwd}" username="${vss.usr}" localpath="${obj.dir}/${module.name}" recursive="false" writable="false" /> </target> </project>