Пользовательская (или последняя) версия 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: ['-']
После этого все работает как положено.