# Outline
一、前言
二、概述
三、only & except trigger
四、Git References
五、when trigger
A、待敘項目
# TL;DR
此篇文章是本系列文的導讀,會介紹文章的結構與常出現的資訊樣板;另外還有範例專案的使用方式;最後則是建議的閱讀順序,這部分會一直更新到本系列文結束為止。
在雙十連假前,此系列文每天的發文時都會以最簡陳述為主,以求在繁忙的日常中,至少能先維持挑戰鐵人賽的進度,並且逐漸拓展思路與系列結構。預期會在國慶連假將本篇文章論述完整。
暸解 GitLab CI 的運作方式後,今天就來講另一個重點,就是 Trigger。暸解 Trigger 能讓我們將 Git Workflow 與 CI 產生連結,從程式碼到提交到部署的整個流程,開始真的成為一條流水線(Pipeline)!
在 Job 的屬性中,有一組屬性是專門設定的,分別是 only、except、when,三者是可以同時出現的。
only、except 的使用方式是相同的,所以就一起介紹了。這兩個 trigger 的值有分兩大類—— Git References 和 Special Keywords,前者就是指透過 Git Branches 和 Git Tags 的建立、更新去觸發,後者是 GitLab CI 針對一些使用情境設計的特別 Trigger。
兩者的值都是一個陣列,也就是可以有多個同類 Trigger,只要其中一個有被滿足可以。而 Only 是指只有在這個陣列裡的條件會觸發這個 Job,Except 則是只要在這個陣列裡的條件就不會觸發 Job,若兩個都存在,就必須是有滿足在 only 中且不在 except 中的條件會觸發 Job。
這部分最簡單,就是直接填寫名稱。
若有一個 Patter,可以透過正則表達式去指定。
在前兩者後面加上 @
,並接上 Repository 的 namespace 和 slug name,可以指定只有某個 Repository 可以觸發。
branches
: 只要是分支就算滿足條件tags
: 只要是 Tag 就算滿足條件。api
:external
:pipelines
:pushes
:schedules
:triggers
:web
:merge_requests
: 只要這個分支有被 MR 參考就算滿足條件。external_pull_requests
:chat
:on_success
只要前一個 Stage 的 Jobs 都執行成功,就算滿足。on_failure
- 只要前一個 Stage 的 Jobs 有任一個失敗,就算滿足。always
- 無論前一個 Stage 的 Jobs 的執行結果,總是會滿足。manual
- 手動觸發。delayed
- 在前一個 Stage 完成後的某個時間後觸發。