如何在 Google App Engine 节点、标准环境中使用私有的、自托管的 NPM 包

zin*_*ino 8 google-app-engine npm google-appengine-node google-cloud-build

我有一个 NPM 包托管在私有 Bitbucket git 存储库(不在官方 NPM 注册表中)。

我在 package.json 中的“dependencies”键下有这个:

"a-private-package" git+ssh://git@bitbucket.org:myusername/a-private-package.git
Run Code Online (Sandbox Code Playgroud)

当我npm install使用 SSH 密钥在本地运行时,它可以工作。

但是当我用于gcloud app deploy部署到 node 的应用引擎标准环境时,我Host key verification failed从 Google Cloud Build得到了一个。

我试过了:

将自定义 SSH 密钥添加到 Cloud Build。

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

问题:无法访问cloudbuild.yamlGAE 标准;不能告诉 git 使用 SSH 密钥。

将我的私人 git 存储库添加到 Google Sources。

问题:无法访问cloudbuild.yamlGAE 标准;不能告诉 git 使用 SSH 密钥。

npm pack; npm install

问题:不保留回购历史/URL。

真的有可能吗?

Nah*_*ela 1

cloudbuild.yaml运行时无法修改gcloud app deploy。相反,您必须创建一个新的cloudbuild.yaml并使用执行它gcloud builds submit --config=cloudbuild.yaml .。在这种情况下,gcloud app deploy将在cloudbuild.yaml.

我已经尝试了连接到私有 Github 存储库并更改值以使其适合 bitbucket 所描述的步骤,但无法做到。因此,我创建了此功能请求以获得更好的文档


使用云源存储库

我相信,由于您已经依赖于私人存储库,因此在其上托管整个应用程序会更简单。鉴于此,您必须克隆整个存储库,运行 npm install 并部署。

在这种情况下,Cloud Source Repositories 有一个内置功能可以直接镜像到 Bitbucket(公共和私有存储库)。

脚步:

cloudbuild.yaml1)使用以下代码在您的应用程序根文件夹中创建a :

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"]
Run Code Online (Sandbox Code Playgroud)

2)将云源存储库连接到 Bitbucket

3) 创建一个Cloud Build 触发器(这样推送到存储库的新代码将自动部署)

4) 将包含app.yaml和 的根文件夹推cloudbuild.yaml送到存储库

它现在应该已同步到云源存储库,并且应该触发云构建以进行部署。