Пользовательская (или последняя) версия npm в Google Cloud Builder

Я использую Google Cloud Builder (GCB) для создания некоторого кода Node.js. Я использую новый npm package-lock.json особенность для закрепления зависимостей. Это лучше всего работает при использовании npm ci Команда, которая была введена в npm@5.7.1, К сожалению, все образы GCB npm в настоящее время настроены на npm@5.6.0

Как я могу использовать другую версию npm в GCB без создания собственного образа сборщика?

Изменить: это может быть не тот случай, когда все изображения GCB установлены на npm@5.6.0, но тот, который мне нужно использовать (node-8.11.0) установлен на эту версию.

1 ответ

Я решил проблему, создав свой собственный образ контейнера на основе образа 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: ['-']

После этого все работает как положено.

Другие вопросы по тегам