Переменные среды NodeJS в Google App Engine и Travis CI - PullRequest
1 голос
/ 24 марта 2019

У меня есть приложение nodejs, и я использую Travis CI для непрерывной интеграции (запуска тестов и кодирования кода eslint). В моем проекте я использую некоторые переменные окружения в файле .env (ключ jwt, учетные данные mongodb и т. Д.)

Теперь я хочу настроить непрерывное развертывание после слияния ветки development в master. Для этого я уже исследовал документы Travis и другие руководства, которые были найдены в Google и провел некоторые настройки. Мой .travis.yml файл:

language: node_js
node_js: lts/*

cache:
  directories:
  - node_modules

script:
- yarn install
- yarn test
- yarn lint

notifications:
  email: false

deploy:
  provider: gae
  project: gae-project-name
  skip_cleanup: true
  keyfile: gae.json
  on: master

env:
  global:
  - secure: FlwzKDN8HXl1cuGBhtQwbm/GjbOVMcLfEhcJkKky+2aGIhe4BOSxjMynrCts7eM53a87GMnyJXsmFxKOeO+w8RYqHVixD77duejV2o+XkoZL1QWORqiSMyK8dvLNc+lqoJ1Lf+qFqOOQCq1TxJ4W5ycFs82/hJMlMuu8jf2fxGhENoDwcARivZ0Fsrq/4/JA+YS3JjG6dqr78M7VwhrKv4mk4M5wMHiacHpKPhHib56v//wwUtsgYnyVLV0n+CPBlm6yh2aWbESt+YLU4uar39gumpG5bzp4+F01qDrWQwi3ctArOYZ5sKHgSfHZDP4jOEcKF4pYWoUlMqkT1vInmK27jnoiiCjZzQ6sfLw2O8eTb104Rlbgae4ttY38KWNE5N5w37DvSV5VzkAZ5xJuXb4j+GF/YmDep5tKNFKgjyUkFeNb7gXY/9INaJlCMiw6guQ6dYRoQlHCbv43jLnxy75E5PHPKMKHkZEi1nfvCKBYgJhIZxZ1PEjWyrupvnt+eyV0IxC7e9vCr/Ih8GkUEPa/uFVHAhDzr5x11OxQogOlSbh+G1kytUS2LhUyxqnQeFwo0DZACML/GPW41r2iXmIwI+SZzSVuT/01ZTRJNiS56UfnncI/+q5rbHR/1muTArnEqbeCISOP0YN2cBF4MefelXuNmjy2IJop56vea/U=
  ...other variables

Такая конфигурация работает хорошо: если при выполнении команд test и lint ошибок не возникло, проект развертывается в Google App Engine.

Но я столкнулся с проблемой: я не могу безопасно экспортировать свой env. переменные для сборки GAE в процессе CI, так как для сборки он берет файлы из master репо, где .env отсутствует (файлы с конфиденциальными данными находятся в .gitignore). Таким образом, хотя приложение развернуто, оно не работает как env. переменные отсутствуют.

Я не нашел способа безопасно экспортировать переменные среды в GAE с Travis CI и надеяться на вашу помощь.

P.S. как вы можете заметить, я уже зашифровал мою среду. переменные в .travis.yml. Я сделал это для запуска тестов, которые использовали детали среды. Но я не знаю, как экспортировать их в процесс сборки GAE.

1 Ответ

1 голос
/ 01 июня 2019

Есть несколько способов решения этой проблемы.Я предпочитаю переменные ENV в ci, помещая их в каталог и удаляя впоследствии.

 echo "$ENV_DEVELOP" > ./.env
 echo $APP_ENGINE_TEST_KEY > /tmp/$CI_PIPELINE_ID.json

выполните что-то подобное во время конвейера, а затем удалите это после развертывания процесса из системы

 rm /tmp/$CI_PIPELINE_ID.json
 rm ./.env

также, если вы не хотите хранить кредиты где-либо в envs каналов, вы можете создать базовый https-сервер, который будет получать для вас образец env по запросу с аутентификацией для хэша коммита.

Вы можете создатьперехват для push-события, и при push-отправке отправьте хеш-коммит на ваш сервер и сохраните его в каком-то файле, а затем, когда наступит момент получения env, сверните из вашего конвейера прямо на сервер с deploy_commit_hash в качестве авторизации и проверьте сохраненные значения:) хорошего дня ^ _ ^

...