Система управления языковой сборкой

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

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

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

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

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

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

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

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

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

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

Ответы на вопрос(6)

Ваш ответ на вопрос