【问题标题】:How to use private, self hosted NPM package with Google App Engine node, standard environment如何将私有、自托管的 NPM 包与 Google App Engine 节点、标准环境一起使用
【发布时间】:2019-08-16 03:54:11
【问题描述】:

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

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

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

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

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

我试过了:

向 Cloud Build 添加自定义 SSH 密钥。

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

问题:对于 GAE 标准,无法访问 cloudbuild.yaml;无法告诉 git 使用 SSH 密钥。

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

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

npm pack; npm install

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

真的可以吗?

【问题讨论】:

  • 你看过这个Article吗?它提到了使用 GAE 标准的 cloudbuild.yaml 并将 Bitbucket 链接到它。
  • 我没有,但会看看。我认为它不会像示例从构建中调用 gcloud app deploy 那样工作,这将启动另一个新构建,而在它之前的层中没有安装 SSH 密钥?
  • 好吧,这篇文章在他定义cloudbuild.yaml之后运行gcloud app deploy。我看到您从 Cloud Build 获得了 Host key verification failed 错误并将 SSH 密钥添加到 .yaml 文件可以解决此问题,但您还说您无法修改 cloudbuild.yaml。为什么不能修改cloudbuild.yaml
  • gcloud app deploy 将触发一个新的新构建(从第一个构建开始),cloudbuild.yaml 为空。我认为这是核心问题(您无法自定义gcloud app deploy 使用的cloudbuild.yaml)。如果您查看那篇文章的 cmets,其他人也有同样的问题。不过感谢您的链接。
  • @zino 你有没有找到解决办法?

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


【解决方案1】:

不幸的是,您需要在 package.json 中嵌入用户名/密码,但您可能可以使用 https 端点:

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

如果这对您有用,我建议您在 bitbucket 上创建一个单独的帐户,并将其限制为仅在该 repo 上查看。

【讨论】:

    【解决方案2】:

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

    我已经尝试了连接到私有 Github 存储库并更改值以使其适合 bitbucket 的步骤,但无法做到。因此,我创建了这个Feature Request for better documentation


    使用云源代码库

    我相信,由于您已经依赖于私有存储库,因此在其上托管整个应用程序会更简单。鉴于此,您将不得不克隆整个 repo,运行 npm install 和 deploy。

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

    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 进行部署。

    【讨论】:

      猜你喜欢
      • 2017-05-27
      • 1970-01-01
      • 2020-07-21
      • 2018-07-01
      • 2018-03-12
      • 1970-01-01
      • 2016-03-17
      • 2016-09-26
      • 2020-08-27
      相关资源
      最近更新 更多