【GitLab】CI/CD Settings 說明
General pipelines
1. Public pipelines ✅
-
功能:允許任何人(即使沒有專案權限)查看 Pipeline 與 Job 詳細資訊,包括 log 和 artifacts。
-
影響:
-
開啟:方便外部協作或開源專案 debug。
-
關閉:僅有有權限的使用者能查看。
-
2. Auto-cancel redundant pipelines ✅
-
功能:在同一分支上,如果新的 Pipeline 啟動,會自動取消舊的 Pending / Running pipeline。
-
好處:減少資源浪費(例如多次 push 只保留最後一次)。
-
注意:取消的 pipeline 會標記為 canceled。
3. Skip outdated deployment jobs ✅
-
功能:部署任務還沒執行時,如果有新的 pipeline 部署成功,舊的部署 job 就會跳過(不執行)。
-
應用情境:避免舊版本覆蓋新版本的部署。
4. Use separate caches for protected branches ✅
-
功能:對受保護分支(protected branch)使用獨立的 CI cache。
-
好處:防止非受保護分支的 cache 汙染主分支的 cache(例如 main / master)。
-
影響:可能增加存儲空間使用。
5. CI/CD configuration file
-
功能:指定
.gitlab-ci.yml檔案位置。 -
預設:
.gitlab-ci.yml在專案根目錄。 -
用途:
-
如果 CI 設定檔放在子目錄,可以改成
my/path/ci.yml。 -
適合 Monorepo 管理多個 CI 配置。
-
6. Git strategy
-
選項:
-
git clone:每個 job 都會全新 clone 一份 repo。
-
git fetch(已勾選):重複使用上一次 job 的工作目錄(workspace),若不存在才 clone。
-
-
比較:
-
clone:乾淨,但速度較慢。 -
fetch:快,但可能殘留舊檔案(需注意 job 隔離)。
-
7. Git shallow clone
-
數值:
20 -
功能:限制 clone/fetch 的提交數(Depth)。
-
範例:
20代表只取最後 20 次 commit 歷史。 -
0 或空白 → 取全部 commit & tags。
-
-
好處:減少 clone 時間與流量。
8. Timeout
-
值:
1h(1 小時) -
功能:Job 最長允許執行時間。
-
到時動作:超時會被 GitLab 強制標記為 failed。
-
可用格式:秒數(
3600)、人類可讀(1h、30m)。
我看你的設定,Git strategy 用 fetch + shallow clone 20,這樣拉程式會比較快,但如果你有需要依賴完整 commit 歷史(例如 git describe、全量 tag 檢出),要把 shallow clone 設成 0。

