建立了 build 的配置以後,您既可以手動點選 "Run" 按鈕來觸發一次 build 過程,也可以通過 Triggers 配置實現自動觸發 build 過程。一個 trigger 就是一條規則:當某個事件發生時開始一次 build。TeamCity 內建支援多種觸發器型別:
對於同一個 build,我們可以應用多個觸發器,它們會按照各自的邏輯獨立的起作用。下面我們比較詳細的看下各類觸發器的用法。
VCS 觸發器
VCS 觸發器在檢測到程式碼變化後會自動觸發 build 過程。TeamCity 會根據您設定的時間間隔去檢測程式碼的變化。如果這段時間中有多個 checkin,僅觸發一次 build。
需要注意的是當一個 build 配置有多個 VCS root 時,並不會為每個 VCS root 的變化觸發 build,而是在檢測過所有的 VCS root 後才決定是否觸發一次 build。
您還可以設定每個 checkin 都觸發一次 build。這需要選擇"Trigger a build on each check-in"。如果您希望同一個提交者的多次提交只觸發一次 build,請把"Include seral check-ins in a build if they are from the same committer"也選上。
靜默期(Quiet Period)是個比較有趣的概念。設定後便不會在連續的幾次 checkin 過程中觸發 build (這幾次連續的checkin是一個完整的過程)。通俗點講,當檢測到最後一次變更後的一段時間(預設一分鐘)內沒有發現新的變更才觸發一次 build。
VCS 觸發器中還有個好玩的東西叫"VCS Trigger Rules"。通過規則的設定,你可以告訴 TeamCity 是否滿足觸發 build 的條件:
Schedule 觸發器
當我們要定時觸發 build 時就需要用到 Schedule 觸發器。
簡單的使用方式就是在 Date and Time 區域選擇合適的時間配置就可以了。此外 TeamCity 還支援 cron 格式的時間設定:
這為我們提供了更多的靈活性。
Finish Build 觸發器
如果 build 之間有一定的依賴關係,比如後面的 build 依賴前一個 build 的產物,那麼就需要在前一個 build 完成時觸發下一個 build。Finish build 觸發器可以完美的完成這個任務:
只需要選擇合適的 build configuration 就可以了。我們還可以根據前一個 build 是否成功來決定是否來觸發下一個 build:
Branch Remote Run 觸發器
當我們希望在 TeamCity 上 build 某個個人分支時就需要通過某個分支上的變更來觸發 build。Branch Remote Run 觸發器可以實現這樣的功能:
我們可以指定某個使用者的分支。注意,這種觸發器目前只支援 git 和 mercurial。
TeamCity 還支援一些其他型別的觸發器,我們在用到時會進行詳細的介紹。