1.我知道Fastlane自动从.env、.env.default和.env.{environment}加载变量,其中environment由fastlane命令中的标志--env提供。1.在我的Fastfile中,我需要fastlane来加载我的环境文件,这些文件位于 * 父目录 * 中。1.当{environment}根据我传入--env标志的内容更改时,我希望保持加载.env.{environment}文件的加载行为。
.env
.env.default
.env.{environment}
environment
fastlane
--env
Fastfile
{environment}
ipakzgxi1#
这一条对我很有效:1.在platform块中使用以下before_all:
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
1.(重要!)将空白.env文件放入fastlane目录。创建空.env的原因记录在我的空.env文件中:
此文件为空,以便Fastlane定义SharedValue::ENVIRONMENT变量,该变量是fastlane/Fastfile配置的一部分。正如您在Fastlane的cli_tools中所看到的,Fastlane很早就从ARGV中删除了--env索引,因此我们无法知道用户传递给--env参数的内容。不幸的是,Fastlane只在fastlane文件夹及其父文件夹(在我们的例子中是ios文件夹)中搜索. env文件,这意味着在我们的项目中,Fastlane找不到任何. env文件。当Fastlane找不到. env文件时,它不会调用函数load_dot_envs_from,该函数负责定义SharedValue::ENVIRONMENT变量,我们在Fastfile(源代码)中使用该变量这个文件是一个黑客,它会让Fastlane找到一个空的.env文件,然后将SharedValue::ENVIRONMENT设置为ARGV值,然后我们在Fastlane中使用SharedValue::ENVIRONMENT从正确的位置加载正确的文件。
SharedValue::ENVIRONMENT
fastlane/Fastfile
cli_tools
ARGV
ios
load_dot_envs_from
1条答案
按热度按时间ipakzgxi1#
这一条对我很有效:
1.在
platform
块中使用以下before_all
:1.(重要!)将空白
.env
文件放入fastlane
目录。创建空
.env
的原因记录在我的空.env
文件中:TL; DR:请勿删除此空文件
此文件为空,以便Fastlane定义
SharedValue::ENVIRONMENT
变量,该变量是fastlane/Fastfile
配置的一部分。正如您在Fastlane的
cli_tools
中所看到的,Fastlane很早就从ARGV
中删除了--env
索引,因此我们无法知道用户传递给--env
参数的内容。不幸的是,Fastlane只在
fastlane
文件夹及其父文件夹(在我们的例子中是ios
文件夹)中搜索. env文件,这意味着在我们的项目中,Fastlane找不到任何. env文件。当Fastlane找不到. env文件时,它不会调用函数
load_dot_envs_from
,该函数负责定义SharedValue::ENVIRONMENT
变量,我们在Fastfile(源代码)中使用该变量这个文件是一个黑客,它会让Fastlane找到一个空的
.env
文件,然后将SharedValue::ENVIRONMENT
设置为ARGV值,然后我们在Fastlane中使用SharedValue::ENVIRONMENT
从正确的位置加载正确的文件。