我想将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 文件中添加任何额外的逻辑。
你可以做一些其他的 CC.NET 东西,比如后期构建电子邮件和合并任何结果 xml,但大部分逻辑(无论如何我的偏好)............将在下面的文件中。
<?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查看场景
在每个步骤中都可以预见到构建脚本,您可以在其中建立自己的基础。