文章目录
变量介绍
预定义变量
gitlab cicd预定义了大量的变量,也可以手动新增自定义变量。
其中各种变量涉及了项目信息、操作信息等。
在流水线处理的时候可以使用变量实现更丰富的控制。
项目信息类
变量名 | 描述 | 示例 |
---|---|---|
CI_PROJECT_ID | 当前项目唯一ID | 12345678 |
CI_PROJECT_DIR | 项目下载的目录 | |
CI_PROJECT_NAME | 项目名称 | myapp |
CI_PROJECT_DESCRIPTION | commit的描述 | |
CI_PROJECT_NAMESPACE | 项目的组 | |
CI_PROJECT_NAMESPACE_ID | 项目的组ID | |
CI_PROJECT_TITLE | 项目标题 | My first Project |
CI_PROJECT_PATH | 项目全路径 | mygroup/myapp |
CI_PROJECT_PATH_SLUG | URL友好路径 | my-group-my-project |
CI_PROJECT_URL | 项目Web访问地址 | https://gitlab.linuxsb.com/mygroup/myapp |
CI_PROJECT_VISIBILITY | 项目可见性 | private/internal/public |
版本控制类
变量名 | 描述 | 示例 |
---|---|---|
CI_COMMIT_AUTHOR | commit的作者 | Xianghy |
CI_COMMIT_DESCRIPTION | commit的描述 | |
CI_COMMIT_MESSAGE | commit的信息 | Fix critical bug |
CI_COMMIT_SHA | 当前提交的完整SHA值 | 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p |
CI_COMMIT_SHORT_SHA | 前8位提交SHA(适合短标签) | 1a2b3c4d |
CI_COMMIT_REF_NAME | 构建的分支或标签名称 | main |
CI_COMMIT_BRANCH | commit分支名称(标签触发时为空) | feature/login |
CI_COMMIT_TAG | 打tag标签名称(仅标签触发时存在) | v1.0.0-release |
CI_COMMIT_TAG_MESSAGE | 打tag标签信息 | |
CI_COMMIT_TIMESTAMP | 提交时间戳 | 2023-08-20T12:34:56Z |
CI_COMMIT_TITLE | commit的标题,commit信息的第一行 | |
CI_COMMIT_DEFAULT_BRANCH | 默认分支 |
流水线执行类
变量名 | 描述 | 示例 |
---|---|---|
CI_BUILDS_DIR | 编译的根目录 | |
CI_PIPELINE_ID | 流水线唯一ID | 98765432 |
CI_PIPELINE_IID | 项目内流水线编号 | 123 |
CI_PIPELINE_SOURCE | 流水线触发来源 | push/web/schedule/api |
CI_PIPELINE_URL | 获取URL详情的URL | |
CI_PIPELINE_TRIGGERED | 是否由触发词启动 | true/false |
CI_PIPELINE_CREATED_AT | 流水线创建时间 | 2023-08-20T12:34:56Z |
runner环境类
变量名 | 描述 | 示例 |
---|---|---|
CI_RUNNER_ID | 执行Runner的ID | 10 |
CI_RUNNER_DESCRIPTION | Runner描述 | my-shared-runner |
CI_RUNNER_TAGS | Runner标签列表(逗号分隔) | study_runner |
CI_RUNNER_VERSION | GitLab Runner版本 | 16.8.1 |
CI_SERVER_HOST | GitLab服务器域名 | gitlab.linuxsb.com |
CI_SERVER_PORT | GitLab服务器端口 | 443 |
CI_SERVER_PROTOCOL | 使用协议 | https |
CI_SERVER_URL | GitLab实例地址 | https://gitlab.linuxsb.com |
作业执行类
变量名 | 描述 | 示例 |
---|---|---|
CI_JOB_ID | 作业唯一ID | 345678 |
CI_JOB_NAME | 作业名称 | build |
CI_JOB_STAGE | 所属阶段 | test |
CI_JOB_STATUS | 作业状态 | success/failed |
CI_JOB_MANUAL | 是否手动触发 | true/false |
CI_JOB_TOKEN | 作业临时令牌 | xxxxxxxx |
CI_JOB_TIMEOUT | 作业的超时 | |
CI_JOB_STARTED_AT | 作业开始时间 | 2023-08-20T12:34:56Z |
容器注册类
变量名 | 描述 | 示例 |
---|---|---|
CI_REGISTRY | 容器注册中心地址 | registry.linuxsb.com |
CI_REGISTRY_IMAGE | 项目容器镜像地址 | registry.linuxsb.com/mygroup/myapp |
CI_REGISTRY_USER | 注册用户名 | gitlab-ci-token |
CI_REGISTRY_PASSWORD | 注册临时密码 | [动态生成] |
CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX | 依赖代理前缀 linuxsb.com:443/my-group/dependency_proxy/containers |
其他类别
变量名 | 描述 | 示例 |
---|---|---|
CI_DEBUG_TRACE | 开启详细调试日志 | true |
CI_DISPOSABLE_ENVIRONMENT | 是否为临时环境 | true |
CI_OPEN_MERGE_REQUESTS | 关联的合并请求 | 123,456 |
CI_KUBERNETES_ACTIVE | 是否在K8s环境运行 | true |
自定义变量
gitlab cicd中的自定义变量,可以直接在 .gitlab-ci.yml 文件中通过 variables 关键字定义。也可以在图形界面进行创建。
在 .gitlab-ci.yml 配置文件中,定义 variables 关键字有两种作用范围,一种的全局变量,一种的局部变量。
全局变量表示对 .gitlab-ci.yml 文件有效,即表示对文件内的所有作业 job 有效。
局部变量就是在特定 job 中定义,仅对当前 job 有效。
变量使用
预定义变量使用
创建流水线
创建一个简单的流水作业,输出相关变量。
shell
[root@gitclient myapp]# git rm .gitlab-ci.yml
[root@gitclient myapp]# vim .gitlab-ci.yml
stages:
- compile
compile:
stage: compile
script:
- echo ${CI_COMMIT_BRANCH}
- echo ${CI_PIPELINE_SOURCE}
- echo ${CI_PROJECT_NAME}
tags:
- study-runner
提交流水作业
shell
[root@gitclient myapp]# git add .gitlab-ci.yml
[root@gitclient myapp]# git commit -m "Test env"
[root@gitclient myapp]# git push origin main
查看作业执行情况,如下所示,能正常输出变量。
自定义变量使用
创建流水线
在compile 和 build 两个 job 中,都打印了 IP 和 PORT 变量。
且一个是全局变量,一个是局部变量,观察打印的结果是否符合预期。
shell
[root@gitclient myapp]# git rm .gitlab-ci.yml
[root@gitclient myapp]# vim .gitlab-ci.yml
stages:
- compile
- build
variables:
IP: "172.24.8.180"
compile:
variables:
PORT: 22
stage: compile
script:
- echo ${IP}:${PORT}
- echo ${CI_COMMIT_BRANCH}
- echo ${CI_PIPELINE_SOURCE}
- echo ${CI_PROJECT_NAME}
tags:
- study-runner
build:
stage: build
script:
- echo ${IP}
- echo ${PORT}
tags:
- study-runner
提交流水作业
shell
[root@gitclient myapp]# git add .gitlab-ci.yml
[root@gitclient myapp]# git commit -m "Test global variable and local variable"
[root@gitclient myapp]# git push origin main
查看作业情况:

如上所示,对于 compile 都能正常打印,对于 build ,在 compile 里定义的局部变量是无法打印出来的。
图形UI创建变量
UI自定义变量
对于一些敏感数据,如用户名、密码等,建议在图形界面创建自定义变量。

进入 myapp 项目 ------> 设置 ------> CI/CD ------> 变量。
添加用户名的变量:
变量名: USERNAME
变量值: Xianghy

添加用户密码的变量:
变量名: PASSWORD
变量值: Xiangpassword123
且设置为隐藏。

创建流水线
创建一个引用用户名和密码的流水线,测试图形界面创建的自定义变量。
shell
[root@gitclient myapp]# vim .gitlab-ci.yml
stages:
- compile
variables:
IP: "172.24.8.180"
compile:
variables:
PORT: 22
stage: compile
script:
- echo ${IP}:${PORT}
- echo ${CI_COMMIT_BRANCH}
- echo ${USERNAME}
- echo ${PASSWORD}
tags:
- study-runner
提交流水作业
shell
[root@gitclient myapp]# git add .gitlab-ci.yml
[root@gitclient myapp]# git commit -m "Test webui variable"
[root@gitclient myapp]# git push origin main
查看作业情况:
如上所示,对于敏感数据,作业中会隐藏显示。