Atu*_*rma 8 linux android firebase github-actions github-cli
我目前正在开发一个 android 项目,我使用 github action 来测试该项目。但每当构建时,都会因找不到文件而出现错误google-services.json。
产生的错误如下
File google-services.json is missing. The Google Services Plugin cannot function without it.
Run Code Online (Sandbox Code Playgroud)
现在,我不想google-services.json在 github 上提交或上传文件。那么,有没有其他方法可以解决这个问题呢?
嗯...我已经找到了解决方案,但如果有人需要,我会在这里解释。
我们可以将内容存储google-sevices.json在环境变量中(又名 github 中的 Secrets)。实际上 github 使用基于 Linux 的 cli,因此我们必须使用 github actions 在 cli 上执行一些命令。
将有两个步骤...
- name: Create file
run: cat /home/runner/work/<Project-Name>/<Project-Name>/app/google-services.json | base64
Run Code Online (Sandbox Code Playgroud)
- name: Putting data
env:
DATA: ${{ secrets.GOOGLE_SERVICES_JSON }}
run: echo $DATA > /home/runner/work/<Project-Name>/<Project-Name>/app/google-services.json
Run Code Online (Sandbox Code Playgroud)
google-services.json然后通过以下方式在 github Secrets 中定义文件的内容: Setting > Secrets > New Repository Secretusing nameGOOGLE_SERVICES_JSON这两个命令都应该放在 gradle build 命令之前gradle.yml
通过执行此操作,您的google-services.json文件将被创建并包含数据,因此应用程序将成功构建。
向 GitHub 存储库添加任何类型的凭据都是危险且不明智的。即使该存储库是私有的,并且您现在是唯一使用它的人,也许您稍后会邀请其他人,除非您更改 git 历史记录,否则即使您通过新提交删除它们,您的凭据也将始终可访问。
相反,请将您的凭据(在本例中为google-services.json)放入 GitHub Action 机密中,并从 CI 文件中读取该机密。GitHub 机密是存储此信息的好地方,因为只有您运行的操作才能读取它们,而存储库的其他成员则无法读取它们。
base64 google-services.jsonGOOGLE_SERVICES_JSON- 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
Run Code Online (Sandbox Code Playgroud)
<folder>是您构建所需的任何文件夹。在我的 Action 中,我试图构建一个 android APK,所以我的路径是./android/app/google-services.json. 此外,根据您的路径,您可能需要首先创建目录:run: mkdir <folder> && echo $GOOGLE_SERVICES_JSON | base64 -di > ./<folder>/google-services.json
base64 -di解码编码文件并删除“垃圾”字符,例如当您将原始编码文件复制到操作密钥时可能带来的换行符。
| 归档时间: |
|
| 查看次数: |
4063 次 |
| 最近记录: |