用于 github 操作的 Google 服务 json 文件?

问题描述 投票:0回答:3

我目前正在开发一个android项目,我使用github action来测试该项目。 但每当构建时,都会因找不到

google-services.json
文件而出现错误。

产生的错误如下

File google-services.json is missing. The Google Services Plugin cannot function without it.

现在,我不想在 github 上提交或上传

google-services.json
文件。 那么,有没有其他方法可以解决这个问题呢?

android linux firebase github-actions github-cli
3个回答
12
投票

嗯...我已经找到了解决方案,但如果有人需要,我会在这里解释。

我们可以将

google-sevices.json
的内容存储在环境变量(github 中的 Secrets)中。实际上 github 使用基于 Linux 的 cli,所以我们必须使用 github actions 在 cli 上执行一些命令。

将有两个步骤...

  • 首先以base64创建google-services.json文件
- name: Create file
  run: cat /home/runner/work/<Project-Name>/<Project-Name>/app/google-services.json | base64
  • 然后将数据放入文件中(基本上是从 github 秘密获取数据并在构建应用程序之前将数据放入 json 文件中)
- name: Putting data
  env:
    DATA: ${{ secrets.GOOGLE_SERVICES_JSON }}
  run: echo $DATA > /home/runner/work/<Project-Name>/<Project-Name>/app/google-services.json
  • 然后通过以下方式在 github Secrets 中定义
    google-services.json
    文件的内容:
    Setting > Secrets > New Repository Secret
    使用名称
    GOOGLE_SERVICES_JSON

这两个命令都应该放在

gradle.yml

中的 gradle build 命令之前

通过执行此操作,您的

google-services.json
文件将被创建并包含数据,因此应用程序将成功构建。


9
投票

向 GitHub 存储库添加任何类型的凭据都是危险且不明智的。即使该存储库是私有的并且您现在是唯一使用它的人,也许您稍后会邀请其他人,除非您更改 git 历史记录,否则即使您通过新提交删除它们,您的凭据也将始终可访问。

相反,请将您的凭据(在本例中为

google-services.json
)放入 GitHub Action 密钥中,并从 CI 文件中读取该密钥。 GitHub 机密是存储这些信息的好地方,因为只有您运行的操作才能读取它们,而存储库的其他成员则无法读取它们。

  1. 在本地计算机上将文件编码为 base64,以便可以轻松地将其存储在环境变量中:

    base64 google-services.json

    要将 它作为单行,您可以使用
    base64 -w 0

  2. 复制输出并将其存储在名为

    GOOGLE_SERVICES_JSON

    的新 GitHub Action 密钥中(可以在存储库的“设置”选项卡中找到)
  3. 在 GitHub Action yml 中,在构建之前,添加此步骤,将编码文件添加到环境变量中,然后对其进行解码并将其添加到 Action 的工作目录中:

- name: Create Google Services JSON File
  env:
    GOOGLE_SERVICES_JSON: ${{ secrets.GOOGLE_SERVICES_JSON }}
  run: echo $GOOGLE_SERVICES_JSON | base64 -di > ./<folder>/google-services.json

<folder>
是您构建所需的任何文件夹。在我的 Action 中,我试图构建一个 Android APK,所以我的路径是
./android/app/google-services.json
。另外,根据您的路径,您可能需要先创建目录:
run: mkdir <folder> && echo $GOOGLE_SERVICES_JSON | base64 -di > ./<folder>/google-services.json

base64 -di
解码编码文件并删除“垃圾”字符,例如当您将原始编码文件复制到操作密钥时可能带来的换行符。


1
投票

如果您正在制作任何公共存储库或任何示例应用程序,则不应将

google-services.json
文件提交到 Github 存储库。

当您处理私人存储库时,这取决于协作者如何管理 Firebase 凭据。

google-services.json
文件将包含 Firebase 项目的访问密钥和指纹。

结论:不要通过任何 SVN 或 Git 存储库共享

google-services.json
文件。用户可以将自己的
google-services.json
文件添加到项目中并在测试环境上运行。

© www.soinside.com 2019 - 2024. All rights reserved.