Google Cloud AppEngine - Зависимость NPM - Неверные учетные данные для аутентификации - PullRequest
0 голосов
/ 02 апреля 2019

Я создал проект Node.js (назовем его AA) в репозитории GC (облако Google), а затем создал другой проект (BB) и использовал AA в качестве зависимости:

"dependencies": {
  "@slack/client": "^4.9.0",
  "axios": "^0.18.0",
  "big-integer": "^1.6.41",
  "https-proxy-agent": "^2.2.1",
  "moment": "^2.24.0",
  "mongoose-auto-increment": "^5.0.1",
  "mssql": "^4.3.0",
  "xml2js": "^0.4.19",
  "AA": "git+https://source.developers.google.com/p/AA/r/AA",
}

теперь, когда я пытаюсь развернуть его в AppEngine:

gcloud -q app deploy server/app-prod.yaml --project BB

я получаю Invalid authentication credentials. ошибка:

Step #1: npm ERR! Error while executing:
Step #1: npm ERR! /usr/bin/git ls-remote -h -t https://source.developers.google.com/p/AA/r/AA
Step #1: npm ERR!
Step #1: npm ERR! fatal: remote error:
Step #1: npm ERR!
Step #1: npm ERR!
Step #1: npm ERR! Invalid authentication credentials.
Step #1: npm ERR!
Step #1: npm ERR! Please generate a new identifier:
Step #1: npm ERR!   https://source.developers.google.com/new-password
Step #1: npm ERR!
Step #1: npm ERR!
Step #1: npm ERR!
Step #1: npm ERR! exited with error code: 128
Step #1:
Step #1: npm ERR! A complete log of this run can be found in:
Step #1: npm ERR!     /root/.npm/_logs/2019-03-31T12_25_41_034Z-debug.log
Step #1: error building image: error building stage: waiting for process to exit: exit status 1

похоже, что служба, выполняющая сборку на AppEngine, не имеет разрешений для хранилища AA. однако я не знаю, какой это пользователь или какие разрешения мне нужно дать. Я не смог найти ответы на него в облачных страницах Google, и у меня нет пакета поддержки.

Я надеюсь, что кто-то другой, тогда я делал это раньше, и может помочь мне. У меня есть AA и BB, поскольку код, используемый в AA, будет использоваться и в других проектах (это служебный проект)

1 Ответ

1 голос
/ 10 апреля 2019

Вы можете обойти эту проблему, используя пользовательскую среду выполнения и запустив скрипт инициализации пользователя git в своем Dockerfile.

  1. Добавьте зависимость к вашему package.json так же, как вы делали это в своем вопросе

    "AA": "git+https://source.developers.google.com/p/AA/r/AA"
    
  2. Получите сценарий инициализации, перейдя на этот URL и выполнив шаги аутентификации.

  3. Сохраните его в файле в корневом каталоге вашего проекта. Измените время выполнения в вашем app.yaml на «custom». Добавьте Dockerfile следующим образом:

    FROM gcr.io/google_appengine/nodejs
    
    RUN /usr/local/bin/install_node '>=8.0.0'
    COPY . /app/
    
    #Change to filename of the script stored in step 1 
    RUN /bin/bash /app/auth.bash 
    
    RUN npm install --unsafe-perm || \
      ((if [ -f npm-debug.log ]; then \
          cat npm-debug.log; \
        fi) && false)
    CMD npm start
    
  4. Пробег gcloud app deploy

...