Cloud Build: развертывание функций - ошибка: ошибка HTTP: 404, метод не найден - PullRequest
0 голосов
/ 23 июня 2019

Я хочу развернуть свои облачные функции с помощью конвейера CI / CD (Cloud Build).

Все хорошо, но я застрял на этом этапе:

Error: HTTP Error: 404, Method not found.

Примечание. PROJECT_ID - это мой настоящий идентификатор проекта gcloud.

Starting Step #3 - "deploy function"
Step #3 - "deploy function": Already have image: gcr.io/PROJECT_ID/firebase
Step #3 - "deploy function": ⚠  functions: package.json indicates an outdated version of firebase-functions.
Step #3 - "deploy function":  Please upgrade using npm install --save firebase-functions@latest in your functions directory.
Step #3 - "deploy function": 
Step #3 - "deploy function": === Deploying to 'PROJECT_ID'...
Step #3 - "deploy function": 
Step #3 - "deploy function": i  deploying functions
Step #3 - "deploy function": Running command: npm --prefix "$RESOURCE_DIR" run lint
Step #3 - "deploy function": 
Step #3 - "deploy function": > functions@ lint /workspace/functions
Step #3 - "deploy function": > tslint --project tsconfig.json
Step #3 - "deploy function": 
Step #3 - "deploy function": no-use-before-declare is deprecated. Since TypeScript 2.9. Please use the built-in compiler checks instead.
Step #3 - "deploy function": Running command: npm --prefix "$RESOURCE_DIR" run build
Step #3 - "deploy function": 
Step #3 - "deploy function": > functions@ build /workspace/functions
Step #3 - "deploy function": > tsc
Step #3 - "deploy function": 
Step #3 - "deploy function": ✔  functions: Finished running predeploy script.
Step #3 - "deploy function": i  functions: ensuring necessary APIs are enabled...
Step #3 - "deploy function": 
Step #3 - "deploy function": Error: HTTP Error: 404, Method not found.
Finished Step #3 - "deploy function"
ERROR
ERROR: build step 3 "gcr.io/PROJECT_ID/firebase" failed: exit status 1

Я использовал этот репозиторий в качестве ссылки: Сообщество облачных разработчиков - firebase

My cloudbuild.yaml расшифровывает токен firebase, создает образ докера и запускает процесс:

steps:
  # Decrypt env secrets
  - name: gcr.io/cloud-builders/gcloud
    args:
      - kms
      - decrypt
      - --ciphertext-file=.env.enc
      - --plaintext-file=.env
      - --location=global
      - --keyring=cloudbuild-env
      - --key=firebase-token
    id: 'decrypt'
  - name: gcr.io/cloud-builders/docker
    args: ['build', '-t', 'gcr.io/$PROJECT_ID/firebase', '.']
    id: 'build docker image'
  - name: gcr.io/cloud-builders/npm
    args: ['install']
    dir: functions
    id: 'functions npm install'
  - name: gcr.io/$PROJECT_ID/firebase
    args: ['deploy']
    id: 'deploy functions'
images:
  - gcr.io/$PROJECT_ID/firebase
timeout: 600s

Теперь мой Dockerfile и мой firebase.bash совпадают с представленными в git-репо:

Dockerfile

FROM node:8

RUN npm i -g firebase-tools

ADD firebase.bash /usr/bin

RUN chmod +x /usr/bin/firebase.bash

ENTRYPOINT [ "/usr/bin/firebase.bash" ]

firebase.bash

#!/bin/bash

# run the original firebase
if [ $FIREBASE_TOKEN ]; then
  firebase "$@" --token $FIREBASE_TOKEN
else
  firebase "$@"
fi

У меня также есть package.json для запуска развертывания (не уверен насчет этого):

{
  "scripts": {
    "deploy": "firebase deploy --only functions --token \"$FIREBASE_TOKEN\""
  }
}

Наконец, мой firebase.json выглядит так:

{
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint",
      "npm --prefix \"$RESOURCE_DIR\" run build"
    ],
    "source": "functions"
  }
}

Я включил роль администратора Firebase и т. Д., Но все еще не получаю эту работу: (

...