6. GitLab CI/CD 流水線配置參考文檔

原文鏈接:https://docs.gitlab.com/ee/ci/yaml/

在一個項目中,GitLab CI/CD 流水線通過使用名為 .gitlab-ci.ymlYAML 格式文件進行配置。

.gitlab-ci.yml 文件定義了流水線的文件結(jié)構(gòu)和執(zhí)行順序,并確定:

  • 使用 GitLab Runner 執(zhí)行什么。
  • 遇到特定條件時要做出哪些決定。例如,當(dāng)進程成功或失敗時。

本主題介紹 CI/CD 流水線配置。有關(guān)其他 CI/CD 配置信息,請參閱:

我們也提供配置流水線的完整示例:

注意:如果您有一個從 GitLab 拉取過來的鏡像存儲庫,您可能需要在項目的 Settings > Repository > Pull from a remote repository > Trigger pipelines for mirror updates 以啟用并觸發(fā)流水線。

介紹

流水線的配置從作業(yè)開始。作業(yè)是 .gitlab-ci.yml 文件中最基本的元素。

作業(yè)是:

  • 定義它們應(yīng)在什么條件下執(zhí)行的約束。
  • 具有任意名稱的頂級元素,并且必須至少包含 script 項。
  • 不限制可以定義的作業(yè)數(shù)量。

例如:

job1:
  script: "execute-script-for-job1"

job2:
  script: "execute-script-for-job2"

上面的示例是最簡單的 CI/CD 配置,包含兩個單獨的作業(yè),其中每個作業(yè)執(zhí)行不同的命令。當(dāng)然,命令可以直接執(zhí)行代碼(./configure;make;make install)或者運行位于存儲庫中的腳本文件(test.sh)。

作業(yè)會被 Runner 選中并在 Runner 的所在的環(huán)境中執(zhí)行。重要的是,每項作業(yè)都是相互獨立運作的。

驗證 .gitlab-ci.yml 文件

GitLab CI 的每個實例都有一個名為 Lint 的嵌入式調(diào)試工具,它可以驗證 .gitlab-ci.yml 文件的內(nèi)容。您可以在項目命名空間的 ci/lint 頁面下找到 Lint。例如,https://gitlab.example.com/gitlab-org/project-123/-/ci/lint。

不可用的作業(yè)名稱

每個作業(yè)都必須具有一個唯一的名稱,但有一些保留的關(guān)鍵字不能用于作業(yè)名稱

  • image
  • services
  • stages
  • types
  • before_script
  • after_script
  • variables
  • cache

使用保留關(guān)鍵字

如果在使用特定值時遇到驗證錯誤(例如,truefalse),請嘗試:

  • 引用他們。
  • 將它們更改為其他形式,例如,/bin/true。

配置參數(shù)

作業(yè)是通過一系列用于定義作業(yè)行為的參數(shù)來組成的。
下表列出了作業(yè)的可用參數(shù):

關(guān)鍵字 描述
script 由 Runner 執(zhí)行的 Shell 腳本。
image 使用 docker 鏡像。以下這些也可用:image:nameimage:entrypoint
services 使用 docker 服務(wù)鏡像。以下這些也可用:services:name 、services:aliasservices:entrypointservices:command
before_script 包括一組在作業(yè)被執(zhí)行之前執(zhí)行的命令
after_script 包括一組在作業(yè)被執(zhí)行之后執(zhí)行的命令
stages 定義流水線中的階段
stage 定義一個作業(yè)階段(默認(rèn):test
only 創(chuàng)建作業(yè)的限制條件。以下這些也可用:only:refs, only:kubernetes, only:variablesonly:changes
except 不創(chuàng)建作業(yè)的限制條件。以下這些也可用:except:refs, except:kubernetes, except:variablesexcept:changes
tags 用于選擇 Runner 的標(biāo)簽列表。
allow_failure 允許作業(yè)執(zhí)行失敗。失敗的作業(yè)無助于提交狀態(tài)
when 什么時候執(zhí)行作業(yè)。以下這些也可用:when:manualwhen:delayed
environment 作業(yè)被部署的環(huán)境的名稱。以下這些也可用:environment:name, environment:url, environment:on_stopenvironment:action
cache 用于后續(xù)運行的緩存文件列表。以下這些也可用:cache:paths, cache:key, cache:untrackedcache:policy
artifacts 成功附加到作業(yè)中的文件和目錄列表。以下這些也可用:artifacts:paths, artifacts:name, artifacts:untracked, artifacts:when, artifacts:expire_in, artifacts:reportsartifacts:reports:junit
企業(yè)版 GitLab 中,這些是可用的:artifacts:reports:codequality, artifacts:reports:sast, artifacts:reports:dependency_scanning, artifacts:reports:container_scanning, artifacts:reports:dast, artifacts:reports:license_management, artifacts:reports:performanceartifacts:reports:metrics
dependencies 作業(yè)被執(zhí)行時所要依賴的其他作業(yè),以便您可以在它們之間傳遞 artifacts。
coverage 設(shè)置給定作業(yè)執(zhí)行時的代碼覆蓋率要求
retry 在發(fā)生故障時,自動重試作業(yè)的次數(shù)和時機
parallel 應(yīng)該并行運行多少個作業(yè)實例
trigger 定義下游流水線觸發(fā)器。
include 允許此作業(yè)包含外部 YAML 文件。以下這些也可用:include:local, include:file, include:templateinclude:remote
extends 此作業(yè)將繼承的配置條目
pages 上傳作業(yè)執(zhí)行的結(jié)果以用于 GitLab Pages。
variables 在作業(yè)級別中定義的作業(yè)變量

注意:參數(shù) typestype 已失效。

設(shè)置默認(rèn)參數(shù)

使用 default: 關(guān)鍵字可以將某些參數(shù)全局設(shè)置為所有作業(yè)都可用的默認(rèn)值。特定于作業(yè)中的相同參數(shù)配置可以覆蓋默認(rèn)參數(shù)。

可以在 default: 塊中定義以下作業(yè)參數(shù):

  • image
  • services
  • before_script
  • after_script
  • cache

在以下示例中,ruby:2.5 鏡像被設(shè)置為除 rspec 2.6 作業(yè)(該作業(yè)使用ruby:2.6 映像)之外的所有作業(yè)的默認(rèn)鏡像。

default:
  image: ruby:2.5

rspec:
  script: bundle exec rspec

rspec 2.6:
  image: ruby:2.6
  script: bundle exec rspec

參數(shù)詳情

以下是用于配置 CI/CD 流水線的參數(shù)的詳細說明。

...

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容