Можно ли динамически генерировать теги в Google Cloud Build? - PullRequest
0 голосов
/ 21 марта 2020

Прежде всего: я новичок в облачной сборке. По сравнению с ранее использовавшимися методами, я нахожу это мучительной, незрелой и довольно раздражающей структурой. Бесконечное время тратит на то, чтобы заставить строителей работать, которые якобы работают из коробки (как, например, конструктор рулевого управления), и его ограничения удивительны и разочаровывают. Возможно, следующая проблема является хорошим примером:

Я хотел бы построить и изображение pu sh a docker. Согласно документации, изображения, которые должны быть переданы в репозиторий docker в конце (я использую GCR для этого), находятся в следующем разделе конфигурации в моем файле cloudbuild.yaml:

images:
  - 'eu.gcr.io/$PROJECT_ID/my-project:${_TAG}'
  - 'eu.gcr.io/$PROJECT_ID/my-project:latest'

Я могу установить подстановку _TAG вручную, используя раздел:

substitutions:
  _TAG: x.y.z

, но это означает, что мне приходится каждый раз вручную исправлять номер версии в этом файле. Еще хуже: если я разветвляюсь, мне нужно постоянно поддерживать номер версии. У меня есть проект python в этом случае, и он использует setuptools, версия, естественно, содержится в файле setup.py, и я могу разобрать его без проблем. Попытки проанализировать число в указанном c файле и использовать $ (cat VERSION) в разделе изображений не удаются, потому что система утверждает, что не может заменить часть $ (cat VERSION). Итак, как я могу перезаписать переменную _TAG внутри другого шага сборки так, чтобы она выглядела правильно в разделе 'images'?

1 Ответ

0 голосов
/ 24 марта 2020

Если вы используете триггерные сборки из облачных репозиториев, GitHub или Bitbucket, вы можете пометить свой коммит и использовать $TAG_NAME переменную замены по умолчанию .

 images:
      - 'eu.gcr.io/$PROJECT_ID/my-project:$TAG_NAME'
      - 'eu.gcr.io/$PROJECT_ID/my-project:latest'

На С другой стороны, если вы используете Cloud SDK для отправки сборки Cloud Build, вы можете предоставить значения с аргументом --substitutions :

gcloud builds submit [SOURCE] --config config.yaml --substitutions _TAG=x.y.z

Также я думаю, вы найдете это Непрерывная доставка в стиле GitOps с руководством по Cloud Build очень полезно. В нем объясняется, как создать конвейер непрерывной интеграции и доставки (CI / CD) на облачной платформе Google с помощью Cloud Build.

...