Google Cloud Build не подставляет значения в разделе секретов cloudbuild.yaml - PullRequest
2 голосов
/ 08 июля 2019

Я пытаюсь создать триггер Cloud Build, в котором секретные переменные среды шифруются облачной KMS и сохраняются в качестве переменной подстановки в Cloud Build. Таким образом, мой yaml для облачной сборки достаточно универсален и одинаков для всех сред, в которых мы развертываем.

Этот облачный билд работает нормально:

steps:
- name: 'ubuntu'
  entrypoint: 'bash'
  args: ['-c', 'echo "$$APP_NAME HAS A VALUE $$HELLO_WORLD"']
  env:
    - 'APP_NAME=${_APP_NAME}'
  secretEnv:
    - 'HELLO_WORLD'
secrets:
- kmsKeyName: 'projects/my-first-cicd-project/locations/europe-west1/keyRings/keyring-dev/cryptoKeys/key-backend'
  secretEnv:
    HELLO_WORLD: xxxxxxxxxxx

Шаги сборки производят эту строку журнала:

My App Name HAS A VALUE Hello there world!

Точно так, как задумано.

Теперь о том, что не работает, или, по крайней мере, я не могу приступить к работе. Допустим, я хочу сделать имя брелока динамическим. Затем я бы заменил «keyring-dev» в этом yaml на ${_KMS_KEYRING_NAME}. Это приведет к ошибке вроде:

invalid build: failed to check access to "projects/my-first-cicd-project/locations/europe-west1/keyRings/${_KMS_KEYRING_NAME}/cryptoKeys/key-backend"

Если я изменю строку base64 в YAML (начиная с «CiQAH ...») на переменную подстановки, например $ {_ KMS_VAR_HELLO_WORLD}, я получу эту ошибку:

failed unmarshalling build config cloudbuild.yaml: illegal base64 data at input byte 0

FYI: значение этой строки base64 не превышает максимальное количество символов 255 для значения переменной.

Так что я думаю, Cloud Build ничего не заменяет в разделе секретов cloudbuild.yaml. Кто-нибудь знает решение этой проблемы?

1 Ответ

0 голосов
/ 11 июля 2019

Это известное ограничение API.

  • Подстановки применяются к полю "строка", хотя в секретных значениях используется поле "байты". Таким образом, мы не можем применить к ним значения подстановки.
  • Что касается имен ключей и проекта, их изменение приводит к изменению зашифрованного содержимого, и содержимое не подлежит замене.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...