如何设置从建筑项目的存储库中 CruiseControl.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

  1. 步骤 1 设置源代码管理
  2. 步骤 2 在签入时构建
  3. 步骤 3 添加单元测试
  4. 步骤 4 添加覆盖范围
  5. 步骤 5 添加源代码分析

每个步骤中都预见了构建脚本,您可以基于这些脚本。

最新更新