Я пытаюсь отправить сборку с локальной рабочей станции и получаю непонятную ошибку:
gcloud builds submit --config cloudbuild.yaml .
Creating temporary tarball archive of 149 file(s) totalling 121.5 MiB before compression.
Uploading tarball of [.] to [gs://***/source/1598211672.63-e76a3db01aa3435885a35cc3b94f0246.tgz]
ERROR: (gcloud.builds.submit) INVALID_ARGUMENT: Request contains an invalid argument.
То же самое cloudbuild.yaml
запускается правильно при запуске git push или github PR comment. Также, несколько месяцев назад я мог отправлять сборки таким образом.
gcloud auth list
показывает, что активная учетная запись — это та, которая определенно имеет роль Project Owner. Кроме того, я могу выполнять другие команды gcloud, такие как администрирование контейнера хранения, управление вычислительными экземплярами и т. д.
решение1
это работает так, как задумано, и это задокументированоздесь:
По умолчанию сборка возвращает ошибку, если отсутствует переменная подстановки или отсутствует подстановка. Однако вы можете установить опцию ALLOW_LOOSE, чтобы пропустить эту проверку.
также когда вы вызываете свою сборку с помощью триггера:
Если ваша сборка вызывается триггером, опция ALLOW_LOOSE устанавливается по умолчанию. В этом случае ваша сборка не вернет ошибку, если отсутствует переменная подстановки или отсутствует подстановка. Вы не можете переопределить опцию ALLOW_LOOSE для сборок, вызываемых триггерами.
решение2
я добавил
options:
substitution_option: 'ALLOW_LOOSE'
в cloudbuild.yaml, и сборка отправляется сейчас. По какой-то причине, если cloudbuild.yaml определил замены вроде:
substitutions:
_SLACK_MESSAGE_TEMPLATE: 'backend build succeeded"
cli cloudbuild submit возвращает ошибку, даже если я предоставляю _SLACK_MESSAGE_TEMPLATE
через --substitutions
.