我通过基于 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: ['-']
完成此操作后,一切都按预期工作。