有没有办法在使用或不使用 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/workflows
。
nano .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 部署中使用机密?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在不使用通知服务扩展的情况下将图像附加到推送通知?