我用
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
。
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"]
替换为其他内容,也许从秘密存储库中获取密钥。
但是我在任何地方都找不到这条路!!
如果我上传环境文件,这对安全问题来说太关键了。
也许应该有什么办法可以解决这个问题..
请帮助我。
使用 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