[料理佳餚] Jenkins 依據 Git 特定的 committed message 或 changed path 來 trigger 建置作業

有時候我們不需要每次 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 RegionsExcluded Regions 分別可以用 Regular Expression 輸入匹配及不匹配的路徑規則,其意義代表的是若匹配(或不匹配)這些路徑規則,則 trigger 建置作業,想要輸入多個規則就用換行隔開。

當我 commit 的檔案,其路徑沒有命中規則的時候,commit 就會被 ignore 掉。

反之,commit 就會被 attend 並且 trigger 建置作業。