Наше программное обеспечение основано на Linux и платформах окон. В зависимости от предпочтения разработчика вклад разработан и протестирован на любой платформе и затем предан нашему репозиторию подверсии. Затем оказывается, что вклад не основывается на другой платформе, и фиксация должна быть сделана. Закрепление на другой платформе может снова повредить сборку на исходной платформе и так далее.
Я видел бы, что вклад создается (и протестированная регрессия) на другой платформе также прежде чем быть фиксировавшим. У нас есть непрерывный сервер сборки (CruiseControl), но тот сервер сборки из репозитория. Я ищу решение, где непрерывный сервер сборки основывается на другой платформе как на проверке перед фиксацией и затем фиксирует материал, если сборка и тест успешно выполняются.
Какие-либо предложения?
Matheiu Godlewski сделал хорошее предложение в CruiseControl wiki
Если Вы комбинируете его предложение с элементом вето, я думаю, что Вы должны быть установлены.
Предварительно протестированные дескрипторы Teamcity фиксируют, Вы можете делать что-то с новыми функциями объединения в цепочку сборки в 4,0 (http://www.jetbrains.com/teamcity/features/newfeatures.html). Агенты являются кросс-платформенными и могут быть настроены, чтобы только выполнить конкретные биты сборки, так мог возможно быть настроен, чтобы только выполнить подмножество тестов.
Обратите внимание, что я на самом деле не сделал этого :)
Могло бы быть легче иметь два ответвления, тот, где люди регистрация и другой, который они объединяют свои изменения в то, после того, как они передали непрерывную интеграцию.
Мы использовали сделанную на заказ буровую установку и тестовую буровую установку, которая могла удаленно развернуться к нескольким Ose (и нескольким продуктам Базы данных на нескольких Ose). Это было сделано как ночная сборка с правилом, что Вы исправляете свои ошибки следующим утром.
Нет совершенно непрерывный затем, но это - потенциально большая работа, чтобы сделать на рычаге перед фиксацией. Особенно, если Ваш репозиторий управления исходным кодом блокирует затронутые файлы на время выполнения рычага перед фиксацией.
Я думаю, что существует различие между непрерывным интеграционным тестом, который работает в течение дня, на фиксацию, и теста системной интеграции, который работает ночью.
Douglas Leeder предложил ответвление "интеграции" - хорошая вещь об этом состоит в том, что возможно автоматизировать. Если тесты передают - объединяются с 'соединительной линией'.
Некоторые системы управления версиями (например, bzr/hg/git) делают это легче, чем другие, но это возможно на большинстве.