CruiseControl.NET のビルド後のアクション
-
02-07-2019 - |
質問
ASP.NET アプリに CC.NET がセットアップされています。プロジェクトをビルドすると、ASP.NET アプリがプリコンパイルされてネットワーク共有にコピーされ、そこからサーバーがアプリケーションを実行します。
このサーバーは開発ボックスとは少し異なり、ステージング環境の次のサーバーはさらに異なります。違いは特定の構成ファイルなどです。そのため、いくつかのファイルを除外するか、プリコンパイルされたアプリがネットワーク共有にコピーされる前に削除したいと考えています。
私の構成ファイルは次のようになります。
<project name="Assembly.Web.project">
<triggers>
<intervalTrigger seconds="3600" />
</triggers>
<sourcecontrol type="svn">
<trunkUrl>svn://svn-server/MyApp/Web/Trunk</trunkUrl>
<workingDirectory>C:\build-server\Assembly\Web\TEST-HL</workingDirectory>
<executable>C:\Program Files (x86)\SVN 1.5 bin\svn.exe</executable>
<username>uid</username>
<password>pwd</password>
</sourcecontrol>
<tasks>
<msbuild>
<executable>C:\Windows\Microsoft.NET\Framework64\v3.5\MSBuild.exe</executable>
<workingDirectory>C:\build-server\Assembly\Web\TEST-HL</workingDirectory>
<projectFile>C:\build-server\Assembly\Web\TEST-HL\Web\Web.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
<targets>Build</targets>
<timeout>900</timeout>
<logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
</tasks>
<publishers>
<buildpublisher>
<sourceDir>C:\build-server\Assembly\Web\PrecompiledWeb</sourceDir>
<publishDir>\\test-web01\Web</publishDir>
<useLabelSubDirectory>false</useLabelSubDirectory>
<alwaysPublish>false</alwaysPublish>
</buildpublisher>
</publishers>
</project>
ご覧のとおり、buildPublisher を使用して、コンパイル済みファイルをネットワーク共有にコピーします。ここでやりたいことは、1) コピーされる前に特定のファイルを削除するか、2) コピーされた後にそれらのファイルを置き換えることです。
特定のファイルの変更を監視するアプリを実行し、その後そのファイルを他のファイルに置き換える必要はありません。何かを CC.NET によって実行するか、CC.NET によってトリガーされるようにしたいと考えています。
CC.NET で .bat ファイルを起動できますか?
解決
使用する必要があります NAnt そういうもののために。ここにあります Nantのタスクリファレンス..
他のヒント
を見てみましょう MSデプロイ または Web 導入プロジェクト. 。を提供する質問があります 詳細はこちら
もちろん、CruiseControl.NET はバッチ ファイルを実行できます。単に exec タスクを使用します。ただし、より簡単な答えは、MSBuild にタスクを実行させることかもしれません。ポストコンパイル ターゲットにいくつかのステップを追加するのは簡単です。