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