Как использовать частный, автономный пакет NPM с узлом Google App Engine, стандартная среда

У меня есть пакет NPM, размещенный в частном репозитории Bitbucket git (не в официальном реестре NPM).

У меня есть это в моем package.json под ключом "dependencies":

"a-private-package" git+ssh://[email protected]:myusername/a-private-package.git

Он работает, когда я запускаю npm install локально, поскольку используются мои SSH-ключи.

Но когда я использую gcloud app deploy для развертывания в стандартной среде движка приложений для узла, я получаю Host key verification failed от Google Cloud Build.

Я пытался:

Добавление пользовательского ключа SSH в Cloud Build.

https://cloud.google.com/cloud-build/docs/access-private-github-repos

Проблема: нет доступа к cloudbuild.yaml для стандарта GAE; не могу указать git использовать ключ SSH.

Добавление моего личного репозитория git в Источники Google.

Проблема: нет доступа к cloudbuild.yaml для стандарта GAE; не могу указать git использовать ключ SSH.

npm pack; npm install

Проблема: не сохраняет историю репо / URL.

На самом ли деле это возможно?


person zino    schedule 25.03.2019    source источник
comment
Вы видели этот Статья? В нем упоминается использование cloudbuild.yaml со стандартом GAE и привязка Bitbucket к нему.   -  person Nahuel Varela    schedule 26.03.2019
comment
У меня нет, но я посмотрю. Я не думаю, что это сработает, поскольку в примере вызывается gcloud app deploy из сборки, которая запустила бы новую новую сборку без ключа SSH, установленного на предшествующих уровнях?   -  person zino    schedule 26.03.2019
comment
Что ж, статья запускает gcloud app deploy после того, как он определяет cloudbuild.yaml. Я вижу, что вы получаете Host key verification failed ошибку от Cloud Build, и добавление ключей SSH в файл .yaml может исправить это, но вы также говорите, что не можете изменять cloudbuild.yaml. Почему вы не можете изменить cloudbuild.yaml?   -  person Nahuel Varela    schedule 27.03.2019
comment
gcloud app deploy запустит новую свежую сборку (из первой сборки) с пустым cloudbuild.yaml. Я думаю, что это основная проблема (вы не можете настроить cloudbuild.yaml, который использует gcloud app deploy). Если вы просматриваете комментарии к этой статье, у кого-то такая же проблема. И все же спасибо за ссылку.   -  person zino    schedule 27.03.2019


Ответы (2)


Невозможно изменить cloudbuild.yaml, когда вы работаете gcloud app deploy. Вместо этого вы должны создать новый cloudbuild.yaml и выполнить его с помощью gcloud builds submit --config=cloudbuild.yaml .. В этом случае gcloud app deploy будет выполняться внутри cloudbuild.yaml.

Я попробовал описанные шаги для подключения к частному репозиторию Github и изменения значений, чтобы они соответствовали ему с помощью битбакета, но не смог. Таким образом, я создал этот запрос функции для лучшей документации


Использование облачных репозиториев исходного кода

Я считаю, что, поскольку у вас уже есть зависимость от частного репо, будет проще разместить на нем все приложение. Учитывая это, вам нужно будет клонировать все репо, запустить npm install и deploy.

В этом случае Cloud Source Repositories имеет встроенную функцию для зеркала прямо в Bitbucket (публичные и частные репозитории).

Шаги:

1) Создайте в корневой папке приложения cloudbuild.yaml со следующим кодом:

steps:
# NPM install
- name: 'gcr.io/cloud-builders/npm'
  args: ['install']
#Test
- name: 'gcr.io/cloud-builders/npm'
  args: ['test']
#Deploy
- name: "gcr.io/cloud-builders/gcloud"
  args: ["app", "deploy"]

2) Подключите облачные репозитории исходного кода к Bitbucket

3) Создайте Cloud Build Trigger (такой новый код, помещенный в репо, будет автоматически развернут)

4) Вставьте корневую папку, содержащую app.yaml и cloudbuild.yaml, в репо

Теперь он должен быть синхронизирован с облачными исходными репозиториями, и он должен запускать Cloud Build для развертывания.

person Nahuel Varela    schedule 29.03.2019

К сожалению, вам нужно будет встроить имя пользователя / пароль в package.json, но вы, вероятно, можете использовать конечную точку https:

"a-private-package": "git+https://myusername:[email protected]/myusername/a-private-package.git"

Если это сработает для вас, я бы предложил создать отдельную учетную запись на bitbucket и ограничить ее только для просмотра в этом репо.

person Femi    schedule 03.04.2019