You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab CI/CD:通过dotenv高效传递多环境自定义变量

高效实现GitLab CI/CD多环境自定义变量的dotenv传递

问题背景

需要在GitLab CI/CD中通过dotenv将10个自定义变量传递给后续流水线作业,这些变量在Dev、Test、Prod等8种环境中值各不相同。原方案中每个环境作业都要重复编写echo Var=Var语句,8个环境总共要写80条,冗余度极高,希望找到更高效的实现方式,避免重复代码。

核心优化思路

利用Shell命令批量过滤并转换以CustomVar_为前缀的环境变量,自动生成dotenv文件,替代逐条手动编写echo语句;同时通过GitLab CI的模板作业进一步复用配置,减少重复代码。

批量生成dotenv的Shell命令

通过env命令列出所有环境变量,配合grep过滤前缀,再用sed去掉前缀,直接输出到build.env:

env | grep ^CustomVar_ | sed 's/CustomVar_//' >> build.env

这条命令会自动把所有CustomVar_XXX格式的变量转换为XXX=值的格式写入dotenv文件,无需手动逐个编写echo。

优化后的完整配置示例

1. 环境变量模板文件(单独维护)

.environment:Test:
  variables:
    CustomVar_ServerFQDN: 'TestHost'
    CustomVar_Datacenter: 'TestDatacenter'
    # 补充其余8个CustomVar_开头的变量...

.environment:Dev:
  variables:
    CustomVar_ServerFQDN: 'DevHost'
    CustomVar_Datacenter: 'DevDatacenter'
    # 补充其余8个CustomVar_开头的变量...

# 其余6个环境的变量模板...

2. 通用环境准备作业模板

.environment-prep-template:
  stage: build
  script:
    # 批量生成dotenv文件
    - env | grep ^CustomVar_ | sed 's/CustomVar_//' >> build.env
    - echo "GitLab CI/CD | Print all environment variables"
    - env
  artifacts:
    reports:
      dotenv: build.env

3. 各环境的准备作业(复用模板)

EnvironmentPrep:Dev:
  extends: 
    - .environment-prep-template
    - .environment:Dev
  rules:
    - if: '$Environment == "Dev"'

EnvironmentPrep:Test:
  extends: 
    - .environment-prep-template
    - .environment:Test
  rules:
    - if: '$Environment == "Test"'

# 其余6个环境的准备作业...

4. 主作业配置

MainJob:
  stage: deploy
  script:
    - echo "Main Environment variable is [$Environment] [$ServerFQDN]"
    - echo "GitLab CI/CD | Print all environment variables"
    - env
  dependencies:
    - EnvironmentPrep:$Environment

全局变量配置

variables:
  Environment: 'Test'

说明

  • 所有CustomVar_前缀的变量会被自动转换为无前缀的变量传递给后续作业,比如CustomVar_ServerFQDN会变成ServerFQDN供MainJob使用。
  • 通过.environment-prep-template模板作业,所有环境的准备作业只需复用该模板和对应环境变量模板,无需重复编写脚本逻辑。
  • 主作业通过dependencies关联对应环境的准备作业,确保获取到正确的dotenv变量。

内容的提问来源于stack exchange,提问作者Sam Hall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:40:52