Я решил использовать следующий шаблон после прочтения семантического управления версиями на http://semver.org/. Однако у меня есть некоторые нерешенные проблемы в плане автоматизации и интеграции инструментов SDLC.
Version Pattern:
major.minor.revision.build
такой, что;
Major: существенные изменения, должны быть увеличены вручную.
Незначительные: незначительные изменения, должны увеличиваться автоматически, всякий раз, когда новая система или расширение существующей функции решается в системе отслеживания ошибок.
Редакция: Изменения, не влияющие на незначительные изменения, должны увеличиваться автоматически при каждом устранении ошибки в системе отслеживания ошибок.
Предположим, что разработчики никогда не фиксируют источник, если проблема не была решена в системе отслеживания проблем, а в этой конфигурации системой отслеживания проблем является JIRA. Это означает, что по умолчанию существуют ошибки, улучшения и новые функции как типы проблем, помимо задач.
Кроме того, я добавляю инструмент непрерывной интеграции в эту конфигурацию и предполагаю, что это бамбук (кстати, я никогда раньше не использовал бамбук, я использовал Hudson), и я использую Eclipse IDE с плагином mylyn и плюс Проект является проектом Maven (веб).
Теперь я хочу объяснить, что я хочу сделать, иллюстрируя следующий сценарий. Аналитик (A) открывает проблему (I), которая является новой функцией, связанной с проектом Maven (P). Как разработчик (D), я получаю электронное письмо о проблеме и открываю задачу через интерфейс Mylyn в Eclipse. Я понимаю и разрабатываю новую функцию, связанную с проблемой (I). Предположим, я разработчик, ориентированный на тестирование, поэтому я написал тесты Unit, DBUnit и User-Acceptance (например, с использованием Selenium) соответственно. Наконец, я фиксирую изменения в системе контроля версий. Я думаю, что все остальное должно циклически автоматически, но я не знаю, как мне этого добиться? Авто-циклическая часть выглядит следующим образом:
Система управления исходным кодом должна иметь скрипт post-hook, который запускает инструмент непрерывной интеграции для построения проекта (P). При сборке на соответствующем этапе необходимо запустить тестовый код и сгенерировать их отчеты. Пользовательский приемочный тест должен быть выполнен на выделенном сервере (например, jboss или Tomcat). Порядок этого приемочного теста должен быть на сервере, запустить тест UA, затем сгенерировать отчеты о тестировании UA и отключить сервер. Если все эти шаги были успешно завершены, необходимо выполнить управление версиями. В части управления версиями плагин Maven или что-то еще должно принимать число проблем, решаемых с помощью системы отслеживания ошибок, и увеличивать связанные фрагменты версии (вспомогательные и ревизионные), наконец добавляя номер сборки. Фрагменты версии могут быть сохранены в файле манифеста, чтобы отобразить его в пользовательском интерфейсе. Наконец, что не менее важно, инструмент CI должен развернуть его в тестовой среде. Это все автоциклические процессы, которые я хочу.
Развертывание артефакта в производственной среде должно выполняться автоматически или вручную?