GitLab CI/CD 中内置变量

在 GitLab CI/CD 中,内置变量(Predefined Variables) 是系统自动提供的环境变量,用于获取上下文信息、控制流程行为。以下是分类整理的常用内置变量及其用途:

一、核心变量(最常用)

CI

true

标记当前运行在CI环境中

CI_COMMIT_REF_NAME

main

分支名或标签名

CI_COMMIT_SHA

a1b2c3d4...

当前提交的完整SHA

CI_COMMIT_SHORT_SHA

a1b2c3d

提交SHA前8位

CI_JOB_ID

123456

当前Job的唯一ID

CI_JOB_NAME

build

当前Job名称

CI_PIPELINE_ID

7890

当前Pipeline的ID

CI_PROJECT_ID

123

项目的GitLab唯一ID

CI_PROJECT_PATH

my-group/my-project

项目的分组+名称路径

二、分支/合并请求相关

CI_MERGE_REQUEST_ID

合并请求(MR)的ID

CI_MERGE_REQUEST_TITLE

MR的标题

CI_MERGE_REQUEST_SOURCE_BRANCH_NAME

MR的源分支名

CI_COMMIT_BRANCH

推送分支名(仅分支触发时有效)

CI_DEFAULT_BRANCH

项目的默认分支(通常为

main

三、环境与部署

CI_ENVIRONMENT_NAME

部署的目标环境名(如

production

CI_ENVIRONMENT_URL

部署环境的访问URL

CI_DEPLOY_FREEZE

是否处于部署冻结期(

true

/

false

四、Runner与执行上下文

CI_RUNNER_ID

执行当前Job的Runner ID

CI_RUNNER_TAGS

Runner的标签列表(如

docker,aws

CI_SERVER_HOST

GitLab实例的域名(如

gitlab.example.com

五、文件路径

CI_PROJECT_DIR

/builds/my-group/my-project

项目克隆的完整路径

CI_CONFIG_PATH

.gitlab-ci.yml

CI配置文件的路径

六、时间变量

CI_PIPELINE_CREATED_AT

2023-05-20T08:30:00Z

Pipeline创建时间

CI_JOB_STARTED_AT

2023-05-20T08:31:00Z

Job开始时间

七、特殊用途变量

CI_DEBUG_TRACE

设置为

true

时显示详细调试日志

CI_SKIP_SYSTEM_HOOKS

跳过系统钩子执行

使用示例

1. 条件判断

deploy:
  script: ./deploy.sh
  rules:
    - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH  # 仅默认分支部署

2. 动态生成资源名称

build:
  script:
    - docker build -t app:$CI_COMMIT_SHORT_SHA .

3. 调试模式

debug_job:
  script:
    - echo "Runner tags: $CI_RUNNER_TAGS"
    - env | sort  # 打印所有变量
  variables:
    CI_DEBUG_TRACE: "true"  # 开启详细日志

查看所有内置变量

  1. 在Pipeline中打印
  2. 官方文档GitLab Predefined Variables

注意事项

  1. 变量覆盖:自定义变量会覆盖同名内置变量
  2. 敏感信息:内置变量中可能包含敏感数据(如 CI_JOB_TOKEN),需谨慎处理
  3. 版本差异:部分变量仅在特定GitLab版本中可用

掌握这些内置变量可以极大增强Pipeline的灵活性和自动化程度!

进阶高级测试工程师 文章被收录于专栏

《高级软件测试工程师》专栏旨在为测试领域的从业者提供深入的知识和实践指导,帮助大家从基础的测试技能迈向高级测试专家的行列。 在本专栏中,主要涵盖的内容: 1. 如何设计和实施高效的测试策略; 2. 掌握自动化测试、性能测试和安全测试的核心技术; 3. 深入理解测试驱动开发(TDD)和行为驱动开发(BDD)的实践方法; 4. 测试团队的管理和协作能力。 ——For.Heart

全部评论

相关推荐

从研二上学期开始尝试找实习(本人没有大厂情节,纯属混口饭吃),本贴属个人纪录,旨在留下这段难忘的经历。研二上:1. B站-数据平台大数据开发实习生(处男面)- 已挂:人生第一次面试,开始抱着试试的态度没想到B子给了面试机会,但是我的表现实属难崩,面试官从亲切随和到面露难色,面试具体问了一些科研方面的情况,以及包括数据分析,机器学习,spark的八股,一道sql手撕(连表查询),整个时长30分钟,到点即拜拜。整体不算难,奈何当时自己实在太菜。不出意外,一面挂。2. 梅斯医学-数据处理- 已挂:算是一个中厂,第一次经历长达一个小时的面试拷打,面试主要围绕简历展开,包括科研、比赛的一些情况,针对简历中的技术栈问的特别详细,甚至口述具体代码怎么写(例如爬虫等),还包括场景题,例如如何从一大段文本中提炼想要的信息?关键词匹配?等等,其他的忘了。自认为答得还行,奈何5天后,通知已挂。经过上述羞辱,楼主深感求职不易,痛定思痛继续沉淀,加上小论文返稿了,决定下学期再战。研二下:二月底开始疯狂投简历:1. 安兴实业-数据专员-已oc:面试信心满满,做好了手撕的准备,结果就打电话问了些无关紧要的逻辑问题便顺利入职(例如,你怎么进行多任务安排?)。2. 蔚来-数据分析-kpi面:楼主以为又是难得的机会,随即全力准备,恶补数据分析知识,在牛客、xhs搜了很多的面经,面试针对项目问了一些机器学习算法的原理,数据处理方案,数仓实时工具,三个面试官轮流问,问的不痛不痒且无手撕。3. 岩山科技4. 安般科技5. 惟翼6. 华申瑞利7. 和鲸科技8. 依图9. B站-笔试10.中电科子公司11.平安租赁 最后入职中电科子公司,细节后续再更新。
投递蔚来等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务