使用flutter actions部署flutter web时如何使用main.dart中env文件的密钥?

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

我用

github actions
部署了flutter网页。

我在

.github/workflows/workflow.yml
中创建了workflow.yml。

name: gh-pages

on:
  push:
    branches: [main]
jobs:
  build:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v2
      - uses: subosito/flutter-action@v1
      - uses: bluefireteam/flutter-gh-pages@v7
        with:
          baseHref: /onldocc_admin/

但问题是它是基于github仓库部署网站的。

我不能忽略 .env 文件。如果是这样,部署失败。

所以我找到了很多来源,人们都说使用

secret actions

  • Github > 设置 > 秘密和变量 > 操作 我设置
    Repository Secrets
    如下。

大多数人都会详细说明如何在工作流程中使用此键,如下所示。

name: gh-pages

on:
  push:
    branches: [main]
jobs:
  build:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v2
      - uses: subosito/flutter-action@v1
      - uses: bluefireteam/flutter-gh-pages@v7
        with:
          baseHref: /onldocc_admin/
      - name: Create.env
        shell: bash
        env:
          SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
          SUPABASE_ANONKEY: ${{ secrets.SUPABASE_ANONKEY }}
        run: |
          touch .env
          echo SUPABASE_URL=${{ secrets.SUPABASE_URL }} > .env
          echo SUPABASE_ANONKEY=${{ secrets.SUPABASE_ANONKEY }} > .env
          cat .env

但我的问题是我必须在 flutter 项目中的

main.dart
中使用这些密钥。

    final supabaseUrlDebug = dotenv.env["SUPABASE_URL"];
    final supabaseAnonKeyDebug = dotenv.env["SUPABASE_ANONKEY"];

    await Supabase.initialize(
      url: supabaseUrlDebug!,
      anonKey: supabaseAnonKeyDebug!,
    );

我需要将

dotenv.env["SUPABASE_URL"]
替换为其他内容,也许从秘密存储库中获取密钥。

但是我在任何地方都找不到这条路!!

如果我上传环境文件,这对安全问题来说太关键了。

也许应该有什么办法可以解决这个问题..

请帮助我。

flutter github github-actions workflow
1个回答
0
投票

使用 env.json 文件,并在使用

flutter run
运行应用程序时使用标志
--dart-define-from-file=env.json

您的情况:
将您的 .env 文件替换为

- touch env.json
- echo '{
  "SUPABASE_ANONKEY" : "${{ secrets.SUPABASE_URL }}",
  "SUPABASE_URL" : "${{ secrets.SUPABASE_ANONKEY }}"
}' > env.json

env.json
看起来像

{
  "SUPABASE_ANONKEY" : "<YOUR_SUPABASE_ANONKEY>",
  "SUPABASE_URL" : "<SUPABASE_URL>"
}

在代码中使用

String.fromEnvironment('SUPABASE_ANONKEY')

String.fromEnvironment('SUPABASE_URL')

最后,添加它来运行应用程序。

flutter run --dart-define-from-file=env.json

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