一、.gitlab-ci.yml 文件作用
- 可以定義跑CI時想要運行的命令或腳本
- 可以定義job之間的依賴和緩存
- 可以執行程序部署並定義部署位置
- 可以定義想要包含的其他配置文件和模版
二、一個簡單的.gitlab-ci.yml 文件示例
三、.gitlab-ci.yml 文件中的一些關鍵字
after_script
- 定義在每個job(包括失敗的job)之后運行的命令
- 如果job超時或者取消了,after_script 命令就不再執行
allow_failure
- 設置allow_failure:true的job,失敗時不影響其他job運行,不影響pipeline運行結果,默認值為false
- allow_failure:exit_codes 可以根據exit_codes判斷是否允許job失敗,例:
artifacts
- 默認job運行成功后,附加在job的文件或文件夾
- 可以在.gitlab-ci.yml 中通過設置 artifacts:when,指定job在什么狀態下會上傳 artifacts
- artifacts 文件大小最大支持1G,默認100M,job 結束運行后,可在GitLab job 頁面下載對應的 artifacts 文件
- 默認情況下,最近一個 stages 里的 job 會自動下載上一個 stages 中的 artifacts,可以通過 dependencies / needs 關鍵字控制
- paths 關鍵字可以指定要把哪個文件放在 artifacts 中
- expire_in 關鍵字可以指定 artifacts 文件保存時間,默認一個月
dependencies
- 可以指定從哪個 job 中下載 artifacts,如果不想下載任何 artifacts 文件,可以給 dependencies 定義一個空的數組
- 如果job A 中,dependencies 指定的 job B 由於某種原因沒有成功上傳 artifacts 文件,job A 就會運行失敗 (因為 job A 需要的文件找不到了)
artifacts:exclude
- 指定哪些文件不想包含在 artifacts 中
artifacts:expire_in
- 設置 artifacts 保存時間(默認以秒為單位),默認30天
- expire_in 可設置的參數示例:
- '42'
- 42 seconds
- 3 mins 4 sec
- 2 hrs 20 min
- 2h20min
- 6 mos 1 day
- 47 yrs 6 mos and 4d
- 3 weeks and 2 days
- never
artifacts:name
- 定義artifacts文件名,可接受預定義變量,如“$CI_JOB_NAME”
artifacts:paths
- 指定 artifacts 中包含的文件,paths 指定路徑下的文件都會包含在 artifacts 中
- paths 參數支持通配符
- 使用 only: tags 可以設置僅為打了 tag 的 pipeline 生成 artifacts 文件
artifacts:public
- 指定游客和匿名用戶是否可以獲取開放 pipeline 的 artifacts 文件, 默認值為 true
artifacts:reports
- 可以收集 pipeline job 相關的報告:測試報告、代碼質量報告、安全檢測報告,這些報告會展示在GitLab 合並請求、pipeline、安全儀表板(security dashboards)模塊
artifacts:untracked
- untracked 為true時,可以將 .gitignore 中被忽略的文件打包進 artifacts 中(如果在.gitlab-ci.yml 中已設置生成 artifacts ),為 false 時,忽略 .gitignore 中被忽略的文件
artifacts:when
- 指定 job 在什么狀態下上傳 artifacts 文件
- 可設定值:
- on_success: 默認值,僅當 job 成功時上傳 artifacts
- on_failure: 僅當 job 失敗時上傳 artifacts
- always: 無論 job 什么狀態,都會上傳 artifacts
retry
-
指定 job 失敗時重試次數,最大重試次數:2
-
when 可以指定出現哪些失敗時要重試
參數 描述 always 默認值,job 無論什么原因失敗都要重試 unknown_failure job 失敗原因未知時,重試 script_failure script 運行錯誤導致 job 失敗時重試 api_failure api錯誤導致job失敗時重試 stuck_or_timeout_failure 當job因為某些原因卡住或超時失敗時重試 runner_system_failure runner 系統錯誤導致 job 失敗時重試 missing_dependency_failure 找不到依賴導致 job 運行失敗時重試 runner_unsupported runner 不支持導致 job 失敗時重試 stale_schedule 被延遲的 job 不能運行時重試 job_execution_timeout script 執行超時導致 job 運行失敗時重試 archived_failure job 被歸檔不能運行時重試 unmet_prerequisites job 未完成前置任務導致運行失敗時重試 scheduler_failure job 未完成前置任務導致運行失敗時重試 data_integrity_failure 檢測到數據不完整時重試 示例: