有没有办法在使用或不使用 GitHub 工作流的情况下在 Netlify 上的 Flutter Web 部署中使用机密?

Posted

技术标签:

【中文标题】有没有办法在使用或不使用 GitHub 工作流的情况下在 Netlify 上的 Flutter Web 部署中使用机密?【英文标题】:Is there a way to use secrets in flutter web deployments on Netlify with or without using GitHub workflows? 【发布时间】:2022-01-13 07:34:43 【问题描述】:

我有一个 Flutter Web 应用,但我对 GitHub 工作流程不太熟悉。我有一个dotenv 文件,它存储项目中另一个文件所需的令牌。

对于部署,我在 Netlify 中使用了这个构建命令: if cd flutter; then git pull && cd ..; else git clone https://github.com/flutter/flutter.git; fi && flutter/bin/flutter config --enable-web && flutter/bin/flutter build web --release

我选择使用它而不是 GitHub 工作流的另一个原因是,它不会在我的存储库本身中添加构建目录。

现在需要在我的项目中使用这个dotenv。但是要使用上述命令构建和部署它,dotenv 应该始终受到版本控制。否则 Netlify 将无法检测到它。

我遇到过这个*** post,但这似乎不能解决我的问题。

有什么方法可以直接将环境机密传递给 Netlify,以便为 Flutter 构建和部署?或者是否有任何工作流程可以直接部署(推送)到 Netlify,而不将构建文件存储在我的仓库中?

这是我当前的 netlify 构建设置:

【问题讨论】:

【参考方案1】:

您可以使用 GitHub 工作流简单地将构建文件放到另一个分支上。

首先创建一个名为build 的空分支并使用空提交启动该分支。请按以下步骤操作:

    git checkout --orphan build git rm -rf . 这将删除现有文件 git commit --allow-empty -m "some message"

现在回到master branch。并运行以下步骤:

    base64 path/to/dontenv 并复制此命令的输出。这实际上会将您的 DOTENV 的内容解码为字符串。 将此输出粘贴到新的 GitHub 存储库项目机密中,并将其命名为 DOTENV。 现在只需在 .gitignore 中添加 DOTENV。 创建新的 GitHub 工作流。 运行mkdir -p .github/workflowsnano .github/workflows/build.yml 并粘贴:
name: Build and Deploy

on:
 push:
   branches:
     - master

jobs:
 build:
   runs-on: ubuntu-latest

   steps:
     - name: Checkout repository
       uses: actions/checkout@v2
     
     #I am assuming your dontenv was in lib/
     #This now decodes your dotenv back and writes the contents into lib/dotenv
     - run: echo "$DOTENV// /" | base64 -d > lib/dotenv
       env:
         MAIN: $ secrets.DOTENV 

     - name: Set up Flutter
       uses: subosito/flutter-action@v1
       with:
         channel: 'stable'

     - name: Get dependencies
       run: flutter pub get

     - name: Run analyze
       run: flutter analyze .

     - name: Build release
       run: flutter build web --release

     - name: Upload artifacts
       uses: actions/upload-artifact@v1
       with:
         name: build
         path: build

 deploy-build:
   needs: build

   runs-on: ubuntu-latest

   steps:
     - name: Clone the repoitory
       uses: actions/checkout@v2
       with:
         ref: build

     - name: Configure git
       run: |
         git config --global user.email $GITHUB_ACTOR@gmail.com
         git config --global user.name $GITHUB_ACTOR

     - name: Download website build
       uses: actions/download-artifact@v1
       with:
         name: build
         path: build

     - name: Commit and Push
       run: |
         if [ $(git status --porcelain=v1 2>/dev/null | wc -l) != "0" ] ; then
           git add -f build
           git commit -m "gh-actions deployed a new build"
           git push --force https://github.com/$GITHUB_REPOSITORY.git HEAD:build
         fi

这将在build 分支中创建构建文件。并且您的 master 分支将不受影响。每次推送后,都会触发此 GitHub 操作,并在 build 分支中构建和提交您的构建文件。要部署,只需部署这个 build 分支。

【讨论】:

以上是关于有没有办法在使用或不使用 GitHub 工作流的情况下在 Netlify 上的 Flutter Web 部署中使用机密?的主要内容,如果未能解决你的问题,请参考以下文章

带和/或不带类型的 AWS DynamoDB 数据?

有没有办法在不使用通知服务扩展的情况下将图像附加到推送通知?

有没有办法在 Java 流上使用条件谓词?

使用不同的参考名称迁移工作项。有没有办法更改工作项类型的字段引用名称或设置自定义引用名称?

使用啥orm或不使用它[关闭]

有没有办法让 Resharper 忽略未使用的引用?