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

如何在GitLab CI中从.env文件读取并导出环境变量?

GitLab CI中导入.env文件作为环境变量的实现方法

这个需求完全可以实现,你之前的配置存在两处关键错误:

  • variables块中使用include引入.env文件的语法无效,GitLab CI的variables不支持这种用法
  • export .env不是合法的shell命令,export只能用于导出单个变量,无法直接加载整个.env文件

下面提供两种可行的实现方案:

方案一:直接在shell中加载.env文件(适用于当前阶段使用)

通过shell的source(或.)命令加载.env文件,将变量导入当前CI任务的shell会话中,后续的命令(包括docker-compose)会自动继承这些环境变量。

修改后的CI配置示例:

Deploy Production:
  stage: deploy
  image: my_image
  script:
    # 加载仓库pr目录下的.env文件,注意路径要对应仓库中的实际位置
    - source ./pr/.env
    # 验证变量是否生效(可选步骤)
    - echo "a = $a"
    - echo "b = $b"
    # 运行docker-compose,会自动使用已加载的环境变量
    - docker-compose up -d

注意:如果CI使用的是sh而非bash,source命令可能无法生效,此时可以用.命令替代:- . ./pr/.env

方案二:通过dotenv artifacts传递变量(适用于跨阶段使用)

如果需要让这些环境变量在后续的CI阶段中也能使用,可以将.env文件作为dotenv类型的制品上传,GitLab CI会自动解析其中的变量并注入到后续阶段。

配置示例:

Deploy Production:
  stage: deploy
  image: my_image
  script:
    # 将目标.env文件复制为GitLab CI可识别的dotenv文件
    - cp ./pr/.env variables.env
  artifacts:
    reports:
      dotenv: variables.env
    # 设置制品过期时间,避免占用存储空间
    expire_in: 1 hour

后续的CI阶段无需额外配置,即可直接使用$a、$b等变量。

另外补充:docker-compose默认会自动读取运行目录下的.env文件,如果你将pr/.env复制到docker-compose的运行目录,也可以让docker-compose直接读取该文件,无需提前导入环境变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:34:59