Как я могу ускорить наши сборки TeamCity? - PullRequest
4 голосов
/ 14 марта 2011

Размер нашего репозитория за последние месяцы значительно увеличился, а сборка TeamCity стала очень медленной.

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

Мы просто запустили базовую бесплатную версию и у нас есть 3 агента.Наш режим проверки VCS - «Автоматически на сервере».Оба файла решения - C #, и мы используем скрипт MSBuild.

Мне понравился раздел правил извлечения в конфигурации сборки, но я прочитал, что он не будет работать, потому что он выбирает весь коди ТО применяет правила, которые побеждают объект, если вы спросите меня.

Сборка теперь занимает около 1 часа, но если бы я мог просто заставить TeamCity получить нужный ей код, и больше ничего, то, я думаю, я мог бы получитьдо 10 минут или меньше.

Я нашел несколько статей, которые исключают файлы и папки, использующие MSBuild, но я не могу найти ничего в наших скриптах сборки о загрузке из SVN, и я думаю, что TeamCity делает это.

Может ли кто-нибудь предложить какие-либо изменения, которые мы можем внести, или хорошие статьи по созданию сборки с нуля с помощью TeamCity и MSBuild, которые позволили бы мне выбирать, что выбрать из SVN?

Спасибо.

1 Ответ

2 голосов
/ 14 марта 2011
  1. Сборка только то, что меняется.
  2. Сборки CI не должны делать все то, что делает сборка выпуска.Все, что нужно CI - это скомпилировать и выполнить некоторую проверку.
  3. Решения, иногда разработчики помещают нагрузки в любой отдельный sln.Если у вас есть множество сервисов в одном sln, и он создает каждый раз только одно изменение?Так что разбейте их на части - по одному sln на каждый вывод (я имею в виду exe или службу или что-то еще, а не одну DLL)
  4. Распараллелить сборку.Иметь разные цели сборки для каждого выхода (в TeamCity)
  5. Сборка с артефактами, развертывание артефактов.Это означает, что вам никогда не придется ждать завершения сборки для развертывания.

Десятиминутная синхронизация все еще очень долгая для SVN, она действительно должна выйти из строя, сколько времени это займет в командной строке?Переместить элементы, не относящиеся к сборке, в другое хранилище?

С большой базой кода и svn рассмотрите возможность создания основных компонентов в разделе проверенных двоичных файлов / ссылок в Svn.Это позволяет вам делиться созданными объектами с другими командами, а не тратить время на создание их кода.

Надеюсь, это поможет?

...