GitLab CI 变量通过环境变量机制注入,无需替换文件;在 UI 的 Settings > CI/CD > Variables 中添加,支持掩码与保护;作业中直接用 $VAR_NAME 引用,优先级为流水线>项目>组>实例。
gitlab ci 流水线自动注入变量,核心是把值存在 gitlab 的变量系统里,再在 .gitlab-ci.yml 中直接引用。它不靠“替换文件内容”实现,而是靠环境变量机制——作业启动时,gitlab 自动把变量注入 shell 环境,脚本里用 $var_name 就能取到。
在 GitLab UI 中添加变量
这是最常用、最安全的方式,尤其适合密码、密钥等敏感信息:
- 进入项目 → 左侧菜单 Settings > CI/CD → 展开 Variables
- 点击 Add variable
- 填写三项关键内容:
-
Key:变量名,如
API_TOKEN、KEYSTORE_PASSWORD(只能含字母、数字、下划线) - Value:对应值,比如一串 token 或密码
- Flags:勾选 Mask variable(隐藏日志输出)、Protect variable(仅在受保护分支生效,可选)
-
Key:变量名,如
在流水线中直接使用变量
变量定义后,无需额外声明,所有 job 默认可用。写法就是标准的 shell 环境变量语法:
-
echo "$API_TOKEN"—— 双引号防止空格截断,推荐写法 curl -H "Authorization: Bearer $API_TOKEN" https://api.example.com- 也可用于动态指定镜像:
image: $CI_REGISTRY_IMAGE/app:$CI_COMMIT_TAG
处理多行内容(如证书、私钥)
证书(.p12/.cer/.p7b)这类二进制文件不能直接当纯文本变量存,需先 Base64 编码:
- 本地编码:
base64 -i release.p12 | tr -d '\n',复制输出结果 - 在 GitLab Variables 中新建变量,如
SIGN_KEY_BASE64,值粘贴编码后字符串 - 流水线中解码还原:
echo $SIGN_KEY_BASE64 | base64 -d > release.p12
注意变量作用域和优先级
变量可设在实例、组、项目、流水线四个层级,同名时优先级从高到低为:流水线 > 项目 > 组 > 实例。例如:
- 项目级变量
NODE_VERSION设为"18" - 某次手动触发 pipeline 时,在触发界面填入
NODE_VERSION=20 - 该次运行中,所有 job 看到的
$NODE_VERSION都是20











