有時候我們不需要每次 commit 都執行 CI 的建置作業,例如:更換網站的 Logo、更新靜態頁面的 Wording,這次要介紹兩種方式,都是可以用來指定在特定條件之下才 trigger 建置作業的方式,一種是根據特定的 committed message,另一種是根據特定的 changed path。
根據特定的 committed message
Jenkins 有一個 Plugin 叫 Commit Message Trigger Plugin,雖然它最後的更新時間是在 2014 年,不過至少到 Jenkins 2.60.3 都還是可以安裝使用。
當我們安裝好之後,會在專案組態中建置環境
這個區塊看到一個選項 Enable Commit Message Trigger
。
然後它下面那行說明已經很清楚,只要我們在 commit 的時候加上 [ci KEYWORD]
字樣就會 trigger 建置作業,而且不分大小寫,KEYWORD 則是在 Plugin 提供的輸入框中去自訂。
如果 Plugin 在 committed message 中沒有匹配到特定的字樣,自然就不會執行建置作業。
根據特定的 changed path
但是這種在 committed message 中輸入特定字樣的方式非常容易掉球,我們可以改用另一種方式,看看這次 commit 的檔案中有沒有匹配(或不匹配)特定路徑規則,如果有匹配(或不匹配)特定路徑規則就 trigger 建置作業。
這個功能在 Git Plugin 就有提供了,在專案組態的原始碼管理
區塊會看到 Git 選項有一個 Additional Behaviours
選單,裡面有一個 Polling ignores commits in certain paths
。
Included Regions
及 Excluded Regions
分別可以用 Regular Expression 輸入匹配及不匹配的路徑規則,其意義代表的是若匹配(或不匹配)這些路徑規則,則 trigger 建置作業,想要輸入多個規則就用換行隔開。
當我 commit 的檔案,其路徑沒有命中規則的時候,commit 就會被 ignore 掉。
反之,commit 就會被 attend 並且 trigger 建置作業。