GitLab CI/CD 变量
CI/CD 变量是一种环境变量。 您可以将它们用于:
- 控制作业和流水线。
- 存储要重复使用的值。
- 避免在您的 .gitlab-ci.yml 文件中硬编码值。
您可以为特定流水线手动覆盖变量值,或让它们在手动流水线中预填入。
变量名称受限于 runner 使用的 shell 来执行脚本。每个 shell 都有自己的一组保留变量名称。
为确保一致的行为,您应该始终将变量值放在单引号或双引号中。 变量由 Psych YAML 解析器进行内部解析,因此引用变量和未引用变量的解析方式可能不同。例如,VAR1: 012345 被解析为八进制值,因此值变为 5349,但 VAR1: “012345” 被解析为值为 012345 的字符串。
预定义 CI/CD 变量
极狐GitLab CI/CD 使一组预定义的 CI/CD 变量可用于流水线配置和作业脚本。这些变量包含有关作业、流水线的信息,以及流水线被触发或运行时您可能需要的其他值。
您可以在 .gitlab-ci.yml 中使用预定义的 CI/CD 变量,而无需先声明它们。
例如:
job1: stage: test script: - echo "The job's stage is '$CI_JOB_STAGE'"
此示例中的脚本输出 The job’s stage is ‘test’。
在 .gitlab-ci.yml 文件中定义 CI/CD 变量
要在 .gitlab-ci.yml 文件中创建自定义变量,请使用 variables 关键字定义变量和值。
保存在 .gitlab-ci.yml 文件中的变量对所有有权访问存储库的用户可见,并且应该只存储非敏感的项目配置。例如,保存在 DATABASE_URL 变量中的数据库的 URL。包含 secret 或密钥等值的敏感变量应该存储在项目设置中。
您可以在作业中或在 .gitlab-ci.yml 文件的顶层使用 variables 关键字。 如果变量在顶层,则它是全局可用的,所有作业都可以使用它。 如果它在作业中定义,则只有该作业可以使用它。
例如:
variables: GLOBAL_VAR: "A global variable" job1: variables: JOB_VAR: "A job variable" script: - echo "Variables are '$GLOBAL_VAR' and '$JOB_VAR'" job2: script: - echo "Variables are '$GLOBAL_VAR' and '$JOB_VAR'"
在此示例中:
- job1 输出 Variables are ‘A global variable’ and ‘A job variable’
- job2 输出 Variables are ‘A global variable’ and ’’
在单个作业中跳过全局变量
如果您不想在作业中使用全局定义的变量,请将 variables 设置为 {}:
variables: GLOBAL_VAR: "A global variable" job1: variables: {} script: - echo This job does not need any variables