linux github操作的Google服务json文件?

t5fffqht  于 2023-01-16  发布在  Linux
关注(0)|答案(3)|浏览(124)

我目前正在做一个android项目,我使用github action来测试这个项目。但是每当它构建时,它都会因为找不到google-services.json文件而结束错误。
生成的错误如下所示

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

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

dffbzjpn

dffbzjpn1#

嗯...我已经找到了解决办法,但如果有人需要,我在这里解释。
我们可以将google-sevices.json的内容存储在环境变量中(也就是github中的秘密)。实际上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 Secrets中获取数据并将数据放入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文件的内容:使用名称GOOGLE_SERVICES_JSONSetting > Secrets > New Repository Secret
    gradle.yml中,这两个命令都应放在gradle构建命令之前

通过执行此操作,将创建您的google-services.json文件,该文件也包含数据,因此应用程序将成功构建。

yptwkmov

yptwkmov2#

如果您正在创建任何公共存储库或任何示例应用,则不应将google-services.json文件提交到Github存储库。
当你在私有存储库上工作时,这取决于合作者如何管理firebase凭证。google-services.json文件将拥有firebase项目的访问密钥和指纹。
结论:不要在任何SVN或Git repo上共享google-services.json文件。用户可以将自己的google-services.json文件添加到项目中,并在测试环境中运行它。

x8diyxa7

x8diyxa73#

在GitHub repo中添加任何类型的凭据都是危险和不明智的。即使repo是私有的,并且你是目前唯一使用它的人,也许你以后会邀请其他人,除非你修改git历史记录,否则你的凭据将始终是可访问的,即使你通过新的提交删除了它们。
相反,将您的凭证(在本例中为google-services.json)放入GitHub Action secret中,并从CI文件中读取该secret。GitHub secret是存储此信息的绝佳位置,因为只有您运行的操作才能读取它们,而仓库中的其他成员无法读取。
1.在本地计算机上将文件编码为base64,以便可以轻松地将其存储在environment variables中:base64 google-services.json
1.复制输出并将其存储在一个名为GOOGLE_SERVICES_JSON的新GitHub操作机密中(可以在存储库的Settings标签中找到
1.在你的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对编码文件进行解码,并去除“垃圾”字符,例如在将原始编码文件复制到Action secret中时可能带来的换行符。

相关问题