我想在我的項目的倉庫(git)中存儲ccnet.config
文件(或該項目的其他cc.net配置文件),並使CC.NET在從儀表板強制構建時使用它。我該怎麼做?如何從建築項目的存儲庫中爲CruiseControl.net設置構建步驟?
謝謝!
我想在我的項目的倉庫(git)中存儲ccnet.config
文件(或該項目的其他cc.net配置文件),並使CC.NET在從儀表板強制構建時使用它。我該怎麼做?如何從建築項目的存儲庫中爲CruiseControl.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>
感謝您的諮詢。聽起來不錯。需要檢查它。那樣我就需要獲得msbuild的工作,並知道如何去做。因此有點複雜。但是如果我知道這將是相當不錯的部署策略。 – Artyom
附加我的答案。 – granadaCoder
看看場景的在 http://www.cruisecontrolnet.org/projects/ccnet/wiki/Build_Server_Scenarios
在您可以基於自己的每個步驟中都有預見的構建腳本。
你在建什麼樣的項目? DotNet? – granadaCoder
是的,asp.net應用程序,它是果園cms。 – Artyom
請參閱下面的答案。你想在.proj(msbuild)文件中使用你的邏輯。 ccnet.config應該基本上是靜態的。 – granadaCoder