2016-03-07 29 views
0

我們正在爲使用git的項目設置teamcity。我們有這樣的爭論,我們是否應該觸發每個提交或每個拉取請求的構建。Teamcity基於每個git提交構建vs構建拉取請求

如果我推一個分支說A,並且我們已經配置了對master的pull請求,那麼這個構建是如何觸發合併代碼將會出現,還是隻會構建分支?

讓我們想象一下,我們有我們的配置到TeamCity的每建pull請求

現在可以說我有一個分支主,開發一個checksout一個分支ftb_A。創建一個新的測試用例並提交。開發人員代碼尚未合併到主人。 Develope B創建一個新的分支ftb_B,他還創建了新的測試用例。現在開發人員A推送分支並提出一個拉取請求,以便構建運行通過開發A運行添加的測試用例。現在,來自開發人員A的請求被合併,並且新創建的tesr案例現在在master中可用。

現在開發人員B也推動他的分支,但是他沒有改造他的分支,即開發人員A添加的測試用例在brach ftb_B中不可用。現在開發者B提出了一個拉取請求。所以構建被觸發。現在我的問題是當構建觸發了由開發人員B提出的拉請求時,開發人員在主控中添加的測試用例是否會運行

+0

您能否按照具體要求更新問題描述? – SnehalK

+0

是的,它會運行。 Git會跟蹤文件中的更改,並能夠在您的示例中正確合併它們。即使開發者B沒有使用開發者A的代碼更新她/他的分支,他/她也不能合併她/他的分支,或者根據是否有衝突,兩個更改將一起工作。 –

回答

1

雖然沒有指出,但我會假設您在此處使用GitHub 。

簡而言之:是的,無論何時將更改推送給主設備,來自ftb_B的pull請求都會被更新。但是,您必須在拉取請求分支上觸發構建,而不是在ftb_B本身上。

解釋:當創建一個來自ftb_B的拉取請求時,GitHub會生成一個新的(隱藏)分支,該分支由ftb_B合併到主控端的更改組成。這使您可以查看更改,運行TeamCity構建,並在接受拉取請求之前執行您可能需要的任何其他步驟。如果來自ftb_A的拉取請求在之前被接受從ftb_B創建拉取請求,則這些更改自然會包含在拉取請求分支中。如果來自ftb_A的拉取請求在之後被接受從ftb_B創建拉取請求,則GitHub將檢測到主分支中的更改併爲您更新拉取請求分支。無論哪種情況,你都很好。

流量可能是這個樣子:

  1. ftb_A拉請求創建
  2. ftb_A拉通過GitHub的
  3. 自動創建ftb_B拉請求創建
  4. ftb_B拉通過自動創建請求支線請求分支GitHub
    • 此分支確實是而不是包括在這一點
  5. ftb_A拉動請求接受
  6. 主被更新
  7. ftb_B拉請求分支由GitHub的
    • 現在從ftb_A變化反映在拉自動更新從ftb_A變化請求分支

檢查瞭解更多信息:
https://blog.jetbrains.com/teamcity/2013/02/automatically-building-pull-requests-from-github-with-teamcity/

+0

您討論的第二種情況是,如果來自ftb_A和ftb_B的拉取請求都發生並且ftb_A拉取請求被合併,那麼git會自動更新ftb_B拉取請求。在這種情況下,teamcity會自動觸發一個來自ftb_B的拉取請求。 –

+0

@AmbujJauhari:是的,它會的。您必須在TeamCity的構建中配置VCS觸發器,然後它會檢測分支變化併爲您觸發構建。如果您不希望在所有提交中觸發構建,則可以將觸發器配置爲僅使用分支過濾器自動構建提交請求分支。有關詳情,請參閱文檔:https://confluence.jetbrains.com/display/TCD9/Configuring+VCS+Triggers#ConfiguringVCSTriggers-BranchFilter –

相關問題