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