Skip to content
On this page

内置环境变量和项目自定义环境变量

GitLab CI中有一些内置的环境变量简单说几个如下:

  • CI_PROJECT_NAME(当前正在构建的项目名称)
  • CI_COMMIT_TAG (commit 的 tag 名称,任务对应的 tag)
  • CI_COMMIT_REF_NAME(用于构建项目的分支或Git tag名称)
  • CI_REPOSITORY_URL (Git 仓库地址)
  • GITLAB_USER_EMAIL (触发CI的用户邮箱)

你也可以使用 export 关键字打印出所有的变量,需要注意的是,该关键字也会打印出任务中定义的所有私有变量

yml
job:
    script:
        - export

内置变量打印的例子如下:

js
export CI_JOB_ID = '50'
export CI_COMMIT_SHA = 'XXXX'
export CI_COMMIT_SHORT_SHA = 'XXX'
export CI_COMMIT_REF_NAME = 'master'
export CI_REPOSITORY_URL = 'XXXX'
export CI_COMMIT_TAG = '1.0.0'
export CI_JOB_NAME = 'XXX'
export CI_JOB_STAGE = 'XX'
export CI_JOB_MANUAL = 'XX'
export CI_JOB_TRIGGERED = 'XX'
export CI_JOB_TOKEN = 'XXX'
export CI_PIPELINE_ID = 'XX'
export CI_PIPELINE_IID = 'XX'
export CI_PAGES_DOMAIN = 'XX'
export CI_PAGES_URL = 'XX'
export CI_PROJECT_ID = 'XX'
export CI_PROJECT_DIR = 'XX'
export CI_PROJECT_NAME = 'XX'
export CI_PROJECT_TITLE = 'XX'
export CI_PROJECT_NAMESPACE = 'XX'
export CI_PROJECT_PATH = 'XX'
export CI_PROJECT_URL = 'XX'
export CI_REGISTRY = 'XX'
export CI_REGISTRY_IMAGE = 'XX'
export CI_REGISTRY_USER = 'XX'
export CI_REGISTRY_PASSWORD = 'XX'
export CI_RUNNER_ID = 'XX'
export CI_RUNNER_DESCRIPTION = 'XX'
export CI_RUNNER_TAGS = 'docker, linux'
export CI_SERVER = 'yes'
export CI_SERVER_URL = 'https://example.com'
export CI_SERVER_HOST = 'example.com'
export CI_SERVER_PORT = '443'
export CI_SERVER_PROTOCOL = 'https'
export CI_SERVER_NAME = 'GitLab'
export CI_SERVER_REVISION = '70606bf'
export CI_SERVER_VERSION = '8.9.0'
export CI_SERVER_VERSION_MAJOR = '8'
export CI_SERVER_VERSION_MINOR = '9'
export CI_SERVER_VERSION_PATCH = '0'
export GITLAB_USER_EMAIL = 'CC'
export GITLAB_USER_ID = '42'

除了使用内置环境变量、使用variables关键字定义的变量外,还可以再当前项目创建变量如下:

创建后也可以直接使用如下:

yml
variables:
  FILE_NAME: dist.zip

stages:
  - build

build:
  stage: build
  script:
    - echo ${FILE_NAME} # variables 定义的变量
    - echo ${CI_PROJECT_NAME} # 内置变量
    - echo ${TEST_KEY} # 在项目下面自定义的变量
  tags:
    - runner

还可以再GitLab一个目录分组下创建该目录下的公共环境变量公共环境变量可以再当前分组下面的项目都可以直接使用,用法跟再项目下面自定义变量一样。

Released under the MIT License.