变量优先级是什么
同名变量按层级覆盖:触发或手动运行传入的流水线变量优先级最高,其次是项目、群组与实例级定义,作业内定义优先级较低;排查时以运行时实际值为准。理解覆盖顺序是排查「配置改了不生效」类问题的第一步,尤其在多层级共用同名变量时。
基本信息
| 高层 | 手动运行或接口触发器传入的变量 |
|---|---|
| 中间 | 项目变量、群组变量、实例变量依次递减 |
| 低层 | 作业内 variables 定义 |
| 排查 | 作业里打印实际值并注意掩码 |
| 原则 | 同名覆盖要显式确认层级 |
| 调试 | 用受控输出对比不同层级的取值 |
层级与优先级
| 来源 | 优先级 | 典型用途 |
|---|---|---|
| 手动运行 | 最高 | 临时覆盖参数 |
| 项目变量 | 较高 | 项目级配置与凭据 |
| 群组变量 | 中等 | 多项目共享配置 |
| 实例变量 | 较低 | 全局默认值 |
| 作业内定义 | 最低 | 作业默认参数 |
验证实际值
验证实际值
# 在作业中确认最终生效值(避免直接打印敏感变量)
echo "LOG_LEVEL=$LOG_LEVEL"
env | grep -E '^(CI_|APP_)' | sort
# 排查顺序:手动传参 → 项目/群组/实例变量 → 作业内定义
# 确认覆盖来源后再调整定义层级典型使用场景
- 同名冲突排查:从高到低逐层确认变量的实际来源
- 手动运行参数:临时覆盖默认配置验证功能
- 多项目共享:群组级变量统一维护,项目级按需覆盖
- 安全配置保护:敏感变量放高层级,避免被低层误覆盖
- 环境区分:按环境定义不同变量并在作业中校验
- 迁移评估:把变量清单与所属层级一次盘点,避免层级混乱
同名覆盖是常见事故源:变更变量前先确认层级关系,避免在项目级覆盖掉实例级安全配置。
排查用输出要防泄漏:敏感变量被掩码时改用长度或哈希对比,不要关闭掩码。