极狐 GitLab

预定义 CI/CD 变量参考

Tier: 基础版,专业版,旗舰版

Offering: JihuLab.com,私有化部署

在每个极狐GitLab CI/CD 流水线中都可以使用预定义 CI/CD 变量

应避免覆盖预定义变量, 因为这可能导致流水线行为异常。

变量可用性#

预定义变量在流水线执行的三个不同阶段可用:

  • 预流水线:预流水线变量在流水线创建之前就可使用。 这些变量是唯一可与 include:rules 一起使用, 以控制在创建流水线时使用哪些配置文件的变量。
  • 流水线:当极狐GitLab 创建流水线时,流水线变量变为可用。 与预流水线变量一起,流水线变量可用于配置 作业中定义的 rules,以确定将哪些作业添加到流水线。
  • 仅作业:这些变量仅在运行器 (runner) 接手并运行作业时对每个作业可用,并且:

预定义变量#

变量可用性描述
CHAT_CHANNEL流水线触发 ChatOps 命令的源聊天频道。
CHAT_INPUT流水线ChatOps 命令传递的额外参数。
CHAT_USER_ID流水线触发 ChatOps 命令的用户的聊天服务用户 ID。
CI预流水线对 CI/CD 中执行的所有作业可用。可用时为 true
CI_API_V4_URL预流水线极狐GitLab API v4 根 URL。
CI_API_GRAPHQL_URL预流水线极狐GitLab API GraphQL 根 URL。在极狐GitLab 15.11 引入。
CI_BUILD_NETWORK_NAME仅作业作业创建的网络的名称。仅在 Docker 执行器且启用 FF_NETWORK_PER_BUILD 时可用。
CI_BUILDS_DIR仅作业执行构建的顶级目录。
CI_COMMIT_AUTHOR预流水线提交的作者,格式为 Name <email>
CI_COMMIT_BEFORE_SHA预流水线分支或标签上存在的前一个最新提交。对于合并请求流水线、计划流水线、分支或标签流水线中的首次提交,或手动运行流水线时,始终为 0000000000000000000000000000000000000000
CI_COMMIT_BRANCH预流水线提交分支名称。在分支流水线中可用,包括默认分支的流水线。在合并请求流水线或标签流水线中不可用。
CI_COMMIT_DESCRIPTION预流水线提交的描述。如果标题短于 100 个字符,则为除第一行外的消息。
CI_COMMIT_MESSAGE预流水线完整的提交消息。
CI_COMMIT_MESSAGE_IS_TRUNCATED预流水线如果 CI_COMMIT_MESSAGE 因提交消息过长而被截断为系统环境变量 GITLAB_CI_MAX_COMMIT_MESSAGE_SIZE_IN_BYTES(默认 100 KB)指定的大小,则为 true,否则为 false。在极狐GitLab 18.6 引入。
CI_COMMIT_REF_NAME预流水线正在构建项目的分支或标签名称。
CI_COMMIT_REF_PROTECTED预流水线如果作业正在为受保护的引用运行,则为 true,否则为 false
CI_COMMIT_REF_SLUG预流水线CI_COMMIT_REF_NAME 的小写形式,缩短至 63 字节,并将除 0-9a-z 以外的所有字符替换为 -。无前导/尾随 -。用于 URL、主机名和域名。
CI_COMMIT_SHA预流水线为其构建项目的提交修订版。
CI_COMMIT_SHORT_SHA预流水线CI_COMMIT_SHA 的前八个字符。
CI_COMMIT_TAG预流水线提交标签名称。仅在标签流水线中可用。
CI_COMMIT_TAG_MESSAGE预流水线提交标签消息。仅在标签流水线中可用。在极狐GitLab 15.5 引入。
CI_COMMIT_TIMESTAMP预流水线提交的时间戳,采用 ISO 8601 格式。例如 2022-01-31T16:47:55Z默认为 UTC
CI_COMMIT_TITLE预流水线提交的标题。完整的消息第一行。
CI_COMMIT_USER_LOGIN预流水线提交作者的极狐GitLab 用户名,前提是作者的个人资料和电子邮件是公开的并且与提交电子邮件匹配,否则为空字符串。在极狐GitLab 18.10 引入。
CI_CONCURRENT_ID仅作业单个执行器中构建执行的唯一 ID。
CI_CONCURRENT_PROJECT_ID仅作业单个执行器和项目中的构建执行的唯一 ID。
CI_CONFIG_PATH预流水线CI/CD 配置文件的路径。默认为 .gitlab-ci.yml
CI_CONFIG_REF_URI流水线顶层流水线定义的完全限定引用路径,例如 gitlab.example.com/my-group/my-project//.gitlab-ci.yml@refs/heads/main。当无法确定流水线源引用时不可用。在极狐GitLab 19.0 引入
CI_DEBUG_TRACE流水线如果启用了调试日志(追踪),则为 true
CI_DEBUG_SERVICES流水线如果启用了服务容器日志记录,则为 true。在极狐GitLab 15.7 引入。需要 GitLab Runner 15.7。
CI_DEFAULT_BRANCH预流水线项目默认分支的名称。
CI_DEFAULT_BRANCH_SLUG预流水线CI_DEFAULT_BRANCH 的小写形式,缩短至 63 字节,并将除 0-9a-z 以外的所有字符替换为 -。无前导/尾随 -。用于 URL、主机名和域名。
CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX预流水线用于通过依赖代理拉取镜像的直接群组镜像前缀。
CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX预流水线用于通过依赖代理拉取镜像的顶级群组镜像前缀。
CI_DEPENDENCY_PROXY_PASSWORD流水线用于通过依赖代理拉取镜像的密码。
CI_DEPENDENCY_PROXY_SERVER预流水线用于登录依赖代理的服务器。此变量等同于 $CI_SERVER_HOST:$CI_SERVER_PORT
CI_DEPENDENCY_PROXY_USER流水线用于通过依赖代理拉取镜像的用户名。
CI_DEPLOY_FREEZE预流水线仅在流水线在部署冻结窗口期间运行时可用。可用时为 true
CI_DEPLOY_PASSWORD仅作业项目的极狐GitLab 部署令牌的认证密码(如果项目有的话)。
CI_DEPLOY_USER仅作业项目的极狐GitLab 部署令牌的认证用户名(如果项目有的话)。
CI_DISPOSABLE_ENVIRONMENT流水线仅在作业在一次性环境中执行时可用(一种仅为此作业创建并在执行后被弃置/销毁的环境——除 shellssh 之外的所有执行器)。可用时为 true
CI_ENVIRONMENT_ID流水线此作业环境的 ID。仅在设置了 environment:name 时可用。
CI_ENVIRONMENT_NAME流水线此作业环境的名称。仅在设置了 environment:name 时可用。
CI_ENVIRONMENT_SLUG流水线环境名称的简化版本,适合用于 DNS、URL、Kubernetes 标签等。仅在设置了 environment:name 时可用。Slug 被截断为 24 个字符。对于大写的环境名称,会自动添加随机后缀。
CI_ENVIRONMENT_URL流水线此作业环境的 URL。仅在设置了 environment:url 时可用。
CI_ENVIRONMENT_ACTION流水线为此作业环境指定的操作注解。仅在设置了 environment:action 时可用。可以是 startpreparestop
CI_ENVIRONMENT_TIER流水线此作业环境的部署层级
CI_GITLAB_FIPS_MODE预流水线仅在极狐GitLab 实例中启用了 FIPS 模式时可用。可用时为 true
CI_HAS_OPEN_REQUIREMENTS流水线仅在流水线的项目有一个开放的需求时可用。可用时为 true
CI_JOB_GROUP_NAME流水线当使用 parallel手动分组作业时,一组作业的共享名称。例如,如果作业名称是 rspec:test: [ruby, ubuntu],则 CI_JOB_GROUP_NAMErspec:test。否则与 CI_JOB_NAME 相同。在极狐GitLab 17.10 引入。
CI_JOB_ID仅作业作业的内部 ID,在极狐GitLab 实例中跨所有作业唯一。
CI_JOB_IMAGE仅作业运行作业的 Docker 镜像的名称。仅在作业明确指定 Docker 镜像时可用。
CI_JOB_MANUAL流水线仅在作业是手动启动时可用。可用时为 true
CI_JOB_NAME流水线作业的名称。
CI_JOB_NAME_SLUG流水线CI_JOB_NAME 的小写形式,缩短至 63 字节,并将除 0-9a-z 以外的所有字符替换为 -。无前导/尾随 -。用于路径。在极狐GitLab 15.4 引入。
CI_JOB_STAGE流水线作业阶段的名称。
CI_JOB_STATUS仅作业每个运行器阶段执行时作业的状态。与 after_script 结合使用。可以是 successfailedcanceled
CI_JOB_TIMEOUT仅作业作业超时时间,以秒为单位。在极狐GitLab 15.7 引入。需要 GitLab Runner 15.7。
CI_JOB_TOKEN仅作业用于对某些 API 端点进行身份验证的令牌。令牌在作业运行期间有效。
CI_JOB_URL仅作业作业详情 URL。
CI_JOB_STARTED_AT仅作业作业开始的日期和时间,采用 ISO 8601 格式。例如 2022-01-31T16:47:55Z默认为 UTC
CI_JOB_STARTED_AT_SLUG仅作业CI_JOB_STARTED_AT 的小写形式,缩短至 63 字节,并将除 0-9a-z 以外的所有字符替换为 -。无前导/尾随 -。适用于 Docker 镜像标签和其他标识符。在极狐GitLab 18.7 引入。
CI_KUBERNETES_ACTIVE预流水线仅在流水线有可用于部署的 Kubernetes 集群时可用。可用时为 true
CI_NODE_INDEX流水线作业在作业集合中的索引。仅在作业使用 parallel 时可用。
CI_NODE_TOTAL流水线此作业并行运行的实例总数。如果作业未使用 parallel,则设置为 1
CI_OPEN_MERGE_REQUESTS预流水线以逗号分隔的列表,最多包含四个使用当前分支和项目作为合并请求源的合并请求。仅当分支有关联的合并请求时,在分支和合并请求流水线中可用。例如 gitlab-org/gitlab!333,gitlab-org/gitlab-foss!11
CI_PAGES_DOMAIN预流水线承载极狐GitLab Pages 的实例域,不包括命名空间子域。要使用完整主机名,请改用 CI_PAGES_HOSTNAME
CI_PAGES_HOSTNAME仅作业Pages 部署的完整主机名。
CI_PAGES_URL仅作业极狐GitLab Pages 站点的 URL。始终是 CI_PAGES_DOMAIN 的子域。在极狐GitLab 17.9 及更高版本中,当指定了 path_prefix 时,该值包含 path_prefix
CI_PIPELINE_ID仅作业当前流水线的实例级 ID。此 ID 在极狐GitLab 实例上的所有项目中唯一。
CI_PIPELINE_IID流水线当前流水线的项目级 IID(内部 ID)。此 ID 仅在当前项目中唯一。
CI_PIPELINE_SOURCE预流水线流水线的触发方式。该值可以是流水线源之一。
CI_PIPELINE_TRIGGERED流水线对于使用触发器令牌触发的流水线,为 true。对于使用 trigger 关键字触发的流水线,请改用 CI_PIPELINE_SOURCE
CI_PIPELINE_URL仅作业流水线详情 URL。
CI_PIPELINE_CREATED_AT仅作业流水线创建的日期和时间,采用 ISO 8601 格式。例如 2022-01-31T16:47:55Z默认为 UTC
CI_PIPELINE_NAME预流水线workflow:name 中定义的流水线名称。在极狐GitLab 16.3 引入。
CI_PIPELINE_SCHEDULE_DESCRIPTION预流水线流水线计划的描述。仅在计划流水线中可用。在极狐GitLab 17.8 引入。
CI_PROJECT_DIR仅作业仓库被克隆到的完整路径,以及作业运行的位置。如果设置了 GitLab Runner builds_dir 参数,则此变量相对于 builds_dir 的值进行设置。有关更多信息,请参阅高级 GitLab Runner 配置
CI_PROJECT_ID预流水线当前项目的 ID。此 ID 在极狐GitLab 实例上的所有项目中唯一。
CI_PROJECT_NAME预流水线项目的目录名称。例如,如果项目 URL 为 gitlab.example.com/group-name/project-1,则 CI_PROJECT_NAMEproject-1
CI_PROJECT_NAMESPACE预流水线作业的项目命名空间(用户名或群组名)。
CI_PROJECT_NAMESPACE_ID预流水线作业的项目命名空间 ID。在极狐GitLab 15.7 引入。
CI_PROJECT_NAMESPACE_SLUG预流水线$CI_PROJECT_NAMESPACE 的小写形式,将不是 a-z0-9 的字符替换为 -,并缩短至 63 字节。
CI_PROJECT_PATH_SLUG预流水线$CI_PROJECT_PATH 的小写形式,将不是 a-z0-9 的字符替换为 -,并缩短至 63 字节。用于 URL 和域名。
CI_PROJECT_PATH预流水线包含项目名称的项目命名空间。
CI_PROJECT_REPOSITORY_LANGUAGES预流水线仓库中使用的语言的逗号分隔小写列表。例如 ruby,javascript,html,css。语言的最大数量限制为 5。有一个提议增加此限制的议题。
CI_PROJECT_ROOT_NAMESPACE预流水线作业的根项目命名空间(用户名或群组名)。例如,如果 CI_PROJECT_NAMESPACEroot-group/child-group/grandchild-group,则 CI_PROJECT_ROOT_NAMESPACEroot-group
CI_PROJECT_TITLE预流水线在极狐GitLab 网页界面中显示的人类可读的项目名称。
CI_PROJECT_DESCRIPTION预流水线在极狐GitLab 网页界面中显示的项目描述。在极狐GitLab 15.1 引入。
CI_PROJECT_TOPICS预流水线分配给项目的主题的逗号分隔小写列表(限制为首个 20 个)。在极狐GitLab 18.3 引入。
CI_PROJECT_URL预流水线项目的 HTTP(S) 地址。
CI_PROJECT_VISIBILITY预流水线项目可见性。可以是 internalprivatepublic
CI_PROJECT_CLASSIFICATION_LABEL预流水线项目的外部授权分类标签
CI_REGISTRY预流水线容器镜像仓库服务器的地址,格式为 <host>[:<port>]。例如:registry.gitlab.example.com。仅在为极狐GitLab 实例启用了容器镜像仓库时可用。
CI_REGISTRY_IMAGE预流水线用于推送、拉取或标记项目镜像的容器镜像仓库的基本地址,格式为 <host>[:<port>]/<project_full_path>。例如:registry.gitlab.example.com/my_group/my_project。镜像名称必须遵循容器镜像仓库命名约定。仅在为项目启用了容器镜像仓库时可用。
CI_REGISTRY_PASSWORD仅作业将容器推送到极狐GitLab 项目的容器镜像仓库的密码。仅在为项目启用了容器镜像仓库时可用。此密码值与 CI_JOB_TOKEN 相同,并且仅在作业运行期间有效。使用 CI_DEPLOY_PASSWORD 以长期访问镜像仓库。
CI_REGISTRY_USER仅作业将容器推送到项目的极狐GitLab 容器镜像仓库的用户名。仅在为项目启用了容器镜像仓库时可用。
CI_RELEASE_DESCRIPTION流水线发布的描述。仅在标签流水线中可用。描述长度限制为首 1024 个字符。在极狐GitLab 15.5 引入。
CI_REPOSITORY_URL仅作业通过 CI/CD 作业令牌克隆仓库的 Git 克隆(HTTP)完整路径,格式为 https://gitlab-ci-token:$CI_JOB_TOKEN@gitlab.example.com/my-group/my-project.git
CI_RUNNER_DESCRIPTION仅作业运行器的描述。
CI_RUNNER_EXECUTABLE_ARCH仅作业GitLab Runner 可执行文件的操作系统/架构。可能与执行器的环境不同。
CI_RUNNER_ID仅作业所用运行器的唯一 ID。
CI_RUNNER_REVISION仅作业运行该作业的运行器的修订版本。
CI_RUNNER_SHORT_TOKEN仅作业运行器的唯一 ID,用于认证新的作业请求。令牌包含一个前缀,并使用前 17 个字符。
CI_RUNNER_TAGS仅作业运行器标签的 JSON 数组。例如 ["tag_1", "tag_2"]
CI_RUNNER_VERSION仅作业运行该作业的 GitLab Runner 的版本。
CI_SERVER_FQDN预流水线实例的完全限定域名(FQDN)。例如 gitlab.example.com:8080。在极狐GitLab 16.10 引入。
CI_SERVER_HOST预流水线极狐GitLab 实例 URL 的主机,不带协议或端口。例如 gitlab.example.com
CI_SERVER_NAME预流水线协调作业的 CI/CD 服务器的名称。
CI_SERVER_PORT预流水线极狐GitLab 实例 URL 的端口,不带主机或协议。例如 8080
CI_SERVER_PROTOCOL预流水线极狐GitLab 实例 URL 的协议,不带主机或端口。例如 https
CI_SERVER_SHELL_SSH_HOST预流水线极狐GitLab 实例的 SSH 主机,用于通过 SSH 访问 Git 仓库。例如 gitlab.com。在极狐GitLab 15.11 引入。
CI_SERVER_SHELL_SSH_PORT预流水线极狐GitLab 实例的 SSH 端口,用于通过 SSH 访问 Git 仓库。例如 22。在极狐GitLab 15.11 引入。
CI_SERVER_REVISION预流水线调度作业的极狐GitLab 修订版。
CI_SERVER_TLS_CA_FILE流水线当在运行器设置中设置了 tls-ca-file 时,包含用于验证极狐GitLab 服务器的 TLS CA 证书的文件。
CI_SERVER_TLS_CERT_FILE流水线当在运行器设置中设置了 tls-cert-file 时,包含用于验证极狐GitLab 服务器的 TLS 证书的文件。
CI_SERVER_TLS_KEY_FILE流水线当在运行器设置中设置了 tls-key-file 时,包含用于验证极狐GitLab 服务器的 TLS 密钥的文件。

合并请求流水线的预定义变量#

这些变量在极狐GitLab 创建流水线之前(预流水线阶段)可用。这些变量可用于 include:rules,并作为作业中的环境变量。

流水线必须是合并请求流水线,并且合并请求必须处于打开状态。

变量可用性描述
CI_MERGE_REQUEST_APPROVED预流水线合并请求的审批状态。当合并请求审批 可用且合并请求已获批准时,为 true
CI_MERGE_REQUEST_ASSIGNEES预流水线合并请求的指派人用户名列表,以逗号分隔。仅当合并请求至少有一个指派人时可用。
CI_MERGE_REQUEST_DIFF_BASE_SHA预流水线合并请求差异的基准 SHA。
CI_MERGE_REQUEST_DIFF_ID预流水线合并请求差异的版本。
CI_MERGE_REQUEST_EVENT_TYPE预流水线合并请求的事件类型。可以是 detachedmerged_resultmerge_train
CI_MERGE_REQUEST_DESCRIPTION预流水线合并请求的描述。如果描述超过 2700 个字符,则变量中仅存储前 2700 个字符。在 极狐GitLab 16.7 中引入。
CI_MERGE_REQUEST_DESCRIPTION_IS_TRUNCATED预流水线如果 CI_MERGE_REQUEST_DESCRIPTION 因为合并请求描述过长而被截断为 2700 个字符,则为 true,否则为 false。在 极狐GitLab 16.8 中引入。
CI_MERGE_REQUEST_ID预流水线合并请求的实例级 ID。此 ID 在 极狐GitLab 实例的所有项目中是唯一的。
CI_MERGE_REQUEST_IID预流水线合并请求的项目级 IID(内部 ID)。此 ID 在当前项目中是唯一的,并用于合并请求的 URL、页面标题和其他可见位置。
CI_MERGE_REQUEST_LABELS预流水线合并请求的标签名称列表,以逗号分隔。仅当合并请求至少有一个标签时可用。
CI_MERGE_REQUEST_MILESTONE预流水线合并请求的里程碑标题。仅当合并请求设置了里程碑时可用。
CI_MERGE_REQUEST_PROJECT_ID预流水线合并请求所属项目的 ID。
CI_MERGE_REQUEST_PROJECT_PATH预流水线合并请求所属项目的路径。例如 namespace/awesome-project
CI_MERGE_REQUEST_PROJECT_URL预流水线合并请求所属项目的 URL。例如,http://192.168.10.15:3000/namespace/awesome-project
CI_MERGE_REQUEST_REF_PATH预流水线合并请求的引用路径。例如,refs/merge-requests/1/head
CI_MERGE_REQUEST_SOURCE_BRANCH_NAME预流水线合并请求的源分支名称。
CI_MERGE_REQUEST_SOURCE_BRANCH_PROTECTED预流水线当合并请求的源分支是受保护分支时,为 true。在 极狐GitLab 16.4 中引入。
CI_MERGE_REQUEST_SOURCE_BRANCH_SHA预流水线合并请求源分支的 HEAD SHA。在合并请求流水线中,该变量为空。仅在合并结果流水线中,该 SHA 存在。
CI_MERGE_REQUEST_SOURCE_PROJECT_ID预流水线合并请求来源项目的 ID。
CI_MERGE_REQUEST_SOURCE_PROJECT_PATH预流水线合并请求来源项目的路径。
CI_MERGE_REQUEST_SOURCE_PROJECT_URL预流水线合并请求来源项目的 URL。
CI_MERGE_REQUEST_SQUASH_ON_MERGE预流水线当设置了合并时压缩 选项时,为 true。在 极狐GitLab 16.4 中引入。
CI_MERGE_REQUEST_TARGET_BRANCH_NAME预流水线合并请求的目标分支名称。
CI_MERGE_REQUEST_TARGET_BRANCH_PROTECTED预流水线当合并请求的目标分支是受保护分支时,为 true。在 极狐GitLab 15.2 中引入。
CI_MERGE_REQUEST_TARGET_BRANCH_SHA预流水线合并请求目标分支的 HEAD SHA。在合并请求流水线中,该变量为空。仅在合并结果流水线中,该 SHA 存在。
CI_MERGE_REQUEST_TITLE预流水线合并请求的标题。
CI_MERGE_REQUEST_DRAFT预流水线如果合并请求是草稿,则为 true。在 极狐GitLab 17.10 中引入。

外部拉取请求流水线的预定义变量#

这些变量仅在以下情况下可用:

变量可用性描述
CI_EXTERNAL_PULL_REQUEST_IID预流水线来自 GitHub 的拉取请求 ID。
CI_EXTERNAL_PULL_REQUEST_SOURCE_REPOSITORY预流水线拉取请求的源仓库名称。
CI_EXTERNAL_PULL_REQUEST_TARGET_REPOSITORY预流水线拉取请求的目标仓库名称。
CI_EXTERNAL_PULL_REQUEST_SOURCE_BRANCH_NAME预流水线拉取请求的源分支名称。
CI_EXTERNAL_PULL_REQUEST_SOURCE_BRANCH_SHA预流水线拉取请求源分支的 HEAD SHA。
CI_EXTERNAL_PULL_REQUEST_TARGET_BRANCH_NAME预流水线拉取请求的目标分支名称。
CI_EXTERNAL_PULL_REQUEST_TARGET_BRANCH_SHA预流水线拉取请求目标分支的 HEAD SHA。

部署变量#

负责部署配置的集成可以定义它们自己的预定义变量,这些变量在构建环境中设置。这些变量仅在部署作业 中定义。

例如,Kubernetes 集成 定义了可与此集成一起使用的部署变量。

每个集成的文档 会说明该集成是否提供任何部署变量。

Auto DevOps 变量#

当启用了 Auto DevOps 时,会提供一些额外的预流水线 变量:

集成变量#

某些集成会在作业中提供变量。这些变量作为仅作业预定义变量 提供:

  • Harbor
    • HARBOR_URL
    • HARBOR_HOST
    • HARBOR_OCI
    • HARBOR_PROJECT
    • HARBOR_USERNAME
    • HARBOR_PASSWORD
  • Apple App Store Connect
    • APP_STORE_CONNECT_API_KEY_ISSUER_ID
    • APP_STORE_CONNECT_API_KEY_KEY_ID
    • APP_STORE_CONNECT_API_KEY_KEY
    • APP_STORE_CONNECT_API_KEY_IS_KEY_CONTENT_BASE64
  • Google Play
    • SUPPLY_PACKAGE_NAME
    • SUPPLY_JSON_KEY_DATA
  • Diffblue Cover
    • DIFFBLUE_LICENSE_KEY
    • DIFFBLUE_ACCESS_TOKEN_NAME
    • DIFFBLUE_ACCESS_TOKEN

故障排除#

你可以使用 script 命令输出作业可用的所有变量的值