2009-10-28 89 views
2

我是新來的巡航control.net請幫我看看下面的場景如何強制多個項目從一個項目在cruisecontrol.net

我需要從一個項目迫使其他項目。我知道在發佈者部分中,我們可以強制其他項目。但我的要求是我想強制超過2個項目,但這些項目應該一個接一個地開始,這也可以通過爲項目提供queuePriority來解決。這裏我們有一個限制,我想在那個時候單獨強制構建它不應該檢查隊列。

例 如果我從BuildAll項目應該建項目A,B項目(項目後完成)&項目C

(完成項目一&項目B之後)如果我強迫A計劃迫使它應該開始,同時如果我強迫項目B & Project C那些也應該建立與外部檢查項目A完成。

在此先感謝

回答

1

在項目B,您可以添加一個文件系統源控制元件,在項目A的輸出目錄,設置觸發修改指向。

這將有一個副作用,那就是沒有辦法構建項目A 而沒有它觸發項目B也可以構建。

1

在我看來,更好的解決方案是使用一些構建腳本,如NAnt或MSBuild。然後你的CruiseControl .NET只執行構建腳本的一部分。通常構建腳本比ccnet.config更容易維護。

此外,調試更容易,因爲您可以手動運行構建腳本的任何部分。

例中的MSBuild:您可以先製作一個XML的文件(讓我們稱之爲MyTasks.msbuild):

<Project DefaultTargets="All" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Target Name="ProjectA"> 
    <!-- Your project build-scripting...--> 
    <Exec Command="echo Hello A"/> 
    </Target> 
    <Target Name="ProjectB"> 
    <!-- Your project build-scripting...--> 
    <Exec Command="echo Hello B"/> 
    </Target> 
    <Target Name="All"> 
    <CallTarget Targets="ProjectA" /> 
    <CallTarget Targets="ProjectB" /> 
    </Target> 
</Project> 

如果你喜歡從命令行使用它,只需鍵入「的MSBuild MyTasks.msbuild 「 然後在的ccnet.config:

<project name="ProjectA" > 
    <!-- ... --> 
    <tasks> 
     <msbuild> 
     <executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.21006\MSBuild.exe</executable> 
     <timeout>3600</timeout> 
     <logger>C:\Program Files\CruiseControl\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger> 
     <workingDirectory>C:\Temp\CI\</workingDirectory> 
     <projectFile>C:\MyTasks.msbuild</projectFile> 
     <buildArgs>/toolsversion:4.0 /p:Configuration=Debug;</buildArgs> 
     <targets>ProjectA</targets> 
     <description>Building Project A</description> 
     </msbuild> 
    </tasks> 
    <!-- ... --> 
    </project> 
    <project name="All" > 
    <!-- ... --> 
    <tasks> 
     <msbuild> 
     <executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.21006\MSBuild.exe</executable> 
     <timeout>3600</timeout> 
     <logger>C:\Program Files\CruiseControl\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger> 
     <workingDirectory>C:\Temp\CI\</workingDirectory> 
     <projectFile>C:\MyTasks.msbuild</projectFile> 
     <buildArgs>/toolsversion:4.0 /p:Configuration=Debug;</buildArgs> 
     <targets>All</targets> 
     <description>Building Project A and B</description> 
     </msbuild> 
    </tasks> 
    <!-- ... --> 
    </project> 

唯一不好的是,如果您的構建將採取類似20分鐘,你不知道在CC狀態。但可以固定爲您的項目名稱=「所有」可能有很多MSBuild任務:

<project name="All" > 
    <!-- ... --> 
    <tasks> 
     <msbuild> 
     <!-- ... --> 
     <targets>ProjectA</targets> 
     </msbuild> 
     <msbuild> 
     <!-- ... --> 
     <targets>ProjectB</targets> 
     </msbuild> 
    </tasks> 
    <!-- ... --> 
    </project> 

希望這有助於...

相關問題