Передайте переменную среды в контейнер docker в circleCI - PullRequest
0 голосов
/ 20 апреля 2020

У меня возникли трудности с настройкой circleCI для проекта. У меня есть приложение, которое должно взаимодействовать с парой пользовательских изображений docker (и должно подключаться к портам, что исключает запуск пользовательских контейнеров в основном контейнере). Я хотел бы передать переменную окружения circleCI CREDENTIALS (содержащую учетные данные gcloud) в переменную окружения одного из docker изображений. Поскольку интерполяция там не поддерживается, я попытался использовать параметры, но все же все, что передается, это имя параметра, а не его значение.

Урезанная версия config.yml:

version: 2.1

orbs:
  gcp-cli: circleci/gcp-cli@1.3.0

jobs:
  test:
    parameters:
      gcloud_cred:
        type: env_var_name
        default: CREDENTIALS
    docker:
      - image: circleci/python:3.6.4
      - image: custom_image_1:latest
        environment:
          ENV: test
      - image: custom_image_2:latest
        name: database
        environment:
          GCLOUD_CREDENTIALS: << parameters.gcloud_cred >>

    working_directory: ~/app

    steps:
      - checkout
      - setup_remote_docker      
      - run:
          name: do the rest
          command: |
            sh do_all_stuff.sh
workflows:
  version: 2.1

  test:
    jobs:
      - test:
          gcloud_cred: CREDENTIALS

Я пробовал другие комбинации, такие как использование ${CREDENTIALS} в рабочем процессе и параметр типа строки, но каждый раз в custom_image_2 переменная env GCLOUD_CREDENTIALS просто имеет значение CREDENTIALS, и я очевидно, что не нужно жестко закодировать значение в конфигурацию.

Если кто-нибудь знает способ заставить эту работу или альтернативный обходной путь для передачи значения, он будет очень признателен.

...