有没有办法在使用或不使用 GitHub 工作流的情况下在 Netlify 上的 flutter web 部署中使用秘密?
Is there a way to use secrets in flutter web deployments on Netlify with or without using GitHub workflows?
我有一个 Flutter 网络应用程序,但我不太熟悉 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 将无法检测到它。
我遇到过这个,但这似乎并没有解决我的问题。
有什么方法可以直接将环境机密传递给 Flutter 构建和部署所需的 Netlify?或者是否有任何工作流可以直接部署(推送)到 Netlify,而无需将构建文件存储在我的存储库中?
这是我当前的 netlify 构建设置:
您可以使用 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
。
- 现在只需将
DOTENV
添加到 .gitignore.
- 创建一个新的 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
分支即可。
我有一个 Flutter 网络应用程序,但我不太熟悉 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 将无法检测到它。
我遇到过这个
有什么方法可以直接将环境机密传递给 Flutter 构建和部署所需的 Netlify?或者是否有任何工作流可以直接部署(推送)到 Netlify,而无需将构建文件存储在我的存储库中?
这是我当前的 netlify 构建设置:
您可以使用 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
。 - 现在只需将
DOTENV
添加到 .gitignore. - 创建一个新的 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
分支即可。