CI/CD 变量是环境变量的一种,通过设置 CI/CD 变量可以:
控制 job 与 pipeline 的行为
存储想复用的变量
避免在 .gitlab-ci.yml 文件中硬编码
CD/CD 的变量定义主要通过两种方式:
通过配置文件
通过项目设置
1. 通过配置文件
在 .gitlab-ci.yml
文件中,使用 variables
关键词可以定义变量。
1.1 变量作用域
在 .gitlab-ci.yml
中,变量的作用域有两种,一种是 job
可访问,另一种是全局可访问。
如果在配置文件的顶部区域定义变量,那么该变量在当前 CI 中的所有 job
均可访问。同理,如果在一个单独的 job
中定义变量,则该变量仅在该 job
中可访问。
|
|
.gitlab-ci.yml
仅存储非敏感配置 (non-sensitive configuration)敏感配置 (sensitive configuration) 请通过项目设置进行配置
1.2 忽略全局变量
在一个 job
中,如果不想使用全局的变量,需要将 variables
设置为 {}
:
|
|
1.3 变量中使用变量
变量可以在其他变量中使用:
|
|
1.4 变量中的转义符号
默认情况下,$
会被认为是变量的识别符,如果想作为常量使用,需要使用 $$
进行转义:
|
|
2. 通过项目设置
CI/CD 的变量也可以在项目设置中进行配置。只有项目的 Maintainer
拥有添加和更新 CI/CD 变量的权限。
在项目中维护变量的步骤:
进入到项目的
Settings
>CI/CD
,展开Variables
部分点击
Add variable
添加完变量后,就可以直接在 .gitlab-ci.yml
中访问了:
|
|
预设的变量
为了更好地了解当前任务的执行情况,GitLab 会把很多关键信息打包成预设变量,如当前 Pipeline 是哪个分支提交触发的,commit hash 是多少,谁提交,有没有发起 Merge Request 等。在每一个 Pipeline 中都可以直接使用预设变量。
常用的预设值主要是:
变量 | 备注 |
---|---|
CI_COMMIT_BRANCH | 提交的分支 |
CI_COMMIT_MESSAGE | 提交的信息 |
CI_COMMIT_SHA | 提交的 hash 值 |
CI_COMMIT_TAG | 发布的 tag |
CI_COMMIT_AUTHOR | 提交的人 |
CI_MERGE_REQUEST_ID | MergeRequest ID |