我的目标是在我的CI流程中提供Firebase函数,(然后运行e2e测试(。
所以在 dev 中我可以这样做,假设我已经登录了:
firebase serve --only functions --port=9000 --project=<project_id>
但是,在CI中我没有登录,因此我尝试这样做:
firebase serve --only functions --port=9000 --project=<project_id> --token=<firebase-ci-token>
但是这不起作用 - 这是不可能的吗?
更新
我现在正在尝试运行:
export FIREBASE_TOKEN=<firebase-token>
然后
firebase serve --only functions --port=9000 --project=eddystone-test-e4cd3
但它给了我一些错误(在Firebase调试.log中(:
TypeError: Cannot read property 'refresh_token' of undefined
下面是您可能需要的示例.gitlab-ci.yml
。请注意,firebase login:ci
生成的令牌是在每个 firebase 命令中指定的:
deploy:functions:staging:
stage: deploy_functions
environment: staging
only:
- staging
when: manual
script:
- cd $APP_PATH/functions
- npm install
- cd ..
- echo $ENVIRONMENT_STAGING >> $APP_PATH/src/environments/environment.staging.ts
- firebase use staging --token "$FIREBASE_CI_AUTH_TOKEN"
- firebase functions:config:set dev.authkey="$FIREBASE_CONFIG_DEV_AUTHKEY" --token "$FIREBASE_CI_AUTH_TOKEN"
- firebase deploy --only functions --token "$FIREBASE_CI_AUTH_TOKEN" -P <project>