ccnet.config
ファイル (またはこのプロジェクトの他の cc.net 構成ファイル) を自分のプロジェクトのリポジトリ (git) に保存し、ダッシュボードから強制的にビルドするときに CC.NET がそれを使用するようにしたいと考えています。どうすればいいですか?
ありがとうございました!
ccnet.config
ファイル (またはこのプロジェクトの他の cc.net 構成ファイル) を自分のプロジェクトのリポジトリ (git) に保存し、ダッシュボードから強制的にビルドするときに CC.NET がそれを使用するようにしたいと考えています。どうすればいいですか?
ありがとうございました!
「ccnet.config」はかなり静的なままにする必要があります。
ソリューション/プロジェクトの構築に別の「ロジック」が必要な場合は、次のことをお勧めします。
1. Write your ccnet.config code to pull source code from repository. (aka, Task #1)
2. In your repository, include a MasterBuild.proj (msbuild definition).
3. Have cc.net call msbuild.exe on MasterBuild.proj (aka, Task #2).
4. Have the majority of your logic inside the MasterBuild.proj file. That is what you check in/out of source control.
CC.NET を「超豪華な msbuild.exe エグゼキュータ」と考えれば、私見よりも理にかなっているでしょう。
これは非常に基本的な msbuild (定義) ファイルです。あなたはそれを呼び出すことができます
MySolutionMasterBuild.proj (または類似)
これを .sln ファイルと同じディレクトリ (ソース管理内) に配置します。
CC.NET を使用してコードをダウンロードします。次に、msbuild.exe を接続して以下のファイルを呼び出します。
次に、.proj ファイル内に追加のロジックを含めます。
ビルド後の電子メール送信や結果xmlのマージなど、他のCC.NETのいくつかを行うことができますが、ロジックの大部分(とにかく私の好み)...........以下のファイルにあります。
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="AllTargetsWrapped">
<PropertyGroup>
<!-- Always declare some kind of "base directory" and then work off of that in the majority of cases -->
<WorkingCheckout>.</WorkingCheckout>
<ArtifactDestinationFolder>$(WorkingCheckout)\ZZZArtifacts</ArtifactDestinationFolder>
</PropertyGroup>
<Target Name="AllTargetsWrapped">
<CallTarget Targets="CleanArtifactFolder" />
<CallTarget Targets="BuildItUp" />
<CallTarget Targets="CopyFilesToArtifactFolder" />
</Target>
<Target Name="BuildItUp" >
<MSBuild Projects="$(WorkingCheckout)\MySolution.sln" Targets="Build" Properties="Configuration=$(Configuration)">
<Output TaskParameter="TargetOutputs" ItemName="TargetOutputsItemName"/>
</MSBuild>
<Message Text="BuildItUp completed" />
</Target>
<Target Name="CleanArtifactFolder">
<RemoveDir Directories="$(ArtifactDestinationFolder)" Condition="Exists($(ArtifactDestinationFolder))"/>
<MakeDir Directories="$(ArtifactDestinationFolder)" Condition="!Exists($(ArtifactDestinationFolder))"/>
<Message Text="Cleaning done" />
</Target>
<Target Name="CopyFilesToArtifactFolder">
<ItemGroup>
<MyExcludeFiles Include="$(WorkingCheckout)\**\*.doesnotexist" />
</ItemGroup>
<ItemGroup>
<MyIncludeFiles Include="$(WorkingCheckout)\bin\$(Configuration)\**\*.*" Exclude="@(MyExcludeFiles)"/>
</ItemGroup>
<Copy
SourceFiles="@(MyIncludeFiles)"
DestinationFiles="@(MyIncludeFiles->'$(ArtifactDestinationFolder)\%(Filename)%(Extension)')"
/>
</Target>
</Project>
http://www.cruisecontrolnet.org/projects/ccnet/wiki/Build_Server_Scenariosでシナリオを見てみましょう
各ステップには、ベースとなるビルド スクリプトが用意されています。