2008-11-14 22 views
5

Несколько раз в моей карьере, я работал в программной группе, которая определила, что

а) Нам нужна сборка/тестовой системы
б) мы должны написать собственный
с) Мы может заставлять разработчика потратить неделю, сделать это, и им не придется снова трогать его.Язык Агностик Строить система управления

Каждый раз это приводило к созданию системы, которая, по-видимому, работает только для человека, который ее написал, и требует постоянного внимания , Я много раз проводил время, пытаясь найти инструмент, который я мог бы захватить, чтобы удовлетворить наши потребности, но приходите с пустыми руками. Как правило, такие инструменты, как этот сервер, имеют очень узкий рынок. Я снова нахожусь в необходимости чего-то подобного. Есть ли что-то там, или мы пишем его снова?

Вот мои требования в приоритетном порядке (последние немногие из них просто приятно иметь):

  1. Возможность обрабатывать сборки с несколькими проектами. У нас есть несколько компонентов, которые обеспечивают то, что другие компоненты используют и используют вещи от других компонентов. Разработчик должен иметь возможность проверять 1 компонент и вносить изменения, не создавая мир. Зависимости вне проекта должны автоматически вставляться. Таким образом, для этого важно иметь возможность выталкивать построенные объекты на сервер. Другим аспектом этого является возможность убрать все зависимости от локального каталога для разработки на дороге.

  2. Не волнуйтесь о том, как все будет построено. Это может показаться странным, но я не хочу, чтобы система сборки беспокоилась о компиляции моего кода. Есть уже отличные инструменты, которые делают это для каждого языка - Ant, CMake и т. Д. Я просто хочу сказать, что нужно делать, чтобы создавать вещи, и какой результат он должен заботиться. Таким образом, Project A может быть в Java, Project B может быть на C++, вы получаете идею.

  3. Есть какой-нибудь способ для запуска тестов на выходе

  4. Показать текущие результаты сборки/тестирования на веб-странице

  5. по электронной почте результаты

  6. Интеграция с RCS (мы используем SVN)

+0

Я думаю, что вы будете иметь, чтобы выяснить, почему такие вещи, как скрипты и/или Ant, MSBuild и т.д. не дотягивают. Вы также указываете, что хотите хранить двоичные файлы в управлении версиями или, по крайней мере, на сервере сборки. Почему бы просто не разоблачить результаты сборки машины на ftp-сайте - с его меткой/ревизией. – Tim 2008-11-14 20:41:51

ответ

1

Адам,

я заметил Муравейник ответ, и как Anthiller, я должен сказать, что он был прав. Одна из вещей, которую Anthill действительно делает, позволяет вам определять зависимости между проектами. Версия с открытым исходным кодом ориентирована на Java, в то время как коммерческий инструмент является агностиком языка, несмотря на название.

Это позволит вам определять зависимости между проектами (или частями проектов) на основе критериев, таких как статус (последняя успешная сборка или последняя версия, одобренная QA или ...) и/или номер сборки или ветви. Это то, чем мы гордимся. Во время сборки сборники артефактов перемещаются между серверами, кеши хранятся для справки по производительности, и все эти хорошие вещи.

Что касается других критериев:
2) Anthill (как и большинство инструментов автоматизации сборки) будет запускать ваши существующие скрипты сборки, как правило, без изменений.
3) Тесты (опять ваши существующие технологии) могут выполняться во время сборки или против существующей сборки.
4) Результаты представлены на веб-сайте (опять-таки типичный средств автоматизации сборки)
5) Email легко
6) Мы имеем более чем дюжины SCM интеграции, а также использовать SVN внутри так, что интеграция естественно один из наших лучших ,

веселит,

Эрик

+0

Спасибо Эрик - я проверю это – AdamC 2008-11-25 19:46:10

1

апача Continuum и Atlassian-х Bamboo встретится с № 2-6.

Выполнение # 1 в языке-агностическом способе является немного более жестким.

Maven и Ivy оба работают для зависимостей Java.

1

Я использовал Visual Build, который я нашел очень полезным способом связать все эти разрозненные компиляторы, тестовые бегуны и другие вещи вместе в гибкую систему. Подумайте о Планировщике Windows на основных стероидах. Это, в основном, большой механизм выполнения задач, с готовыми задачами, включенными во все основные коммерческие системы управления версиями, компиляторы и т. Д. Он может создавать папки, отправлять электронные письма и множество других вещей с довольно простым пользовательским интерфейсом.

1

Я исследовал, но никогда не использовал AntHill. Есть версия open source и commercial version.Я думаю, что он будет делать то, что вы хотите, но было бы полезно, если бы вы дали больше требований, например, нужно ли автоматизировать ночные сборки, что вы используете для контроля источника и т. Д.

В моей нынешней компании я написал мой собственный. То, как мои работы - это именно то, что вы говорите; он не знает, как создать программное обеспечение. Вы даете ему кучу запущенных командных строк (хранимых в базе данных), они захватывают значение выхода и stdout и stderr, а если значение выхода отличное от нуля, оно помечает сборку как сломанную. У нас есть около 8 проектов, которые могут создавать и запускать модульные тесты. Все они начинаются, вытирая каталог и получая исходный источник из подрывной деятельности.

0

Вот краткий перечень инструментов, которые работают с .NET и другими языками: Automated Build Tools

0

я рекомендовал бы, что если вы собираетесь написать систему тестирования, которые вы считаете, используя Test Anything Protocol. TAP используется в течение 20 лет и широко используется, особенно для модулей CPAN. Общий формат

ТАР является:

1..N 
ok 1 Description # Directive 
# Diagnostic 
.... 
ok 47 Description 
ok 48 Description 
more tests.... 

Например, выход тестового файла может выглядеть так:

1..4 
ok 1 - Input file opened 
not ok 2 - First line of the input valid 
ok 3 - Read the rest of the file 
not ok 4 - Summarized correctly # TODO Not written yet 

Перейти к testanything.org для получения дополнительной информации.

Примеры копируются из http://en.wikipedia.org/wiki/Test_Anything_Protocol

Смежные вопросы