2010-07-21 32 views
1

我有一個CruiseControl.NET動力構建服務器和一個exec任務,在構建它之前遞增項目的程序集版本。我在想,是否有一種方法(我不知道CruiseControl.NET的任務)將修改後的文件提交給SVN?CruiseControl.net在任務更改後向SVN提交文件

我需要它,所以當安裝項目是手動構建的時(我使用msbuld,所以這些不是連續構建的),所有構建文件在部署時都將具有正確的程序集版本。哦,如果有人知道如何在未安裝Visual Studio的構建服務器上構建設置&部署項目,我很想知道!

編輯:感謝喬納森·斯坦頓更新現在的作品,但它創造了另一個問題......構建服務器現在循環(變化它更新程序集的版本,並提交該文件,該caouses的onModify觸發器觸發這樣它更新程序集版本並提交文件...)。

我該怎麼做纔不會循環?我可以添加更新SVN任務嗎?這會有幫助嗎?

+0

我試圖在提交任務後添加更新任務,但它沒有幫助,它仍然在每次運行中都找到修改。 – 2010-07-21 12:14:40

+0

我嘗試設置SVN使用revisionNumbers,因爲我正在更新我的工作目錄,這將阻止它的構建,但它仍然在每個間隔都發怒... – 2010-07-21 12:38:44

回答

0

This question may help

由於VS依賴關係,我放棄了安裝和部署項目。

+0

這是一個關於安裝和部署項目的恥辱......將研究那個問題,現在謝謝你。 – 2010-07-21 06:19:10

+0

我現在使用WiX來生成.msi設置。一些VS集成的粗糙邊緣,但幾乎無痛。 – devstuff 2010-08-26 02:07:26

2

以下任務將提交一個文件進入源回購。

<exec executable="svn.exe">   
    <buildArgs>commit -F <file you want to commit back> --username USER --password PASS --no-auth-cache --non-interactive --message 'CruiseControl.net build %CCNetLabel%'</buildArgs> 
    <buildTimeoutSeconds>10</buildTimeoutSeconds> 
</exec> 

下面的鏈接可能是有用的:

我希望這有助於

喬納森

編輯

還有另一種方式來做到這一點,那就是讓CC.NET在DLL設置的內部版本。這裏是如何做到這一點的達米爾的角落題爲演練Setting Up SVN and CC.NET for .NET Development

+0

我只是想知道如果這不會再次導致構建觸發器,並因此創建一個無限循環增量和重新構建相同的項目? – 2010-07-21 10:22:08

+0

這確實會循環構建服務器。現在每5分鐘發生一次完整版本(增加版本)。我該怎麼做,這樣的任務不會觸發CruiseControl.NET構建? – 2010-07-21 10:50:34

+0

你正在提交什麼文件?如果它是DLL,那麼你可以創建一個新的分支或新的回購,只包含這個文件。然後,您將該分支/回購映射到一個新的目錄,有一個任務將dll /文件複製到該目錄,然後在該文件上運行提交。 您的其他項目將只需要監視該文件的新分支/回購。 – 2010-07-21 11:48:12

0

在其喬納森掛在他的回答中post on my blog我描述了我的設置,它在構建過程中不做任何提交。在構建過程中,我只是使用Subversion的版本號,而不是增加版本號。我更喜歡這種方式,因爲根據內部版本號,我可以輕鬆檢索用於構建版本的源代碼。

在我所有的構建都在CruiseControl.NET上完成的情況下,這很好用。在這種情況下手動構建設置比較棘手,因爲Subversion中的文件沒有正確的內部版本號。您可以通過使用CruiseControl.NET版本中已經修改過的文件來繞過這個問題,並使用它們來構建您的設置。或者你也可以連續建立設置。

如果這不適合你,你應該採取由DilbertDave建議的Filtered Source Control Block路徑。只需將您的AssemblyInfo.cs文件(或在構建過程中修改的任何其他文件)放在exclusionFilters中即可擺脫構建循環。