2009-07-13 41 views
3

我的經理要求爲我們的項目設置構建自動化。我決定使用CruiseControl.Net作爲我們的持續集成服務器,因爲其他一些團隊成員對此有一些經驗,但我沒有 - 這就是爲什麼我很樂意執行此任務。使用CruiseControl.Net構建一個已加標籤的項目

我們使用Subversion作爲我們的存儲庫,最終目標是在每次標記項目時實例化構建。因此,例如:

添加一個文件夾的svn:// SVN /標籤/ projectX創建/例如svn:// SVN /標籤/ projectX創建/ JulyCheckPoint 應籤新添加的標記(SVN:// SVN /標籤/ ProjectX/JulyCheckPoint)並運行一個nant文件(D:\ temp \ tags \ ProjectX \ JulyCheckPoint \ nant.build)

我知道CruiseControl是能夠監視svn:// svn/tags/ProjectX /進行更改,但我不確定如何將最新標記簽出到構建服務器的本地磁盤,並在內部運行nant.build,如果我不知道最近標籤的名稱。我做了一些Google搜索,並相信svn post-commit掛鉤可能是我應該研究的內容。

我希望這一切都有道理,請讓我知道,如果你需要進一步的細節/澄清。任何指導/意見將不勝感激。

乾杯。

回答

0

我認爲你可以做到這一點的唯一方法是使用svn:externals我認爲並設置一個存儲庫指向你的標籤。

svn propget svn:externals blah 

,然後做一個結賬針對如svn籤http://svn/repos/blah

在CruiseControl.NET把

<checkExternals>True</checkExternals> 
<checkExternalsRecursive>True</checkExternalsRecursive> 

在你的配置爲該項目

2

既然你知道如何監控/ svn/tags/ProjectX /對於更改,您可以讓它觸發一個腳本。此腳本可以執行鍼對svn的命令(請參閱http://nantcontrib.sourceforge.net/release/0.85/help/tasks/index.html中的svn任務)以檢出/ svn/tags/ProjectX /中的最新文件夾。從這裏你可以使用這個腳本來使用nant任務調用已檢出的文件夾中的nant腳本。

1

這並不回答你的問題,但我很好奇你爲什麼選擇從標籤而不是HEAD構建?

每次對源代碼存儲庫進行更改時,通常都會使用持續集成來構建項目代碼,以便及早發現問題。

我真的很喜歡Martin Fowler的this article。當我開始使用持續集成時,它給了我很多幫助。

+0

謝謝,我一定會看看那篇文章。我想到的下一步就是每晚實施幹線建設(爲了您提到的目的)。 最終,通過從標籤構建,我希望構建標記的構建管理器/開發人員能夠獲得包含標記項目的.msi安裝包(查看WiX)。這樣,我們所達到的任何里程碑都可以通過簡單地標記特定版本來構建到發行版安裝中。他們有什麼缺點,我忽略了嗎? – Boris 2009-07-16 00:29:50

+0

這聽起來像是一個合理的請求,但它並不適合CC.Net的工作方式。 在這種情況下,我會建議有第二個CC.Net項目稱爲發佈版本,由管理員運行。這個版本將創建MSI,然後標記主幹。如果需要修改標記的代碼,則可以分支並創建一個新的CC.Net項目以從該分支構建。 這是一個非常簡單的概述,但希望能給你一些想法,讓你開始。 – MikeD 2009-07-16 11:02:28

0

欣賞所有的幫助帥哥。我決定給acloutier的建議一個鏡頭,併爲每個項目製作靜態文件,這些nant文件總是位於構建服務器上。

CruiseControl.Net(構建服務器上的安裝程序)監視每個項目的標記存儲庫並激發相應的靜態文件。這個nant文件然後運行一些C#代碼,它確定了svn:// svn/tags/ProjectX/location中最後一個添加文件夾的名稱。

瞭解最近添加的文件夾的名稱可以讓我svn-checkout svn:// svn/tags/ProjectX /下最近標記的項目到本地位置,並在項目中運行nant文件。

如果任何人需要任何代碼片段或澄清,我會很樂意爲他們提供當我開始工作。謝謝您的幫助!

相關問題