google-app-engine - 如何将私有(private)的、自托管的 NPM 包与 Google App Engine 节点、标准环境一起使用

标签 google-app-engine npm google-cloud-build google-appengine-node

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

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

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

当我使用 SSH key 在本地运行 npm install 时,它会起作用。

但是,当我使用 gcloud app deploy 部署到 node 的 App Engine 标准环境时,我从 Google Cloud Build 收到了 Host key verification failed

我试过:

将自定义 SSH key 添加到 Cloud Build。

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

问题:无法访问 GAE 标准的 cloudbuild.yaml;无法告诉 git 使用 SSH key 。

将我的私有(private) git 存储库添加到 Google 资源。

问题:无法访问 GAE 标准的 cloudbuild.yaml;无法告诉 git 使用 SSH key 。

npm 包; npm 安装

问题:不保留 repo 历史/URL。

这真的可能吗?

最佳答案

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

我已经尝试了描述的连接到私有(private) Github 存储库并更改值以使其适合 bitbucket 的步骤,但未能成功。因此,我创建了这个 Feature Request for better documentation


使用云源存储库

我相信,由于您已经依赖于私有(private)存储库,因此在其上托管整个应用程序会更简单。鉴于此,您将必须克隆整个存储库,运行 npm 安装和部署。

在这种情况下,Cloud Source Repositories 具有 mirror directly 的内置功能到 Bitbucket(公共(public)和私有(private) repo )。

Steps:

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) Connect Cloud Source Repositories to Bitbucket

3) 创建一个 Cloud Build Trigger (因此推送到 repo 的新代码将自动部署)

4) 将包含 app.yamlcloudbuild.yaml 的根文件夹推送到 repo

它现在应该已同步到 Cloud Source Repositories,并且应该会触发 Cloud Build 以进行部署。

关于google-app-engine - 如何将私有(private)的、自托管的 NPM 包与 Google App Engine 节点、标准环境一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55345734/

相关文章:

docker - 未设置失败的JAVA_HOME的CloudBuild faSTLane任务,并且在PATH中找不到 'java'命令

google-app-engine - Spring MVC 3.2 Backbone.js 帖子

java - 使用 objectify 检查唯一的玩家

java - 尝试从 google url 获取 html 文本,但出现错误 401

node.js - “npm update -g”, “npm upgrade -g”, “npm install -g npm”和 “n stable”有什么区别?

laravel - 在 Laravel 应用程序中使用 NPM 包时遇到问题

mysql - 为什么选择二进制 (16) PK 而不是复合 key ?

kubernetes - 更新镜像时,Google Cloud Build无法找到kubernetes部署

python - GAE 中的引用 ID

google-app-engine - 在 Google Cloud Build 中上传构建文件夹