Flutter 在 bitbucket 管道中加载 ENV 文件

问题描述 投票:0回答:1

在 bitbucket-pipelines 中加载 ENV 文件不起作用。

const localEnvPath = 'local_variables/.env.local';
const devEnvPath = 'local_variables/.env.dev';
const qaEnvPath = 'local_variables/.env.qa';
const prodEnvPath = 'local_variables/.env.prod';

String? getEnvPath() {
  const envKey = String.fromEnvironment('ENV_KEY');

  switch (envKey) {
    case 'local':
      return localEnvPath;

    case 'dev':
      return devEnvPath;

    case 'qa':
      return qaEnvPath;

    case 'prod':
      return prodEnvPath;

    default:
      return null;
  }
}

我这里有一个方法,通过获取构建时间变量 --dart-define=ENV_KEY=something 返回 env 文件的路径,并根据路径加载 env。像这样

  final envPath = getEnvPath();

  if (envPath == null) {
    throw Exception('Error! Env not found');
  }

  await dotenv.load(fileName: envPath);

但问题出在 bitbucket 管道中,由于 env 文件被 git 忽略,路径中不会有这样的 env,我相信它在尝试加载等待时会中断

dotenv.load(fileName: envPath);
。我该如何解决这个问题?我还尝试添加存储库变量。还是不行啊顺便说一句,我正在使用
flutter_dotenv 
package 来加载环境文件。

flutter environment-variables bitbucket-pipelines flutter-dotenv
1个回答
0
投票

可以在构建过程中复制 .env 文件并将其添加到 Bitbucket 管道中,而无需在 Git 中进行跟踪。

在整个构建过程中,将 include.env 文件作为管道工件。

script:
  - echo $ENV_DEV_CONTENT > local_variables/.env.dev
  - flutter build apk --dart-define=ENV_KEY=dev

在这种情况下,应该使用像

$ENV_DEV_CONTENT
这样的Bitbucket环境变量来保存每个.env文件的内容。

© www.soinside.com 2019 - 2024. All rights reserved.