Github 操作:未获取环境字符串

问题描述 投票:0回答:1
  1. 我在 Github 中创建了
    PROD
    环境。

  1. 我添加
    Environment secrets
    如下。

  1. 我将使用
    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),
            ],
          ),
        ],
      ),
    );
  }
}

  1. 我在
    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

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

尝试对您的
.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文件吗?

Env 文件“只是”管理环境变量的一种方式,并在某些情况下让您的生活更轻松(例如本地开发)。但它们“只是”围绕常规环境变量的间接级别。

在此工作流程中,您可能想要使用实际的环境变量。在 Github Actions 中,越简单通常越好;您可以通过使用更简单的操作和本机 GitHub 工具(例如 actions/upload-pages-artifactactions/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 操作。

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