Да, это риск для безопасности иметь учетные данные в системе контроля версий. Это позволяет вашим разработчикам делать практически все, что они хотят. Такие нормативы, как HIPAA в медицине или PCI для электронной коммерции или SoX для публичных компаний США, не одобрят этого. Ваш системный администратор также разумен.
Основная стратегия заключается в том, чтобы вывести эту конфигурацию на внешний уровень и развернуть процесс развертывания для данных, специфичных для среды.
Наличие этой информации на рабочем сервере само по себе является хорошим, но не лучшим решением. Это хорошо подходит, когда у вас есть только один целевой сервер. Когда у вас есть куча, возникает головная боль от обслуживания. Всякий раз, когда env. изменения конкретных данных, они должны быть обновлены на каждом сервере. Вы также должны быть уверены, что только env. конкретная информация, содержащаяся в тех или иных изменениях, которые разработчики вносят в ранние среды, может не передаваться системному администратору для изменения во время развертывания, что приводит к ошибкам развертывания на рабочем месте.
Я думаю, что именно здесь Хадсон подводит вас с точки зрения непрерывной доставки. Некоторые из коммерческих инструментов, в том числе uBuild / AnthillPro моей компании, формально отслеживают различные среды и позволяют sys-admin безопасно настраивать производственные учетные данные, а разработчики настраивают учетные данные dev с помощью этого инструмента. Аналогичным образом, инструменты автоматизации выпуска приложений, такие как uDeploy , которые будут извлекать сборки из Hudson и развертывать их, должны иметь такую конфигурацию для каждой среды.
В этих сценариях большинство файлов property / xml имеют общую конфигурацию, и механизм развертывания заменяет env. конкретные данные в процессе развертывания.
Добавление нового инструмента только для этой проблемы, вероятно, излишне, но базовая стратегия вывода информации, специфичной для среды, в центральное место, где ее можно найти во время развертывания, может сработать. Поскольку вы работаете в магазине Maven, вы можете подумать о том, чтобы сохранить часть этого в своем репозитории Maven в области, закрытой для доступа только для операций. Затем извлеките последнюю конфигурацию для соответствующей среды во время развертывания.
У вас есть несколько вариантов здесь. Подумайте, как все меняется в зависимости от окружающей среды; что зависит от сервера; что нужно защитить, что меняется со временем на стороне разработчика и т. д. И, пожалуйста, пожалуйста, сядьте со своим системным администратором и вместе разработайте решение. У каждого из вас есть понимание, которого нет у другого, и конечное решение будет лучше для сотрудничества.