Система управления языковой сборкой - PullRequest
5 голосов
/ 14 ноября 2008

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

а) Нам нужна была система сборки / тестирования
б) Мы должны написать наши
c) Мы можем попросить разработчика потратить неделю, выполнить его, и им не нужно будет прикасаться к нему снова

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

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

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

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

  3. Есть способ запустить тесты на выходе

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

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

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

Ответы [ 6 ]

1 голос
/ 18 ноября 2008

Адам

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

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

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

ура

Эрик

1 голос
/ 14 ноября 2008

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

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

1 голос
/ 14 ноября 2008

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

1 голос
/ 14 ноября 2008

Apache's Continuum и Atlassian's Bamboo встретятся # 2-6.

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

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

0 голосов
/ 15 ноября 2008

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

Общий формат TAP:

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

0 голосов
/ 15 ноября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...