GitLab CI/CD 变量

来自泡泡学习笔记
BrainBs讨论 | 贡献2023年9月19日 (二) 16:21的版本 (创建页面,内容为“CI/CD 变量是一种环境变量。 您可以将它们用于: * 控制作业和流水线。 * 存储要重复使用的值。 * 避免在您的 .gitlab-ci.yml 文件中硬编码值。 <br> 您可以为特定流水线手动覆盖变量值,或让它们在手动流水线中预填入。 变量名称受限于 runner 使用的 shell 来执行脚本。每个 shell 都有自己的一组保留变量名称。 <br> 为确保一致的行为,您应该始终将…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

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