Прежде всего: я новичок в облачной сборке. По сравнению с ранее использовавшимися методами, я нахожу это мучительной, незрелой и довольно раздражающей структурой. Бесконечное время тратит на то, чтобы заставить строителей работать, которые якобы работают из коробки (как, например, конструктор рулевого управления), и его ограничения удивительны и разочаровывают. Возможно, следующая проблема является хорошим примером:
Я хотел бы построить и изображение 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'?