Какие шаги я могу предпринять, чтобы оптимизировать время сборки в TeamCity? - PullRequest
3 голосов
/ 17 июля 2009

В настоящее время я пытаюсь сократить время, необходимое для компиляции и модульного тестирования проектов в TeamCity.

В настоящее время мой проект занимает от 5 до 8 минут.

Что он делает:

  1. Очистить все существующие файлы
  2. Компиляция каждого проекта
  3. Создать установщик

Как только это будет сделано, начнутся юнит-тесты, и для их запуска потребуется около 2 минут.

Что он делает:

  1. Очистить все существующие файлы
  2. Компиляция каждого проекта
  3. Запустить все юнит-тесты

Теперь выполнение модульных тестов занимает всего 5 секунд .... поэтому этап очистки и компиляции занимает около 2 минут .... и шаг создания установщика - от 3 до 6 минут.

Мой первый вопрос: есть ли способ настроить team city, чтобы при запуске модульных тестов ему не приходилось снова выполнять этапы очистки и компиляции. Я полагаю, что главная причина, по которой мы так поступаем, заключается в том, что сборка проекта и модульные тесты могут выполняться разными агентами сборки.

Мой второй вопрос: является ли 5–8 минут разумным временем для сборки проекта? Существуют ли способы оптимизации компиляции проектов в решении, а также создания установщика?

Пожалуйста, дайте мне знать, если есть какие-либо дополнительные сведения, которые я могу предоставить, которые могут помочь вам указать мне правильное направление: либо оптимизировать сборку, либо просто оставить все как есть.

Обновление, чтобы ответить на некоторые вопросы от Нейта :

Когда вы запускаете сборку вне TeamCity, выполняет ли она очистку / компиляцию перед модульными тестами? Нет, потому что когда вы запускаете его на своем компьютере, вы можете указать, какие части скрипта сборки нужно запускать. У нас есть разделы для очистки, компиляции, модульного тестирования и т. Д., Которые по-разному указываются в городе команды для сборки проекта и запуска модульного теста.

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

Что вы используете для создания своего проекта? мы используем Nant для создания нашего проекта, wix для установщика, а NUnit и NCover для модульных тестов и отчетов о покрытии.

Какую систему контроля версий вы используете? Subversion

Ответы [ 2 ]

3 голосов
/ 17 июля 2009

Относительно # 1: Когда вы запускаете сборку вне TeamCity, выполняет ли она очистку / компиляцию перед модульными тестами? Если да, можете ли вы сделать так, чтобы сборка не выполнялась до тестов?

Что вы используете для создания своего проекта? Какую систему контроля версий вы используете?

Другим вариантом является наличие нескольких конфигураций сборки. На моей работе у нас есть несколько конфигураций. Тот, который запускается после каждого коммита. Он делает чистку / компиляцию и несколько быстрых тестов. Затем у нас есть ночной конфиг, который выполняет чистку / компиляцию и все тесты. Вы можете сделать что-то подобное?

1 голос
/ 04 августа 2009

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

...