Как установить переменную окружения в Circle CI для использования в приложении как process.env.FOO - PullRequest
0 голосов
/ 19 апреля 2020

Например, я настроил name: FOO value: 'bar'.

Я проверил, что значение ключа работает. Потому что работает :

jobs:
  build:
    docker: 
      - image: circleci/node:10.17.0
    steps:
      - run: |
          node something $FOO

Однако следующее не работает:

Теперь, когда я разверну и попробую его использовать в моем приложении он возвращает undefined:

console.log(process.env.FOO); // returns undefined

Я попытался установить его под ключом «environment» в файле config.yml:

jobs:
  build:
    docker: 
      - image: circleci/node:10.17.0
      environment:
        - FOO # note, don't use $FOO
    steps:
      - run: |
        node something $FOO
        ssh $MACHINE -- 'cd /home/ && docker build -t myApp . docker restart myApp'

Но все равно без изменений.

Должен ли я передать переменные в сценарий сборки в команде s sh?

Есть идеи?


обновление на основе подсказки Делены

Сохраняется ./circle-ci/config.yml как:

jobs:
  build:
    docker: 
      - image: circleci/node:10.17.0
      environment:
        FOO: $FOO

Затем в файле docker:

myApp:
  environment:
    - FOO

Примет ответ, когда сборка зеленая

1 Ответ

0 голосов
/ 19 апреля 2020

Похоже, что вы пытаетесь получить доступ к переменной среды из приложения, которое выполняется в контейнере Docker, но вы не устанавливаете переменную среды в контейнере.

Если это так Вы можете проверить Как установить переменную среды в работающем docker контейнере , но похоже, что вам придется остановить контейнер и перезапустить его снова с переменной среды.

Вы можете сделать что-то вроде:

ssh $MACHINE -- 'cd /home/ && docker build -t myApp && docker stop myApp && docker run -e "FOO=$FOO"'

Также ознакомьтесь с разделом ENV (переменные среды) в документах docker run.

...