Как использовать непрерывное развертывание firebase с Cloudbuild?

клиенту firebase необходимо войти в систему под пользователем для операций развертывания. Чтобы использовать это при непрерывном развертывании, я могу найти только способ зашифровать FIREBASE_TOKEN и использовать его.

Попытка предоставить облачному конструктору полные права администратора 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: }

Использование жестко запрограммированного токена, даже зашифрованного, кажется немного обременительным, поскольку облачный конструктор хорошо интегрирован с iam. Особенно, если у вас есть несколько проектов, в которых развернут один и тот же код (dev, test, stage, prod).

Есть какие-нибудь подсказки для лучшего решения?


person Carsten Rietz    schedule 11.03.2019    source источник
comment
Пожалуйста, посмотрите мой ответ на следующей странице. stackoverflow.com/questions/55754674/   -  person zkohi    schedule 19.04.2019
comment
Привет, zkohi, это тоже решение, которое мы используем банкоматом. Но накатывать токены и использовать специальные сервисные аккаунты - это громоздко. Я ожидал, что это можно решить с помощью инструментов gcp iam.   -  person Carsten Rietz    schedule 29.04.2019
comment
Спасибо за комментарий. Я создавал проект в каждой среде (stage, prod и т. Д.). Поэтому я создал токен ci и cloudbuild.yaml в каждом проекте и установил Cloud Build для каждого проекта. (cloudbuild.state.yaml, cloudbuild.prod.yaml и т. д.)   -  person zkohi    schedule 29.04.2019