在颤振项目中替换 Firebase json 的 Github 操作

Posted

技术标签:

【中文标题】在颤振项目中替换 Firebase json 的 Github 操作【英文标题】:Github actions replacing firebase json in flutter project 【发布时间】:2020-10-15 17:17:05 【问题描述】:

我正在运行一个自动构建和发布 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 

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

【问题讨论】:

【参考方案1】:

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

第 1 步:使用 FIREBASE_CONFIG_DEV 和 FIREBASE_CONFIG_PROD 之类的名称将 google-services.json 文件存储在您的 Github 存储库的机密中(这样您就不必在存储库中提交此文件,这是一个奖励)。

第 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

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

只需编辑此 sn-p 以将 google-services.json 的创建添加到您的 ios 项目中,您应该一切顺利

【讨论】:

非常感谢!我在通过 github 设置自动发布时一直在寻找这个。

以上是关于在颤振项目中替换 Firebase json 的 Github 操作的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 分析:在一个 firebase 项目中收集不同 ios 应用程序的分析数据 - 颤振

颤振问题中的 Firebase 实施

firebase deploy 在颤振应用程序中出现错误

将 Firebase 添加到颤振项目,破坏项目

将数据从 FireBase 检索到颤振项目时出错

在颤振中解析json