2016-11-27 1 views
2

У меня есть приложение Java, которое служит основой для всего нашего проекта, и все наше программное обеспечение полностью открыто. Проблема заключается в следующем:Интегрируйте личные файлы для кода приложения с открытым исходным кодом в конвейере devops

Мы используем несколько ключей API от Google, SendGrid до ключей аутентификации базы данных MySQL. Все они хранятся в файле application.properties. Код, который мы имеем на GitHub, отличается тем, что эти файлы отсутствуют. Обходной путь в настоящее время заключается в том, что они доступны только на дистанции Heroku, через которую мы развертываем в Heroku. Всякий раз, когда мы хотим развернуть изменение, мы переключаемся на ветвь герою, вытаскиваем изменения из мастера и переустанавливаем эту ветвь и, наконец, нажимаем ее.

Мы скоро переходим к cycle.io, запускаем контейнерные приложения, поэтому в основном мы переходим на Docker. Мы собираемся подключить приложение, а экземпляр MySQL Docker развернут и общается друг с другом. Цитировать по Цикл

Окружающая среда позволяет организовать и установить связь между вашими контейнерами . Когда вы нажимаете «начать» на контейнере из среды, , сеть автоматически настраивает и уведомляет о любых других контейнерах в пределах его присутствия.

Cycle.io позволяет автоматически связывать либо изображения с Docker Hub или иметь репозиторий с Dockerfile. Он выбирает его, а затем автоматически развертывает.

Мой вопрос: как мне интегрировать эти личные файлы в конвейер для построения кода-построения-тестирования?. Наивно, я думал о каком-то пути, который «инжектирует» эти файлы перед тем, как строить. Я не знаю, как это сделать. Моя текущая идея для развертывания Docker была

  • Построить докер изображение на моей локальной системе, которая работает
  • подтолкнуть ее к Docker Hub частному хранилище и позволяет cycle.io, которая интегрируется с Docker ступицей, чтобы поднять его оттуда
  • (Я хочу интегрировать Тэвиса/CI тоже ИДК как)

есть ли ЯВНАЯ, или из-за отсутствия другого слова, PRO способ сделать это? Мы - группа студентов, которые хотят следовать лучшим практикам, и это приложение будет масштабным. Мы получили полную оплату за развертывание и прохождение доменных имен и т. Д., Но на самом деле у нас нет каких-либо экспертных рекомендаций.

+1

Вы не можете сделать это должным образом, если cycle.io не позволяет вам настроить * некоторые виды секретных данных для вашей среды.Учитывая это, легко использовать большие секреты. Это может быть ключ шифрования, необходимый для дешифрования локальных файлов, пароль, необходимый для доступа к базе данных, и т. Д. Без какой-либо поддержки от цикла.io нет возможности * сделать это безопасно, поэтому они должны предоставить * что-то * , Если у вас есть личные учетные данные док-станции, вы можете использовать свой приватный репозиторий докеров, но я бы не стал супер комфортно полагаться на их безопасность. –

ответ

1

Цикл позволяет настраивать переменные среды для каждой среды и обрабатывать их так же, как обрабатываются переменные среды на вашей локальной машине. Это означает, что вы можете настроить, например, переменную SENDGRID_API_KEY, установить ее в цикле на свой ключ API (перейти в среду -> Контейнер -> Конфигурация), и ваш код будет читать эту переменную напрямую.

Вы можете объявить переменные окружения, которые существуют в вашем файле dockerfile (ENV SENDGRID_API_KEY=""), и цикл будет предварительно заполнять их, чтобы вы могли просто заполнить поле и нажать «Сохранить». Вам нужно будет перезапустить контейнер, но тогда ваши переменные должны быть доступны вашей программе, без необходимости управлять перемещением файлов.

+0

Только то, что мне нужно. Благодаря! – bholagabbar