firebase - 如何在 cloudbuild 中使用 firebase 持续部署?
问题描述
firebase cli 需要登录用户进行部署操作。要在持续部署中使用它,我只能找到一种加密 FIREBASE_TOKEN 并使用它的方法。
尝试为 cloudbuilder 提供完整的 Firebase 管理员权限会导致错误消息指示缺少权限。
Step #2: functions: ensuring necessary APIs are enabled...
Step #2: [2019-03-08T15:15:42.473Z] >>> HTTP REQUEST GET https://servicemanagement.googleapis.com/v1/services/cloudfunctions.googleapis.com/projectSettings/project?view=CONSUMER_VIEW
Step #2:
Step #2: [2019-03-08T15:15:42.474Z] >>> HTTP REQUEST GET https://servicemanagement.googleapis.com/v1/services/runtimeconfig.googleapis.com/projectSettings/project?view=CONSUMER_VIEW
Step #2:
Step #2: [2019-03-08T15:15:42.538Z] <<< HTTP RESPONSE 404 vary=X-Origin, Referer, Origin,Accept-Encoding, content-type=application/json; charset=UTF-8, date=Fri, 08 Mar 2019 15:15:42 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, accept-ranges=none, transfer-encoding=chunked
Step #2: [2019-03-08T15:15:42.539Z] <<< HTTP RESPONSE BODY code=404, message=Method not found., status=NOT_FOUND
Step #2:
Step #2: Error HTTP Error: 404, Method not found.
Step #2: [2019-03-08T15:15:42.544Z] Error Context: {
Step #2: "body": {
Step #2: "error": {
Step #2: "code": 404,
Step #2: "message": "Method not found.",
Step #2: "status": "NOT_FOUND"
Step #2: }
Step #2: },
Step #2: "response": {
Step #2: "statusCode": 404,
Step #2: "body": {
Step #2: "error": {
Step #2: "code": 404,
Step #2: "message": "Method not found.",
Step #2: "status": "NOT_FOUND"
Step #2: }
Step #2: },
Step #2: "headers": {
Step #2: "vary": "X-Origin, Referer, Origin,Accept-Encoding",
Step #2: "content-type": "application/json; charset=UTF-8",
Step #2: "date": "Fri, 08 Mar 2019 15:15:42 GMT",
Step #2: "server": "ESF",
Step #2: "cache-control": "private",
Step #2: "x-xss-protection": "1; mode=block",
Step #2: "x-frame-options": "SAMEORIGIN",
Step #2: "x-content-type-options": "nosniff",
Step #2: "accept-ranges": "none",
Step #2: "transfer-encoding": "chunked"
Step #2: },
Step #2: "request": {
Step #2: "uri": {
Step #2: "protocol": "https:",
Step #2: "slashes": true,
Step #2: "auth": null,
Step #2: "host": "servicemanagement.googleapis.com",
Step #2: "port": 443,
Step #2: "hostname": "servicemanagement.googleapis.com",
Step #2: "hash": null,
Step #2: "search": "?view=CONSUMER_VIEW",
Step #2: "query": "view=CONSUMER_VIEW",
Step #2: "pathname": "/v1/services/runtimeconfig.googleapis.com/projectSettings/project",
Step #2: "path": "/v1/services/runtimeconfig.googleapis.com/projectSettings/project?view=CONSUMER_VIEW",
Step #2: "href": "https://servicemanagement.googleapis.com/v1/services/runtimeconfig.googleapis.com/projectSettings/project?view=CONSUMER_VIEW"
Step #2: },
Step #2: "method": "GET"
Step #2: }
Step #2: }
Step #2: }
使用硬编码的令牌,即使是加密的,似乎有点麻烦,因为 cloudbuilder 与 iam 很好地集成。特别是如果您有多个项目部署了相同的代码(开发、测试、阶段、产品)。
任何提示以获得更好的解决方案?
解决方案
推荐阅读
- c# - 如何在 Roslyn 中使用项目方法?
- flask - 无法在烧瓶中使用 request.args
- eclipse - JAX-RS 完全没有响应 (404)
- javascript - 如何使用 TypeScript 中的对象解构为构造函数中的类级别属性赋值?
- maxima - Maxima:类似于 Excel 中的圆形
- android - 一旦我开始做广告,我的 android BLE 设备会在多长时间内做广告?有没有办法增加持续时间?
- regex - 如何在netlify-cms Gatsby starter中的`yaml`文件中按范围限制字符数
- java - 如何使用 Java 从 script.google.com 网页获取信息?
- google-sheets - Google表格 - 从另一个范围中过滤掉一个范围内的值
- jenkins-pipeline - 如何通过读取属性文件声明步骤jenkinsfile以注入环境变量