2011-04-11 65 views
6

我試圖在TeamCity 6中配置一組構建配置,並試圖以TeamCity啓用的最清晰可能的方式對特定需求進行建模。TeamCity:管理驗收測試的部署依賴關係?

我有一組的驗收測試(大約4-8套房由系統的功能區分組測試,它們涉及到),我想以並行方式運行(我將它們建模爲構建配置這樣他們就可以分佈在一組代理人中)。

從我最初的研究中,似乎有AcceptanceTests元生成配置,通過Snapshot dependencies拉入一套個人驗收測試配置應該做的伎倆。然後,所有我需要做的是說,我Commit構建配置應該觸發AcceptanceTests,他們都會得到拉動。因此,可以說,我也有AcceptanceSuiteAAcceptanceSuiteBAcceptanceSuiteC

到目前爲止,一切都很好(我知道我也可能會導致Commit配置觸發AcceptanceSuiteA,AcceptanceSuiteBAcceptanceSuiteC - 問題是我需要手動彙總結果以確定整體驗收測試的總體成功)。

的複雜的一點是,雖然AcceptanceSuiteC只是需要一些Commit工件,然後可以生活在它自己的,AcceptanceSuiteAAcceptanceSuiteB需要:

  • DeploySite(可以說需要2分鐘,我無法承受旋一個完全獨立的一個只爲這運行)
  • 反對部署的站點運行測試

的問題是,我需要ABL E要確保:

  • 網站只得到一次配置
  • 而二套房在運行

如果我成立DeploySite作爲構建的配置,並有AcceptanceSuiteA網站沒有得到打一頓和AcceptanceSuiteB拉它在作爲快照依賴性,AFAICT:

  • AcceptanceSuiteB隨後或平行運行可能TR igger另一個DeploySite將會摧毀AcceptanceSuiteA和/或AcceptanceSuiteB正在使用中的部署。

雖然我可以說限制同時運行數建立強制唯一一個在同一時間發生,我需要有一次一個不同時從屬件仍在運行。

TeamCity中有沒有一種方法來模擬這樣的層次結構?

編輯:思路: -

廢話解決方案是DeploySite可以設置一個「使用標誌」標記,然後有AcceptanceTests配置明顯,標誌[AcceptanceSuiteAAcceptanceSuiteB後已經完成。那麼這個問題就變得具有下一個DeploySite下來管道等待的一個,直到所述門再次被打開(構建中做一個阻塞等待,那並不覺得不對勁 - 我希望它被標記爲「未開始」,而不是看起來像做點事情需要很長時間)。然而,這種東西在這裏有一個標誌,有點檢查它是我試圖擺脫的那種可變狀態/片狀氣味。

編輯2:我是否可以以編程方式更改代理配置,我可以設置Agent Requirements要求INUSE =假然後設置

+0

看起來這已經覆蓋上的[JB JIRA](http://youtrack.jetbrains.net/issue/TW-3798)和[DEVNET](http://devnet.jetbrains.net/message/5212199 #5212199) – 2011-04-11 12:13:45

回答

3

看來你當試驗運行將其清除後,部署啓動和標誌去看看在Jetbrains DevnetYouTrack tracker第一,記得要用魔語clobber在你的搜索。

然後安裝groovy-plug並使用StartBuildPrecondition設施

要使用該功能,添加system.locks.readLock。或者system.locks.writeLock。屬性到構建配置。當沒有建立與運行讀或寫的同名鎖 與writeLock構建纔會開始。當沒有建立具有相同名稱的寫鎖運行 與readLock構建纔會開始。

其中管理事實,依賴配置'讀'和DeploySite配置'寫'共享項目。

(這不是一個完整的產品化的解決方案,因此跟蹤器項目仍然開放)

編輯:我仍然不知道該鎖是否應該下構建參數|系統屬性,什麼確切名格式應該是,是locks.writeLock.MYLOCKNAME(即參照語法%system.locks.writeLock.MYLOCKNAME%配置顯示出來)?

其他的疑難問題是:如何通過構建完成writeLock任務來管理給出的構建?讀取訪問權限 - 下一個鎖定是否會被刪除(這將允許另一個寫入器) - 還是有必要有什麼東西在同一時間排隊父母和孩子的依賴?