2012-02-20 44 views
3

我在一個項目和大約10個構建配置中使用TeamCity 6.5.1。我有一個類似於Core - > Framework - > Apps的依賴鏈。框架依賴於Core,應用程序依賴於Core和Framework。「觸發快照依賴關係中的更改」似乎無法正常工作

我遇到的問題是在覈心被觸發併成功構建後,框架/應用程序不會被觸發。我已經在框架和所有應用程序中選擇了「觸發快照依賴關係中的更改」,但是即使核心構建是從SVN提交觸發的,它們似乎都沒有觸發。

「觸發快照依賴性的變化」不符合我的想法嗎?我是否需要將核心(和框架)VCS根添加到框架/應用程序上的VCS觸發器上?如果這是我唯一的選擇,我想我可以這樣做,但似乎是多餘的(特別是如果我將來需要調整VCS根路徑)。

核心VCS觸發:

+:root=MySVNRoot:/Core/** 

框架VCS觸發(快照DEP上核心):

[x] Trigger on changes in snapshot dependencies 

+:root=MySVNRoot:/Framework/** 

應用VCS觸發(快照DEP上Core和框架)

[x] Trigger on changes in snapshot dependencies 

+:root=MySVNRoot:/Applications/MyApplication/** 

回答

0

決定在框架和應用程序配置上使用「完成構建」觸發器。我更喜歡VCS觸發器以上述方式工作,但我會一直這樣做,直到有人可以建議更好的替代方案(或者如果「Finish Build」觸發器真的是是最佳選擇)。

框架觸發:

VCS trigger 
Finish Build trigger on Core 

應用觸發:

VCS trigger 
Finish Build trigger on Framework 
0

對於任何依賴的情況下該功能的使用是snapshot dependencies。 在你的情況下,你應該添加TeamCity快照依賴從Framework到Core,從Apps到Framework。 之後「觸發快照依賴關係中的更改」選項將開始工作,在Core上發生任何更改時觸發框架和應用程序。

+1

我同意。但是,「觸發快照依賴關係中的更改」選項看起來沒有正常工作。例如:如果代碼在App(依賴於Core和Framework)中進行了更改,那麼Core和Framework將在App之前構建。但是,如果Core中發生了某些變化,那麼Framework(或應用程序)將不會自動生成。我們正在使用6.5.1,這不是最新版本,但我在變更日誌中找不到任何有關依賴性觸發器的錯誤,所以我沒有更新過。 – 2012-03-02 18:36:24

0

你的框架VCS觸發(快照)應該是相同的核心,您希望它觸發時所建核心源改變

+:root=MySVNRoot:/Core/** 

應用VCS觸發應當針對核心&框架VCS

+:root=MySVNRoot:/Core/** 
+:root=MySVNRoot:/Framework/** 

TeamCity 7中的這些設置要容易得多

0

「觸發構建快照依賴關係中的更改」功能排序相反,它聽起來像。對我來說,理想的結果是這樣的:

Apps depends on Framework depends on Core 
Change in Framework -> Build Framework -> Build Apps 
Change in Apps -> Build Apps 
Change in Core -> Build Core -> Build Framework -> Build Apps 

我想在覈心的變化觸發建立框架,並最終應用程序,但我不希望在框架的改變來觸發核心的改變,同時仍觸發在Apps中構建。

這聽起來像是「觸發快照依賴關係中的更改構建」功能,但實際上它的作用是在鏈的開始處觸發構建,而不管該更改發生在哪個項目中:

Change in Apps -> Build Core -> Build Framework -> Build Apps 
Change in Framework -> Build Core -> Build Framework -> Build Apps 
etc... 

,如果你在應用程序改變的東西,就意味着,你會在覈心,並通過快照依賴觸發一個構建,它最終將建立在鏈的一切。我認爲不適合你的原因是因爲該觸發器必須在應用程序中設置,在其他任何項目上都沒有觸發器。

不幸的是,我認爲實現我描述的行爲的唯一方法是在每個相關項目上都有一個VCS觸發器和完成構建觸發器,以及一個安靜期,因此您可以獨立地從鏈中的某個位置觸發構建而不會觸發整個構建鏈。