Google Cloud Builder中的自定义(或最新)npm版本

Google Cloud Builder中的自定义(或最新)npm版本,npm,google-container-builder,google-cloud-build,Npm,Google Container Builder,Google Cloud Build,我正在使用GoogleCloudBuilder(GCB)构建一些Node.js代码。我正在使用npm新的package lock.json特性来锁定依赖项。使用npm ci中引入的npm@5.7.1。不幸的是,所有这些当前都设置为npm@5.6.0 如何在GCB中使用不同的npm版本而不创建自定义生成器映像 编辑:并非所有GCB图像都设置为npm@5.6.0,但我需要使用的(node-8.11.0)已设置为此版本。我通过基于cloud builder的npm映像创建自己的容器映像来解决此问题 D

我正在使用GoogleCloudBuilder(GCB)构建一些Node.js代码。我正在使用npm新的
package lock.json
特性来锁定依赖项。使用
npm ci中引入的
npm@5.7.1
。不幸的是,所有这些当前都设置为
npm@5.6.0

如何在GCB中使用不同的npm版本而不创建自定义生成器映像


编辑:并非所有GCB图像都设置为
npm@5.6.0
,但我需要使用的(
node-8.11.0
)已设置为此版本。

我通过基于cloud builder的npm映像创建自己的容器映像来解决此问题

Dockerfile:

FROM gcr.io/cloud-builders/npm:node-8.11.0

ARG NPM_VERSION
RUN npm i -g npm@${NPM_VERSION}

ENTRYPOINT ["npm"]
cloudbuild.yaml:

steps:
- name: 'gcr.io/cloud-builders/docker'
  args:
  - 'build'
  - '--build-arg=NPM_VERSION=latest'
  - '--tag=gcr.io/$PROJECT_ID/npm:latest'
  - '.'

images:
- 'gcr.io/$PROJECT_ID/npm:latest'
我运行了
gcloud builds submit--config=cloudbuild.yaml
来自包含
Dockerfile
cloudbuild.yaml
文件的同一文件夹。这将构建提交给GCB,并在我的项目的容器注册表中发布了一个图像。然后,我在另一个项目的
cloudbuild.yaml
中使用了此图像,该项目需要升级的npm版本,如下所示:

steps:
- id: frontend_install
  name: 'gcr.io/$PROJECT_ID/npm:latest'
  args: ['ci']
  waitFor: ['-']
完成此操作后,一切正常