2012-01-25 100 views
2

我目前使用以下工具有一個CI環境設置爲身患持續集成:私人使用ClearCase

VCS - ClearCase的(啓用UCM)
CI服務器 - 詹金斯
構建引擎 - 的MSBuild

基本上詹金斯每2分鐘輪詢我的UCM項目的集成流,並通過我編寫的msbuild腳本構建。

雖然in ClearCase it is not a best practice having a individual stream for each developer,好CI demands private builds to be run before commiting the code。除此之外,理想情況下,我將擁有原子提交,ClearCase僅在提交流的形式上提供原子提交。

目前我們正在直接處理整合流,有時我們的構建失敗,因爲Jenkins在開發人員完成檢入之前開始構建。

我的問題是,如何在ClearCase上創建私有工作區(Sandbox)和原子提交而不爲每個開發人員創建流?我錯過了什麼嗎?

+0

關於SO的第一個問題,歡迎:)很高興我不必通過twitter消息回答它。當涉及到ClearCase時,140個字符是不夠的... – VonC

+0

謝謝!我總是在這裏找到我的答案而不提出疑問...... ^^你說得對,ClearCase的答案總是充滿細節。 「 –

回答

1

目前,我們正在對集成流直接合作,有時我們建立失敗,因爲詹金斯開始開發之前建設完成她的簽入

你可以寫你的構建腳本,以檢測是否交付正在進行中。
交付的特點是名爲deliver.xxx的活動:您可以列出其內容並查看其中是否有任何版本正在結帳。如果是,交付正在進行中。
如果最近的交付只有簽入版本,則可以安全地開始構建。


或者:

怎樣纔可以有一個私人工作空間(沙盒)和原子提交上的ClearCase沒有爲每個開發人員

私人區域詹金斯創建流使用將是每個開發人員流的快照視圖。
顧名思義,快照視圖會拍攝代碼的快照,但您需要定義一個標準,建議Jenkins可以構建快照視圖更新的內容。

我所看到的使用是「BUILD」移標籤(最近更新的代碼,你重新申請一個標籤,並在他的快照視圖中使用詹金斯與基於該標籤上選擇規則):
的開發人員在他/她認爲當前代碼已準備好構建時移動他/她的標籤,並且Jenkins作業根據所述移位標籤'BUILD'引用的版本更新其在開發者流上的快照視圖。

+0

」Jenkins使用的私有區域將成爲每個開發人員流的快照視圖。「 - 爲什麼我會讓Jenkins在開發人員流上工作?當然,如果我作爲開發人員在命令行上自己運行我的構建腳本,那麼我也可以這樣做,但它同樣如此...您是說我必須爲每個開發人員提供一個流,即使這不是最佳實踐? –

+0

@MarcosBrigante如果你真的想爲每個開發者保護隱私,你需要爲每個開發者提供一個ClearCase的流(與RTC相反,你可以在這裏使用庫工作區)。每個開發者只有一個流允許真正的隔離。但是,正如我之前提到的那樣,這是瘋狂的(在交付/重組操作方面)。 – VonC

+0

@MarcosBrigante我會保留私人版本作爲開發者在他/她自己的快照視圖中啓動的腳本(只要他/她不更新所述快照視圖與普通流,則提供半隔離) – VonC