1. 介紹
管道配置從作業(job)開始, 作業是 .gitlab-ci.yml 文件的最基本元素。
job是:
- 定義了約束,指出應在什么條件下執行
- 具有任意名稱的頂級元素,並且必須至少包含 script 子句
- 不限制,可以定義多個
//示例
job1:
script: "echo job1"
job2:
script: "echo job2"
上面是兩個簡單的job,其中每個 job 都執行不同的命令,在 script 中,可以直接執行命令(/.configure;make;make install)或運行腳本(test.sh)。
(1) 驗證 .gitlab-ci.yml
GitLab CI 的每個實例都有一個稱為 Lint 的嵌入式調試工具,該工具可以驗證 .gitlab-ci.yml 文件的內容。您可以在 ci/lint 項目名稱空間下找到它。
項目 -> CI/CD -> 流水線

(2) 不可用的作業名稱
- image
- services
- stages
- types
- before_script
- after_script
- variables
- cache
- include
(3)使用保留關鍵字
如果要使用保留關鍵字(比如 true ),請嘗試執行以下操作:
- 使用引號,如 "true"
- 改為其它形式,如 /bin/true
2. job 配置參數
下表列出 job 了可用的參數
| 關鍵字 | 描述 |
|---|---|
| script | 由 Runner 執行的 Shell 腳本 |
| image | 使用的 docker 映像。也可用: image:name 和 image:entrypoint |
| services | 使用的 docker 服務映像。也可用:services:name,services:alias,services:entrypoint,和services:command |
| before_script | 重寫作業之前執行的一組命令。 |
| after_script | 重寫作業后執行的一組命令。 |
| stages | 定義管道中的階段。 |
| stage | 定義作業階段(默認:test)。 |
| only | 限制 job 的創建。也可用:only:refs, only:kubernetes, only:variables, and only:changes。 |
| except | 限制什么時候不創建 job。也可用:except:refs, except:kubernetes, except:variables, except:changes。 |
| rules | 用於評估和確定作業的選定屬性以及是否創建該作業的條件列表。不可與only/except一起使用。 |
| tags | 用於選擇 Runner 的 tags 列表。 |
| allow_failure | 允許作業失敗。失敗的工作不會影響提交狀態。 |
| when | 什么時候開始工作。也可用:when:manual和when:delayed。 |
| environment | 作業部署到環境的名稱。 也可用:environment:name,environment:url,environment:on_stop,environment:auto_stop_in和environment:action。 |
| cache | 在后續運行之間應緩存的文件列表。也可用:cache:paths,cache:key,cache:untracked,和cache:policy。 |
| artifacts | 成功時附加到作業的文件和目錄列表。也可用:artifacts:paths,artifacts:expose_as,artifacts:name,artifacts:untracked,artifacts:when,artifacts:expire_in,artifacts:reports,artifacts:reports:junit,和artifacts:reports:cobertura。在GitLab 企業版,這些都是可供選擇:artifacts:reports:codequality,artifacts:reports:sast,artifacts:reports:dependency_scanning,artifacts:reports:container_scanning,artifacts:reports:dast,artifacts:reports:license_management,artifacts:reports:performance和artifacts:reports:metrics。 |
| dependencies | 通過提供要從中獲取工件的作業列表,限制將哪些工件傳遞給特定作業。 |
| coverage | 給定作業的代碼覆蓋率設置。 |
| retry | 發生故障時可以自動重試作業的時間和次數。 |
| timeout | 定義自定義作業級別的超時,該超時優先於項目范圍的設置。 |
| parallel | 多少個作業實例應並行運行。 |
| trigger | 定義下游管道觸發器。 |
| include | 允許此作業包括外部YAML文件。也可用:include:local,include:file,include:template,和include:remote。 |
| extends | 該作業將要繼承的配置條目。 |
| pages | 上載作業結果以用於GitLab頁面。 |
| variables | 在作業級別上定義作業變量。 |
| interruptible | 定義在通過新的運行使其冗余時是否可以取消作業。 |
| resource_group | 限制作業並發。 |
參數詳情:https://docs.gitlab.com/ee/ci/yaml/README.html#parameter-details
