【问题标题】:Fastlane: How to load .env file from parent directory according to --envFastlane:如何根据 --env 从父目录加载 .env 文件
【发布时间】:2021-08-10 14:15:46
【问题描述】:
  1. 我知道 Fastlane 会自动从.env.env.default.env.{environment} 加载变量,其中environmentfastlane 命令中的标志--env 提供。
  2. 在我的Fastfile 中,我需要 fastlane 来加载我的环境文件,这些文件位于父目录中
  3. 我想保持加载.env.{environment} 文件的加载行为,当{environment} 根据我在--env 标志中传递的内容发生变化时。

【问题讨论】:

    标签: ios fastlane


    【解决方案1】:

    我最终在 platform 块内使用了 before_all

      before_all do |lane|
        Dotenv.overload '../../.env'
        environment = lane_context[SharedValues::ENVIRONMENT]
        unless environment.nil?
            puts "Load .env file of #{environment}"
            Dotenv.overload '../../.env.' + environment
        end
      end
    

    并且还在fastlane目录中放置一个空白的.env文件。

    创建一个空的.env 的原因记录在我的空.env 文件中:

    TL;DR:不要删除这个空文件

    这个文件是空白的,让 Fastlane 定义 SharedValue::ENVIRONMENT 变量,这是我们fastlane/Fastfile 配置的一部分。

    正如您在 Fastlane 的cli_tools 中看到的, Fastlane 从ARGV 中删除--env 索引pretty early 所以我们无法知道用户传递给--env参数的内容。

    不幸的是,Fastlane 仅在 fastlane 文件夹中搜索 .env 文件 在它的父文件夹中(在我们的例子中是ios 文件夹)。代表着, 在我们的项目中,fastlane 不会找到任何 .env 文件。 (Source)

    Fastlane 找不到 .env 文件时,不会调用该函数 load_dot_envs_from,负责定义 SharedValue::ENVIRONMENT 变量,我们在 Fastfile 中使用 (Source)

    这个文件是一个 hack,它会让 Fastlane 找到一个空的 .env 文件。 然后它将 SharedValue::ENVIRONMENT 设置为 ARGV 值。 然后我们在 Fastlane 中使用SharedValue::ENVIRONMENT 来加载正确的 从正确的位置文件。

    【讨论】:

      猜你喜欢
      • 2020-06-19
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      • 2021-08-19
      • 2017-06-25
      • 2018-06-05
      • 2021-09-12
      • 2020-01-24
      相关资源
      最近更新 更多