iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 22
1
DevOps

Git 其然,Git 其所以然系列 第 22

GitLab CI: Basic Triggers

  • 分享至 

  • xImage
  •  
# 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

only、except 的使用方式是相同的,所以就一起介紹了。這兩個 trigger 的值有分兩大類—— Git References 和 Special Keywords,前者就是指透過 Git Branches 和 Git Tags 的建立、更新去觸發,後者是 GitLab CI 針對一些使用情境設計的特別 Trigger。

兩者的值都是一個陣列,也就是可以有多個同類 Trigger,只要其中一個有被滿足可以。而 Only 是指只有在這個陣列裡的條件會觸發這個 Job,Except 則是只要在這個陣列裡的條件就不會觸發 Job,若兩個都存在,就必須是有滿足在 only 中且不在 except 中的條件會觸發 Job。

3-1 Git References

3-1-1. 名稱

這部分最簡單,就是直接填寫名稱。

3-1-2. 正則表達式(Regular Expression)

若有一個 Patter,可以透過正則表達式去指定。

3-1-2. Specific Repository

在前兩者後面加上 @,並接上 Repository 的 namespace 和 slug name,可以指定只有某個 Repository 可以觸發。

3-2 Special Keywords

  • branches: 只要是分支就算滿足條件
  • tags: 只要是 Tag 就算滿足條件。
  • api:
  • external:
  • pipelines:
  • pushes:
  • schedules:
  • triggers:
  • web:
  • merge_requests: 只要這個分支有被 MR 參考就算滿足條件。
  • external_pull_requests:
  • chat:

四、when trigger

4-1. Overall

  • on_success 只要前一個 Stage 的 Jobs 都執行成功,就算滿足。
  • on_failure - 只要前一個 Stage 的 Jobs 有任一個失敗,就算滿足。
  • always - 無論前一個 Stage 的 Jobs 的執行結果,總是會滿足。
  • manual - 手動觸發。
  • delayed - 在前一個 Stage 完成後的某個時間後觸發。

附錄A、待敘項目

  • API Trigger
  • Special Keyword 的詳細介紹
  • 各種 Trigger 的應用情境

上一篇
GitLab CI: Job to Pipeline
下一篇
Integrate:Feature Toggle
系列文
Git 其然,Git 其所以然31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言