GitLab Runner fetch 專案時保留指定目錄不被刪除
GitLab Runner 在 fetch 專案時,預設會在 fetch 後執行 git clean -ffdx
命令,讓專案目錄維持在乾淨的狀態
然而有時候我們會想要保留一些目錄或檔案,讓下次編譯時不需要重新產生以節省編譯時間 (例如 Unity 專案的 Library 目錄),GitLab 有提供一些方式來達成這個目標
解決方式
1. 使用 cache 機制
在 job 中設定好 cache,可以讓指定目錄或檔案於 jobs 之間互相參考,缺點是如果 Runner 沒有啟用,或是超過 Runner cache 設定的上限就無法使用,另外 cache 只能在同一個 pipeline 中使用
2. 把專案要保留的東西複製到外部
缺點是會污染 Runner 之外的環境
3. 設定 GIT_CLEAN_FLAGS
排除指定目標被清除
GitLab Runner 11.10 版以後提供可覆寫 git clean
執行時的參數,在 variables
加上 GIT_CLEAN_FLAGS
- 未指定時,
git clean
預設使用-ffdx
- 指定為
none
時,不執行git clean
- 另外也可以設定自己想要的參數,例如設定要排除的目標:
-e <pattern>
|
|
<pattern>
請參考 git clean 說明