Cloudbees Play: как защитить учетные данные, используемые для тестирования и производства

Требование: безопасные учетные данные, используемые для тестирования и производственной среды.

Мой подход:

  1. Хранить параметры конфига в локальном файле (т.е. этот файл не должен быть в git-repo)
  2. Во время выполнения укажите расположение этого файла для PLAY с помощью переменной env APP_CONFIG_FILE или параметра командной строки.

Вот подробности проблемы, с которой я столкнулся. Пожалуйста, предложите любое рабочее решение для этого требования.

В тестовой среде (с использованием Jenkins):

  1. Сохраните файл в /private/myaccount/testing.conf
  2. Выберите «Смонтировать частный репозиторий WebDav Cloudbees Dev@cloud».
  3. В «Build -> Excute Shell» добавьте следующий «export APP_CONFIG_FILE=/private/myaccount/testing.conf»
  4. В Global.java приложения {lay, получите имя файла, используя следующее: String configFilename = Play.application().configuration().getString(APP_CONFIG_FILE);

Проблема: в наборе тестов APP_CONFIG_FILE получает значение null. Вопрос: Как передать переменную окружения для «теста воспроизведения»

В производстве:

  1. Сохраните файл в /private/myaccount/production.conf

Проблема: как получить доступ к частному репозиторию в RUN@cloud? Я не мог найти документацию о том, как это сделать.


person pradeep    schedule 12.02.2014    source источник


Ответы (2)


Во время выполнения лучше всего использовать параметры конфигурации.

Файловая система не сохраняется в облаке. Однако, если вы хотите получить доступ к временной файловой системе в облаке, вы можете получить путь, используя System.getProperty("java.io.tempDir").

Насколько я знаю, вы не можете получить доступ к DEV из RUN и наоборот. Я думаю, что вы должны управлять своими секретами независимо от DEV и RUN.

person felix    schedule 12.02.2014
comment
Просто чтобы уточнить, я не получаю доступ к DEV из RUN и наоборот. Это независимые среды. Я нахожу разные проблемы с каждой из этих сред, как я описал выше. Я поместил их в один поток, потому что моя цель для обеих сред одинакова, то есть защитить учетные данные. - person pradeep; 13.02.2014

параметры конфигурации вводятся как системные свойства, поэтому вы можете положиться на старый добрый System.getProperty() для получения значений рабочей конфигурации.

person nicolas de loof    schedule 12.02.2014
comment
Я получаю значение null для System.getProperty(APP_CONFIG_FILE) в среде тестирования. Я не уверен, почему play test не получает системное свойство. - person pradeep; 13.02.2014