GitLab CI/CD:.gitlab-ci.yml 文件 (持續更新)


一、.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 檢測到數據不完整時重試

    示例:

timeout


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM