#google-app-engine #npm #google-cloud-build #google-appengine-node
#google-app-engine #npm #google-cloud-build #google-appengine-node
Вопрос:
У меня есть пакет 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
для развертывания в App engine стандартную среду для node, я получаю Host key verification failed
сборку из Google Cloud.
Я пытался:
Добавление пользовательского 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.
Возможно ли это на самом деле?
Комментарии:
1. Вы ознакомились с этой статьей ? В нем упоминается использование cloudbuild. yaml со стандартом GAE и привязкой Bitbucket к нему.
2. У меня нет, но я посмотрю. Я не думаю, что это сработало бы в качестве примеров вызовов
gcloud app deploy
из сборки, которые запустили бы другую новую сборку без SSH-ключа, установленного в слоях перед ней?3. Что ж, статья запускается
gcloud app deploy
после того, как он определитcloudbuild.yaml
. Я вижу, что вы получаетеHost key verification failed
ошибку при облачной сборке и добавляете SSH-ключи к . файл yaml мог бы это исправить, но вы также говорите, что не можете изменитьcloudbuild.yaml
. Почему вы не можете изменитьcloudbuild.yaml
?4.
gcloud app deploy
запустит новую свежую сборку (из первой сборки) с пустымcloudbuild.yaml
. Я думаю, что это основная проблема (которую вы не можете настроить,cloudbuild.yaml
чтоgcloud app deploy
использует). Если вы просматриваете комментарии к этой статье, у кого-то еще возникает такая же проблема. Хотя спасибо за ссылку.5. @zino вы когда-нибудь находили решение для этого?
Ответ №1:
Невозможно изменить cloudbuild.yaml
при запуске gcloud app deploy
. Вместо этого вы должны создать новый cloudbuild.yaml
и выполнить его с помощью gcloud builds submit --config=cloudbuild.yaml .
В этом случае gcloud app deploy
будет выполняться внутри cloudbuild.yaml
.
Я попробовал шаги, описанные для подключения к частному репозиторию Github и изменения значений, чтобы они соответствовали bitbucket, но не смог. Таким образом, я создал этот запрос функции для улучшения документации
Использование облачных репозиториев исходных текстов
Я полагаю, что, поскольку у вас уже есть зависимость от частного репозитория, тогда будет проще разместить на нем все ваше приложение. Учитывая это, вам придется клонировать весь репозиторий, запустить установку и развертывание npm.
В этом случае облачные репозитории с исходным кодом имеют встроенную функцию для прямого зеркального отображения в Bitbucket (общедоступные и частные репозитории).
1) Создайте в корневой папке вашего приложения a 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) Создайте триггер облачной сборки (чтобы новый код, отправленный в репозиторий, был автоматически развернут)
4) Отправьте корневую папку, содержащую app.yaml
и cloudbuild.yaml
, в репозиторий
Теперь он должен быть синхронизирован с облачными репозиториями исходных текстов и должен запустить облачную сборку для развертывания.
Ответ №2:
К сожалению, вам нужно будет вставить имя пользователя / пароль в package.json, но вы, вероятно, можете использовать конечную точку https:
"a-private-package": "git https://myusername:password@bitbucket.org/myusername/a-private-package.git"
Если это работает для вас, я бы посоветовал создать отдельную учетную запись на bitbucket и ограничить ее просмотр только в этом репозитории.