【发布时间】:2020-12-30 00:57:49
【问题描述】:
我正在开展一个使用 Firebase 存储数据的项目,并且正在进行一些单元测试。我设置了一个 GitHub Action,它在每个推送或拉取请求上执行 mvn package 和 mvn test,问题是我在执行测试时收到以下错误:
java.io.IOException:应用程序默认凭据不可用。如果在 Google Compute Engine 中运行,它们就可用。否则,必须定义环境变量 GOOGLE_APPLICATION_CREDENTIALS 指向定义凭据的文件。请参阅https://developers.google.com/accounts/docs/application-default-credentials 了解更多信息。
我已经使用 .json 创建了秘密,这就是我编写 GitHub 操作的方式:
name: Maven CI/CD
on:
push:
branches: [ develop ]
pull_request:
branches: [ develop ]
jobs:
build_and_test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 15
uses: actions/setup-java@v1
with:
java-version: 15
- name: Cache the Maven packages to speed up build
uses: actions/cache@v1
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Build project with Maven
run: mvn -B package --file pom.xml
env:
GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }}
- name: Run (J)Unit tests
run: mvn clean test
env:
GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }}
【问题讨论】:
-
试图分离未分离的东西。运行
mvn package和mvn clean test没有意义...重复几个部分。因为package生命周期包括test...此外,您使用的是旧版本的 github 操作缓存(检查操作/缓存的位置)...此外,关于谷歌的文档说变量 GOOGLE_APPLICATION_CREDENTIALS 指向一个文件...? -
是的,我会更新动作!是的,但它是一个 .json 文件!
-
错误信息表明有些不同。
标签: java firebase maven unit-testing