Travis CI — Использование переменных среды репозитория в .travis.yml

Я хочу объявить переменные среды в настройках моего репозитория Travis CI и использовать их в моем файле .travis.yml для развертывания приложения и публикации уведомления о сборке в Slack.

Я установил переменные среды в настройках репозитория Travis CI следующим образом:

Переменные среды репозитория Travis CI

Мой файл .travis.yml выглядит следующим образом:

language: node_js
node_js:
  - '0.12'
cache:
  directories:
    - node_modules
deploy:
  edge: true
  provider: cloudfoundry
  api: $CF_API
  username: $CF_USERNAME
  password: $CF_PASSWORD
  organization: $CF_ORGANIZATION
  space: $CF_SPACE
notifications:
  slack: $NOTIFICATIONS_SLACK

Когда я добавляю значения в файл .travis.yml как есть, все работает, как и планировалось.

Однако, когда я пытаюсь сослаться на переменные среды, установленные в репозитории, я не получаю уведомления Slack о состоянии сборки, и развертывание завершается сбоем.

Правильно ли я следую этому процессу или есть что-то, что я наблюдаю?


person Simon Finney    schedule 16.11.2015    source источник
comment
Что произойдет, если вы добавите before_script: echo $CF_USERNAME в свой файл .travis.yml? Печатается ли содержимое переменной env в журнале сборки?   -  person Dominic Jodoin    schedule 17.11.2015
comment
Правильно, он отображает переменную окружения!   -  person Simon Finney    schedule 17.11.2015
comment
Должен ли я использовать echo $ENVIRONMENT_VARIABLE вместо этого?   -  person Simon Finney    schedule 18.11.2015


Ответы (1)


Я думаю, что, вероятно, слишком рано в последовательности Travis CI для чтения ваших переменных среды.

Я бы предложил зашифровать их с помощью travis инструмента командной строки.

E.g.

$ travis encrypt
Reading from stdin, press Ctrl+D when done
username
Please add the following to your .travis.yml file:

secure: "TD955qR6qvpVIz3fLkGeeUhV76deeVRaLVYjW9YjV6Ob7wd+vPtACZ..."

Pro Tip: You can add it automatically by running with --add.

Затем я скопировал/вставил результат secure: "TD955qR6qvpVIz3fLkGeeUhV76d..." в соответствующее место в файле .travis.yml:

language: node_js
node_js:
  - '0.12'
cache:
  directories:
    - node_modules
deploy:
  edge: true
  provider: cloudfoundry
  api:
    secure: "bHU4+ZDFeZcHpuE/WRpgMBcxr8l..."
  username:
    secure: "TD955qR6qvpVIz3fLkGeeUhV76d..."

Подробнее о том, как шифровать конфиденциальные данные в Travis CI, можно узнать здесь.

Надеюсь это поможет.

person Dominic Jodoin    schedule 18.11.2015
comment
Должен ли я также указать значение? - person Simon Finney; 18.11.2015
comment
Вы должны сделать travis encrypt + <enter> в каталоге вашего репозитория, затем ввести значение, за которым следует <Ctrl+D>. Это выведет значение, начинающееся с secure: .... - person Dominic Jodoin; 18.11.2015