Как использовать частный, самодостаточный пакет NPM с узлом Google App Engine в стандартной среде - PullRequest
2 голосов
/ 25 марта 2019

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

У меня есть это в моем package.json, под ключом "зависимостей":

"a-private-package" git+ssh://git@bitbucket.org: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 Sources.

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

npm pack; npm install

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

Возможно ли это на самом деле

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

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

"a-private-package": "git+https://myusername:password@bitbucket.org/myusername/a-private-package.git"

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

0 голосов
/ 29 марта 2019

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

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


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

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

В этом случае облачные репозитории источников имеют встроенную функцию для прямого зеркалирования для 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 Source и должен запускать Cloud Build для развертывания.

...