Я парень .net и поэтому работаю с вещами в мире Windows ... сказав, что технологии, с которыми я ежедневно работаю для управления процессами сборки, пришли из вашего мира! (Технологии Linux / java указаны в скобках, но я также включил их эквивалент для программ чтения с Windows). Я использую CruiseControl.NET ( CruiseControl ), VisualSVN ( SVN ), Черепаха и NAnt ( Ant ), чтобы позаботиться обо всех моих потребностях в сборке.
Все мои сборки обычно автоматически выдвигаются и помечаются во время регистрации. Это делается с помощью CruiseControl, поскольку он контролирует мой источник контроля (SVN или SubVersion). Когда CruiseControl (CC) увидит, что новый код был зарегистрирован, он выполнит проект CC, который в свою очередь вызывает скрипт Ant на сервере сборки.
Скрипт Ant делает несколько вещей для меня в общей сборке. Он проверит копию последнего кода и отправит ее на сервер сборки. Затем он соберет код, чтобы убедиться, что все по крайней мере компилируется. Затем он устанавливает чистую копию моей базы данных и выполняет любые сценарии sql для построения этой базовой базы данных до текущей версии. Затем я запускаю все свои проекты модульных тестов. Затем я запускаю интеграционные тесты, которые, помимо прочего, проверяют мой уровень репозитория, чтобы убедиться, что код по-прежнему выровнен с моей серверной частью (я обычно использую ORM в своих проектах, поэтому они редко не синхронизированы ... но это хороший шаг в процессе). После того, как все тесты пройдены (или не пройдены), я возвращаю базу данных в чистое состояние и выполняю сценарии, чтобы привести ее к текущей версии (это важно, так как она предоставляет команде чистую базу данных для разработки по щелчку мыши). кнопки). Если сборка прошла успешно, я разверну код на сервере разработки (у меня также есть развертывание одним щелчком на промежуточных и рабочих серверах). Если вы хотите пометить свою базу кода при каждой регистрации, вы можете сделать это и здесь.
Как только все это будет выполнено, я хотел бы провести некоторый анализ моего кода, используя NDepend , NDoc и NCover . NDepend - это инструмент для анализа кода, который позволяет убедиться, что все правильно с точки зрения архитектуры, что стандарты именования являются такими, какими они должны быть, и ОЧЕНЬ БОЛЬШЕ. NDoc извлекает все комментарии кода и создает документацию в стиле MSDN для моего кода. NCover сообщает мне, правильно ли я выполняю модульные тесты для своего кода.
Затем у меня есть специальная задача Ant, которую я написал, которая анализирует весь мой код для различных тегов // TODO и // CodeDebt, чтобы сгенерировать еще один отчет, чтобы сообщить мне (обычно в конце спринта), насколько дерьмо накапливается в моей базе кода. Это может быть учтено в следующем спринте.
Все эти отчеты либо включены в электронное письмо о сборке, которое отправлено, либо связаны слишком соответствующим образом.
Имейте в виду, что все вышеперечисленное происходит при каждой регистрации ... и никто не должен нажимать даже одну кнопку! Это настоящая непрерывная интеграция, и она должна быть целью каждого мастера сборки.
CruiseControl имеет веб-консоль, которая также позволяет пользователям, не являющимся веб-разработчиками (кто-либо на самом деле), входить и выполнять этот push без необходимости проверять код ... называемый форсированием сборки.
Учитывая эту структуру, вы также можете легко откатить пуш, пока все находится под контролем версий. Вам понадобится другой скрипт Ant, который будет выполнять тот же процесс, но с дополнительной первой задачей, которая потребует получить последнюю версию кода, а не самую последнюю, для которой будет выполняться процесс сборки. Все задачи Ant можно повторно использовать с другой целью выполнения.