gitlab–基础–5.4–CICD–variables
1、variables的保留字
1.1、CI
标识该job是在CI环境中执行
1.2、CI_COMMIT_REF_NAME
用于构建项目的分支或tag 的名称
1.3、CI_COMMIT_REF_SLUG
- 先将$CI_COMMIT_REF_NAME的值转换成小写,最大不能超过63个字节,然后把除了0-9和a-z的其他字符转换成-。
- 在URLs和域名名称中使用。
1.4、CI_COMMIT_SHA
commit的版本号
1.5、CI_COMMIT_TAG
- commit的tag名称。
- 只有创建了tags才会出现。
1.6、CI_DEBUG_TRACE
debug tracing开启时才生效
1.7、CI_ENVIRONMENT_NAME
当前作业的部署环境名,当设置了environment:name 时可见
1.8、CI_ENVIRONMENT_SLUG
- 环境名称的简化版本
- 适用于DNS,URLs,Kubernetes labels等
1.9、CI_JOB_ID
GItLab CI内部调用job的一个唯一ID
1.10、CI_JOB_MANUAL
表示job启用的标识
1.11、CI_JOB_NAME
.gitlab-ci.yml中定义的job的名称
1.12、CI_JOB_STAGE
.gitlab-ci.yml中定义的stage的名称
1.13、CI_JOB_TOKEN
用于同GitLab容器仓库验证的token
1.14、CI_REPOSITORY_URL
git仓库地址,用于克隆
1.15、CI_RUNNER_DESCRIPTION
GitLab中存储的Runner描述
1.16、CI_RUNNER_ID
Runner所使用的唯一ID
1.17、CI_RUNNER_TAGS
逗号分割的runner标签列表
1.18、CI_PIPELINE_ID
GitLab CI 在内部使用的当前pipeline的唯一ID
1.19、CI_PIPELINE_TRIGGERED
当作业是使用trigger触发的时为true
1.20、CI_PROJECT_DIR
存放克隆项目的完整路径,作业运行的目录。
1.21、CI_PROJECT_ID
GitLab CI在内部使用的当前项目的唯一ID
1.22、CI_PROJECT_NAME
当前正在构建的项目名称(事实上是项目文件夹名称)
1.23、CI_PROJECT_NAMESPACE
当前正在构建的项目命名空间(用户名或者是组名称)
1.24、CI_PROJECT_PATH
命名空间加项目名称
1.25、CI_PROJECT_PATH_SLUG
- $CI_PROJECT_PATH小写字母、除了0-9和a-z的其他字母都替换成-。
- 用于地址和域名名称。
1.26、CI_PROJECT_URL
项目的访问地址(http形式)
1.27、CI_REGISTRY
如果启用了Container Registry,则返回GitLab的Container Registry的地址
1.28、CI_REGISTRY_IMAGE
如果为项目启用了Container Registry,它将返回与特定项目相关联的注册表的地址
1.29、CI_REGISTRY_PASSWORD
用于push containers到GitLab的Container Registry的密码
1.30、CI_REGISTRY_USER
用于push containers到GItLab的Container Registry的用户名
1.31、CI_SERVER
标记该job是在CI环境中执行
1.32、CI_SERVER_NAME
用于协调job的CI服务器名称
1.33、CI_SERVER_REVISION
用于调度job的GitLab修订版
1.34、CI_SERVER_VERSION
用于调度job的GItLab版本
1.35、ARTIFACT_DOWNLOAD_ATTEMPTS
尝试运行下载artifacts的job的次数
1.36、GET_SOURCES_ATTEMPTS
尝试运行获取源的job次数
1.37、GITLAB_CI
用于指示该job是在GItLab CI环境中运行
1.38、GITLAB_USER_ID
开启该job的用户ID
1.39、GITLAB_USER_EMAIL
开启该job的用户邮箱
1.40、RESTORE_CACHE_ATTEMPTS
尝试运行存储缓存的job的次数
1.41、CI_BUILDS_DIR
构建时的最顶层目录
1.42、CI_COMMIT_AUTHOR
提交的作者,格式为:名称<邮箱>
1.43、CI_COMMIT_BEFORE_SHA
当前分支的上一个提交哈希值
1.44、CI_COMMIT_BRANCH
提交的分支名,在合并流水线和tag流水线时不可见
1.45、CI_COMMIT_DESCRIPTION
提交的描述
1.46、CI_COMMIT_MESSAGE
完整的提交信息
1.47、CI_COMMIT_REF_PROTECTED
如果作业正在构建的是被保护的分支或tag,值为true
1.48、CI_COMMIT_SHORT_SHA
8个字符的提交哈希值
1.49、CI_COMMIT_TIMESTAMP
提交时的时间戳
1.50、CI_COMMIT_TITLE
提交的标题
1.51、CI_DEFAULT_BRANCH
项目的默认分支
1.52、CI_DEPLOY_FREEZE
当流水运行是处于部署冻结阶段时可见,值为true。
1.53、CI_ENVIRONMENT_URL
当前作业的部署环境地址,只有设置了environment:url可见
1.54、CI_JOB_IMAGE
当前作业使用的Docker镜像名
1.55、CI_PIPELINE_SOURCE
流水线触发方式,枚举值为push,web, schedule, api, external, chat, webide, merge_request_event, external_pull_request_event, parent_pipeline, trigger, 或者 pipeline
1.56、CI_PIPELINE_URL
流水线详情的地址
1.57、CI_PIPELINE_CREATED_AT
流水线创建时间
1.58、CI_PROJECT_TITLE
项目名称(网页上显示的)
1.59、GITLAB_USER_LOGIN
开始当前作业的登录用户名
1.60、GITLAB_USER_NAME
开始当前作业的用户名
1.61、CI_MERGE_REQUEST_APPROVED (仅合并流水线)
当合并流水线的MR被通过时值为true
1.62、CI_MERGE_REQUEST_ASSIGNEES (仅合并流水线)
逗号分割的合并请求指派人列表
1.63、CI_MERGE_REQUEST_SOURCE_BRANCH_NAME(仅合并流水线)
合并请求中的源分支名称
1.64、CI_MERGE_REQUEST_TARGET_BRANCH_NAME(仅合并流水线)
合并请求中的目标分支名称
1.65、CI_MERGE_REQUEST_TITLE(仅合并流水线)
合并请求的标题
1.66、CI_PROJECT_PATH
包含项目名称的命名空间
1.67、CI_PROJECT_TITLE
项目名称(网页上显示的)
1.68、CI_PROJECT_URL
项目HTTP(S)地址
1.69、CI_RUNNER_TAGS
逗号分割的runner标签列表
1.70、GITLAB_USER_EMAIL
开始当前作业的用户邮箱
1.71、GITLAB_USER_LOGIN
开始当前作业的登录用户名
1.72、GITLAB_USER_NAME
开始当前作业的用户名
1.73、CI_MERGE_REQUEST_APPROVED (仅合并流水线)
当合并流水线的MR被通过时值为true
1.74、CI_MERGE_REQUEST_ASSIGNEES (仅合并流水线)
逗号分割的合并请求指派人列表
1.75、CI_MERGE_REQUEST_SOURCE_BRANCH_NAME(仅合并流水线)
合并请求中的源分支名称
1.76、CI_MERGE_REQUEST_TARGET_BRANCH_NAME(仅合并流水线)
合并请求中的目标分支名称
1.77、CI_MERGE_REQUEST_TITLE(仅合并流水线)
合并请求的标题
1.78、GIT_CHECKOUT(是否下载git代码)
- 每次运行job 是否下载git代码。
- 默认值:true
1.78.1、案例
只在build-app阶段下载git代码,其他阶段 不下载代码。
# 定义变量
variables:
# GIT_CHECKOUT 全局设置为 false,这样所有阶段都不下载git代码
GIT_CHECKOUT: "false"
stages:
- build-app
- clean-cache
# 拷贝文件到指定目录
build-app:
stage: build-app
variables:
# GIT_CHECKOUT 设置为 true,下载git代码
GIT_CHECKOUT: "true"
script:
# 构建临时目录
- ls
# 清空缓存
clean-cache:
stage: clean-cache
script:
- ls