1

ccnet.configファイル (またはこのプロジェクトの他の cc.net 構成ファイル) を自分のプロジェクトのリポジトリ (git) に保存し、ダッシュボードから強制的にビルドするときに CC.NET がそれを使用するようにしたいと考えています。どうすればいいですか?

ありがとうございました!

4

2 に答える 2

3

「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>
于 2013-10-16T17:00:11.183 に答える
0

http://www.cruisecontrolnet.org/projects/ccnet/wiki/Build_Server_Scenariosでシナリオを見てみましょう

  1. 手順 1 ソース管理の設定
  2. ステップ 2 チェックインの構築
  3. ステップ 3 単体テストを追加する
  4. ステップ 4 カバレッジを追加する
  5. ステップ 5 ソースコード分析を追加する

各ステップには、ベースとなるビルド スクリプトが用意されています。

于 2013-10-17T13:26:40.347 に答える