cloudbuil.yaml не отменяет маршалинг при использовании значения в кодировке base64 для триггера сборки
На моем cloudbuild.yaml
определение, я имел обыкновение иметь secrets
раздел, чтобы получить значения среды из Google KMS. secretEnv
поля имели ключи, сопоставленные с "зашифрованными + base64-закодированными" значениями:
...
secrets:
- kmsKeyName: <API_PATH>
secretEnv:
<KEY>: <ENCRYPTED+BASE64>
Я попытался поместить это значение вместо замены, которая заменяется при использовании триггера сборки:
...
secrets:
- kmsKeyName: <API_PATH>
secretEnv:
<KEY>: ${_VALUE}
После этого я намерен сохранить файл универсальным.
Тем не менее, процесс сборки продолжает сбой с сообщением не удалось, демаршаллинг конфигурации сборки cloudbuild.yaml: недопустимые данные base64 на входном байте 0. Я проверил несколько раз, и значение base64 не было скопировано неправильно в подстановку на триггере.
Заранее спасибо.
2 ответа
https://cloud.google.com/cloud-build/docs/configuring-builds/substitute-variable-values
После прочтения Using user-defined substitutions
Раздел внимательно, я видел, что замены ограничены до 100 символов. Моя была длинной строкой из 253 символов.
Мне удалось воспроизвести ошибку, похожую на вашу (именно эта: "Не удалось запустить сборку: сбой демаршаллирования конфигурации сборки cloudbuild.yaml: json: не удалось отменить преобразование строки в значение Go типа map[string]json.RawMessage, это потому, что при использовании "). Но это было только тогда, когда моя переменная была чем-то вроде "name: content" вместо "name: content". Обратите внимание на пустое пространство, так важно.
Затем, возвращаясь к вашей точке зрения... пользовательские замены ограничены 255 символами (да, документы в настоящее время неверны, и об этом сообщалось). Но, например, если вы используете что-то вроде:
substitutions:
variable_name: cool_really_long_content_but_still_no_255_chars
И тогда вы делаете это:
steps:
- name: "gcr.io/cloud-builders/docker"
args: ["build", "-t", "gcr.io/$PROJECT_ID/$cool_really_long_content_but_still_no_255_chars", "."]
По-прежнему произойдет сбой, если "gcr.io/$PROJECT_ID/$cool_really_long_content_but_still_no_255_chars" на самом деле больше 255 символов, даже если ваш действительно длинный контент все еще не 255 символов. И эта ошибка появится в "Сведения о сборке"> "Журналы" вместо того, чтобы быть всплывающим окном, которое вы видите, когда нажимаете "Запустить триггер" в разделе "Построение триггеров" в Google Cloud Build, где и отображается тип сообщаемой ошибки, так как в этом случае регистрируется журнал. отображаются отключены в разделе Сведения о сборке.