Более новые версии повышение:: поток имеет блокировки чтения-записи (1.35.0 и позже, по-видимому, предыдущие версии не работали правильно).
Они имеют имена shared_lock
, unique_lock
, и upgrade_lock
и воздействуют на shared_mutex
.
Этот вопрос не будет полным без ссылки на большую Матрицу функций CI (веб-архив) , в которой перечислены практически все варианты CI.
Но я думаю, что важно заранее определить объем того, что вы хотите включить в свою систему CI. Это будут просто сборки или вы собираетесь использовать другие элементы, такие как статический анализ, межпроектные зависимости, развертывание, функциональные тесты и т. Д. Чтобы помочь с этим планированием, я создал эту настенную диаграмму на Elements of Enterprise CI (PDF; регистрация не требуется). Пожалуйста, не позволяйте "E-word" сбить вас с толку; Я просто имею в виду вещи, выходящие за рамки базовой сборки CI с быстрой обратной связью. :)
Это не относится к конкретному инструменту, но перечисляет различные методы, которые вы можете рассмотреть на этапах планирования / оценки.
Ничего полезного в:
РЕДАКТИРОВАТЬ : Я пропустил, на что указал Джоник В чем разница между Hudson и CruiseControl для проектов Java? и Как и зачем мне настроить машину для сборки C #? . Вы найдете очень проницательные ответы. Другими словами, я думаю, что все вы
TeamCity имеет замечательную возможность, позволяющую разработчику выполнять персональную сборку перед фиксацией. Очень полезно!
CruiseControl.NET является дедушкой группы и, следовательно, немного устарел визуально и т. Д. Так как он существует уже некоторое время, Google знает, как исправить многие проблемы, с которыми вы столкнетесь.
По этим причинам (среди прочих) я использую CruiseControl.NET на работе и TeamCity дома и в своей жизни с открытым исходным кодом :)
Я полностью пользуюсь CruiseControl.NET. Мои команды используют его на работе, а я использую его дома для личных проектов.
В частности, CruiseControl.NET позволяет мне выполнять весь процесс CI: сборки, обновление версии, модульные и интеграционные тесты, архивирование исходного кода или выпуска кандидат, покрытие кода, даже развертывание в нашей тестовой системе на работе. Он обладает широкими возможностями настройки, хорошо работает с MSBuild и NAnt и даже имеет расширяемую архитектуру подключаемых модулей.
Он почти делает все, что мне нужно.
Самый большой недостаток: настройка иногда затруднительна и может занять время. Но как только это сделано, это сделано, и, как сказал другой плакат, мне нравится видеть сигнал "успешная сборка", потому что я знаю, что не только сама сборка работает,
CruiseControl.NET - это может быть немного сложно настроить (как и большинство систем CI), но с этим стоит продолжать. В настоящее время я настроил его для запуска модульных тестов по завершении сборки и для создания установщиков Wix по запросу. Как сказал Дэн, он выглядит немного устаревшим, но это не имеет значения, поскольку он предоставляет вам много информации, которую легко получить и легко прочитать.
Одно - убедитесь, что у всех ваших разработчиков установлен CC Tray , бегает и указывает на свои сборки. Приятно видеть сообщение «Еще одна успешная сборка» в панели уведомлений.
Мы используем ccnet в работе, что подходит для большинства наших нужд (у нас около 50 автоматизированных сборок), но для настройки и исправления требуется один человек.
Если вы начинаете с нуля, обратите внимание на Bamboo. Мы изучили его, и он выглядит многообещающе, но он не полностью соответствует нашим потребностям, и мы потратили слишком много времени на ccnet, чтобы переключиться на Bamboo сейчас.
С уважением,
Себастьян
Мы используем Hudson на работе. Основная причина в том, что его очень легко настроить. Вы можете напрямую запустить войну (это исполняемый jar) или развернуть ее в любом сервлет-контейнере. И вы готовы начать. Также Hudson поддерживает множество инструментов и расширяется через систему плагинов.
Я новичок в CI-сцене и сосредоточил свои усилия на CruiseControl.NET, используя NAnt и Ivy для создания своих .NET-проектов.
Я. обнаружил, что CruiseControl.NET очень легко адаптируется ко многим другим инструментам, таким как NCover / NUnit / и т. д. Все они подключаются к этому и объединяют результаты для объединенного процесса сборки.
Я буду изучать TeamCity в ближайшем будущем в собственных интересах, но я думаю, что CruiseControl выполняет свою работу хорошо, но только настолько хорошо, насколько хорошо вы сборочные скрипты! Если это штаны, то можно ожидать, что ваши сборки будут такими хорошими.
Но в целом CruiseControl.NET - хорошее решение, но мне еще предстоит выяснить, насколько хороши конкуренты в сравнении.
Сборка Team Foundation является вариантом, а также очень хорошо взаимодействует с Team Foundation Server. Это бесплатно, если у вас есть лицензия TFS.
Мы перешли с CruiseControl.NET на TeamCity в первую очередь из-за простоты настройки. TeamCity также имеет больше функций, но основная причина заключалась в том, что приятный веб-интерфейс проще в использовании, чем файлы конфигурации XML.
РЕДАКТИРОВАТЬ: Большинство задач TeamCity будет выполнять из коробки; при необходимости мы используем NAnt.
Я унаследовал сервер luntbuild. Не лучший вариант для .NET-проекта. Если вы обнаружите, что постоянно возвращаетесь к использованию сервера сборки для выполнения общих задач командной строки, значит, что-то не так. Хороший сервер сборки хорошо понимал выходные данные модульных тестов и задачи msbuild как нечто большее, чем непрозрачные команды, запускаемые при изменении системы управления версиями.
Мне нравится переходить в Team City.
Мы довольны Хадсоном . Мне не с чем сравнивать, но настроить и запустить его было просто. Прямо сейчас он собирает только проекты Win32 C ++ и установщик, но мы переносим его на Linux, и он должен работать и с этим.
Получает Subversion репозиториев без каких-либо проблем, рассылает предупреждения и т. Д. Пока нам это нравится. Опять же, у нас ограниченный опыт сравнений.