如何在谷歌云构建上升级节点 js 版本

Posted

技术标签:

【中文标题】如何在谷歌云构建上升级节点 js 版本【英文标题】:How to upgrade node js version on google cloud build 【发布时间】:2019-10-15 00:11:36 【问题描述】:

所以我最近将我的应用程序从 Angular 7 升级到了 Angular 8,我遇到了云构建 VM 的节点版本的问题,因为 Angular 8 需要节点版本 10.9 或更高版本,如下所示:

如何升级 Google Cloud VM 的节点版本,以免再次出现此错误?

谢谢。

【问题讨论】:

【参考方案1】:

根据最新documentation:

Cloud Build 使您能够使用任何公开可用的容器映像来执行您的任务。公众号node image from Docker Hub 预装了 npm 和 yarn 工具

这意味着我们可以使用 Docker Hub 中的任何 Node.js 标签。

就我而言,我将 cloudbuild.yaml 中的 - name: node 更改为 - name: node:lts,这有助于解决 Nest.js 应用程序构建步骤中的 Error: error:0308010C:digital envelope routines::unsupported 问题。

【讨论】:

【参考方案2】:

好的,经过数小时的谷歌搜索,事实证明,谷歌云平台提供了一个用于谷歌云构建的不同 npm 云构建器的注册表。

我本可以通过创建自己的 docker 镜像来解决我的问题,但我想避免这种情况,而使用默认的云构建器 docker 镜像。我更改了我的 cloudbuild.yaml 文件以包含以下构建器“gcr.io/cloud-builders/npm:node-10.10.0”而不是“gcr.io/cloud-builders/npm”,然后将节点版本更新为节点10.10.0 和神奇的 Angular 8 现在可以通过谷歌云构建来构建!

可以在此处找到来自云构建器存储库的特定节点版本:https://console.cloud.google.com/gcr/images/cloud-builders/GLOBAL/npm

【讨论】:

先生,您既是绅士又是学者。您节省了我数小时的谷歌搜索时间。 我们在哪里可以找到这些版本? 确实 - 似乎很难找到/猜测要使用的版本。 版本可以在这里找到:console.cloud.google.com/gcr/images/cloud-builders/GLOBAL/… 如下 staad 所述【参考方案3】:

此链接包含所有当前版本及其标签:

https://console.cloud.google.com/gcr/images/cloud-builders/GLOBAL/npm

例如在cloudbuild.yaml我用过

使用current标签。

【讨论】:

【参考方案4】:

好的,经过数小时尝试编译我的新应用并在 Google 上搜索,没有关于如何在 Google 应用引擎平台中使用新版本 Node.js 的明确信息。

我给自己构建自己的文件 cloudbuild.yaml 以在谷歌云平台上使用的任务,这是我的结果,我希望它对许多必须有同样错误的人有所帮助:

steps:

# Install node packages
- name: node:10.16.3
  entrypoint: npm
  args: ['install']

# Build productive files
- name: node:10.16.3
  entrypoint: npm
  args: [ 'run', 'build', '--prod' ]

# Deploy to google cloud app engine
- name: "gcr.io/cloud-builders/gcloud"
  args: ['app', 'deploy', '--version=demo']

您可以在GitHub这里访问原始文件

【讨论】:

谢谢乔斯,这个答案帮助我解决了我的错误。【参考方案5】:

根据他们的文档建议,您应该改用官方节点映像并指定 npm 入口点:

steps:
- name: node:10.15.1
  entrypoint: npm
  args: ['install']

https://github.com/GoogleCloudPlatform/cloud-builders/blob/master/npm/README.md

【讨论】:

以上是关于如何在谷歌云构建上升级节点 js 版本的主要内容,如果未能解决你的问题,请参考以下文章

如何在谷歌云上正确托管 node.js 应用程序?

谷歌云构建:在谷歌云存储库上克隆私有存储库失败

如何在谷歌云构建中将参数传递给 docker run

在谷歌云存储中使用带有签名 URL 的版本控制

无法在谷歌云功能中调试 Puppeteer 超时

如何在谷歌云功能中使用谷歌表格 API