Github 操作替换 flutter 项目中的 firebase json

cas*_*cas 4 continuous-integration github firebase flutter github-actions

我正在运行一个自动构建和发布 flutter 项目的 Github 操作。但我们使用开发和生产 Firebase 环境。因此,在构建之前,我想将 google-services.json 从开发版本切换到生产版本。但我似乎找不到一种简单的方法来做到这一点。或者是否有更好的方法在 flutter 中使用 Firebase 的开发和生产版本?

可能不是很有用,但这是当前状态下的操作

on:
  push:
    branches: [ stable ]

name: Build and Release 
jobs:
  build:
    name: Build 
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
      with:
        fetch-depth: '0'
    - name: Bump version and push tag
      id: tag
      uses: anothrNick/github-tag-action@1.17.2
      env:
        GITHUB_TOKEN: ${{ secrets.TOKEN }}
        WITH_V: true
        RELEASE_BRANCHES: stable
    - uses: actions/checkout@v1
    - uses: actions/setup-java@v1
      with:
        java-version: '12.x'
    - uses: subosito/flutter-action@v1
      with:
        flutter-version: '1.17.3'
    - run: flutter pub get
    - run: flutter build appbundle
    - name: Create a Release APK
      uses: ncipollo/release-action@v1
      with:
        artifacts: "build/app/outputs/bundle/release/*.aab"
        tag: ${{ steps.tag.outputs.tag }}
        token: ${{ secrets.TOKEN }}

Run Code Online (Sandbox Code Playgroud)

总的来说,我对 github actions 和 CI 非常非常陌生。随时欢迎任何建设性的反馈!

FDu*_*hen 7

不确定这是最优化的解决方案,但我发现这是最容易更新和维护的。

第 1 步:将 google-services.json 文件存储在 Github 存储库的机密中(这样您就不必在存储库中提交此文件,这是一个额外的好处),其名称类似于 FIREBASE_CONFIG_DEV 和 FIREBASE_CONFIG_PROD。

第 2 步:创建两个工作流程:一个用于开发,例如触发每个拉取请求,另一个用于发布,由特定分支上的提交触发,就像您所做的那样

第 3 步:向您的项目提供 google-service.json

  steps:
  - uses: actions/checkout@v1
  - name: Provide Firebase Android
    env:
      FIREBASE_CONFIG_DEV: ${{ secrets.FIREBASE_CONFIG_DEV }}
    run: echo $FIREBASE_CONFIG_DEV > ./android/app/google-services.json
Run Code Online (Sandbox Code Playgroud)

您的开发工作流程应该如下所示

只需编辑此代码片段,将 google-services.json 的创建添加到您的 iOS 项目中,您就可以开始了

  • 万分感谢!我在通过 github 设置自动发布时一直在寻找这个。 (2认同)