PROD
环境。Environment secrets
如下。String.fromEnvironment
获取这些密钥。class _HomeState extends State<Home> {
@override
Widget build(BuildContext context) {
const supabaseUrl =
String.fromEnvironment('envkey_SUPABASE_URL', defaultValue: "check1");
const supabaseAnonKey = String.fromEnvironment('envkey_SUPABASE_ANONKEY',
defaultValue: "check2");
return const Scaffold(
body: Row(
children: [
Column(
children: [
Text("check"),
Text(supabaseUrl),
Text(supabaseAnonKey),
],
),
],
),
);
}
}
Github Actions
中使用 .github/workflows/workflow.yml
部署 flutter web。我使用
SpicyPizza/[email protected]
创建环境文件。
name: gh-pages
on:
push:
branches: [main]
jobs:
PROD:
runs-on: ubuntu-latest
environment: PROD
steps:
- uses: actions/checkout@v2
- name: Create environment file
uses: SpicyPizza/[email protected]
with:
envkey_SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
envkey_SUPABASE_ANONKEY: ${{ secrets.SUPABASE_ANONKEY }}
- uses: subosito/flutter-action@v1
- uses: bluefireteam/flutter-gh-pages@v7
with:
baseHref: /injicare-event/
构建成功。
但是,部署的站点显示来自 String.fromEnvironment 的默认值,这意味着我无法从环境中获取密钥。
我还添加了
Repository secrets
,如下所示..
我已经为这个问题苦苦挣扎了两个月了。
我已经按照所有搜索到的文档所述完成了所有操作,但没有任何效果..
请帮助我..!!!! T_T
.env
文件进行cat,以确保它看起来像您所期望的那样:...
with:
envkey_SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
envkey_SUPABASE_ANONKEY: ${{ secrets.SUPABASE_ANONKEY }}
- name: Display .env
run: cat .env
- uses: subosito/flutter-action@v1
...
当您通过
envkey_MY_VAR
时,该操作将在您的环境文件 (doc) 中设置
MY_VAR=value
。
所以代码:
String.fromEnvironment('envkey_SUPABASE_URL', defaultValue: "check1");
应该是:
String.fromEnvironment('SUPABASE_URL', defaultValue: "check1");
Env 文件“只是”管理环境变量的一种方式,并在某些情况下让您的生活更轻松(例如本地开发)。但它们“只是”围绕常规环境变量的间接级别。
在此工作流程中,您可能想要使用实际的环境变量。在 Github Actions 中,越简单通常越好;您可以通过使用更简单的操作和本机 GitHub 工具(例如 actions/upload-pages-artifact 和 actions/deploy-pages)来节省时间。
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
environment: PROD
steps:
- uses: actions/checkout@v2
- name: Setup Flutter
uses: subosito/flutter-action@v1
- name: Build Flutter Web
run: |
flutter config --enable-web
flutter build web --release --base-href /injicare-event/
env:
SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
SUPABASE_ANONKEY: ${{ secrets.SUPABASE_ANONKEY }}
- name: Upload Artifacts
uses: actions/upload-pages-artifact@v3
with:
path: build/web/
deploy:
needs: build
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
请注意,构建部分很简单;你可以在你的机器上运行它。处理部署页面的部分是众所周知且有记录的 Github 操作。