繁体   English   中英

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

[英]Google services json file for github actions?

我目前正在处理一个 android 项目,我使用 github 操作来测试该项目。 但无论何时构建,它都会以找不到google-services.json文件的错误告终。

产生的错误如下

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

现在,我不想在 github 上提交或上传google-services.json文件。那么,还有其他方法可以解决这个问题吗?

如果您正在制作任何公共存储库或任何示例应用程序,则不应将google-services.json文件提交到 Github 存储库。

当您处理私人回购时,这取决于合作者如何管理 firebase 凭证。 google-services.json文件将包含 firebase 项目的访问密钥和指纹。

结论:不要在任何 SVN 或 Git 存储库上共享google-services.json文件。 用户可以将自己的google-services.json文件添加到项目中,并在测试环境中运行。

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

我们可以将google-sevices.json的内容存储在环境变量(又名 github 中的 Secrets)中。 实际上 github 使用基于 linux 的 cli,所以我们必须使用 github 动作在 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 机密中定义google-services.json文件的内容: Setting > Secrets > New Repository Secret使用名称GOOGLE_SERVICES_JSON的新存储库机密

这两个命令都应该放在 gradle.yml 中的gradle.yml构建命令之前

通过这样做,您的google-services.json文件将被创建并包含数据,因此应用程序将成功构建。

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

相反,将您的凭据(在本例中为google-services.json )放入 GitHub 操作机密中,并从 CI 文件中读取该机密。 GitHub 秘密是存储此信息的好地方,因为只有您运行的操作才能读取它们,而存储库的其他成员则不能。

  1. 在本地计算机上将您的文件编码为 base64,以便它可以轻松存储在环境变量中: base64 google-services.json
  2. 复制 output 并将其存储在名为GOOGLE_SERVICES_JSON的新 GitHub Action secret(可以在存储库的“设置”选项卡中找到)中
  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 run: mkdir <folder> && echo $GOOGLE_SERVICES_JSON | base64 -di >./<folder>/google-services.json

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM