Использование определенных билд-раннеров для повышения эффективности сборки

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

Что такое билд-раннер и какие типы раннеров доступны в TeamCity

Билд-раннер — это компонент TeamCity, который обеспечивает интеграцию с определенным инструментом сборки (Ant, MSBuild, командной строкой и т. п.). В настройках билд-раннера можно указать, какие задачи сборки нужно запустить, какую версию инструмента сборки использовать, какой образ Docker/Linux использовать в качестве контейнера и т. п. В конфигурации сборки билд-раннер определяет параметры выполнения сборки и создания отчетов о ней. В TeamCity по умолчанию входят много билд-раннеров, включая .NET, Maven, Gradle, Docker, Python, Node.js и другие.

Давайте откроем и отредактируем конфигурацию сборки. Один из шагов требует использования командной строки. Скрипт выполняет следующие команды:

  • переход в каталог сервиса калькулятора с помощью команды cd;
  • запуск команды mvn clean package;
  • загрузка файла .jar в частную корзину S3.
tutorials-img

Мы исключим запуск пакета mvn clean package и воспользуемся для этого специальными функциями Maven в TeamCity. Можно просто удалить строку в пользовательском скрипте и нажать Save:

tutorials-img

Добавление нового шага сборки

Теперь нужно добавить новый шаг сборки. TeamCity предложит выбрать конкретный раннер:

tutorials-img

Для каждой технологии, интегрированной с TeamCity, предусмотрен отдельный раннер. Например, для сборки проектов .NET стоит выбрать раннер .NET, а для запуска скриптов командной строки — раннер командной строки. Билд-раннер Docker удобно использовать для шагов, связанных с Docker, раннер Gradle — для проектов Gradle, и так далее.

Полный список билд-раннеров TeamCity приведен в документации.

Поскольку мы работаем с проектом Maven, выбираем в раскрывающемся списке Maven. После этого нужно заполнить поля, которые предлагает TeamCity.

tutorials-img

Файл pom.xml находится в директории сервиса калькулятора, поэтому нужно выбрать правильную папку, нажав на иконку дерева. На экран выводится представление всех директорий в виде дерева, поэтому вам не нужно вводить имя папки с клавиатуры, рискуя сделать опечатку. Просто выберите директорию из списка.

Шаг mvn clean package можно выполнить в Docker-контейнере, выбрав имя образа Docker в Docker Hub, например maven:latest. TeamCity получит нужный образ, явным образом запустит из него Docker-контейнер, в этом контейнере запустит задание mvn clean package, а затем удалит контейнер.

tutorials-img

Выбор билд-раннера покрытия кода

Чтобы настроить шаги сборки вручную, перейдите по ссылке:

tutorials-img

В TeamCity можно выбрать конкретный раннер покрытия кода. Например, можно добавить раннеры покрытия кода IntelliJ IDEA или JaCoCo, не прописывая их жестко в файле pom.xml.

Давайте добавим в качестве имени паттерна пакета com.jetbrains.teamcity.*. TeamCity проанализирует пакеты, чьи имена соответствуют паттерну.

tutorials-img

Кроме того, TeamCity позволяет настроить расширенные параметры. Например, можно выбрать разные версии проекта Maven или указать конкретную версию Java для запуска всего проекта.

tutorials-img

Благодаря всем этим настройкам больше не надо волноваться, сработает ли вызов командной строки. Обо всем позаботится TeamCity.

Итак, сначала запускается скрипт командной строки, затем идет шаг с использованием Maven. Нам нужно изменить порядок шагов сборки, чтобы сначала запускался пакет mvn clean package, а потом шла загрузка в S3 с помощью командной строки.

tutorials-img

После этого достаточно нажать Run, и все заработает.

Что позволяет делать раннер Maven?

После выполнения сборки можно перейти на страницу общей информации о ней. Здесь появились новые вкладки Maven Build Info и Code Coverage, а также новый раздел результатов тестирования (Tests) и анализа покрытия кода (Code Coverage).

tutorials-img

Информация о сборке Maven

На странице Maven build info дана общая информация о том, какие задачи были решены с помощью той или иной версии Maven. Здесь же показаны полученные артефакты, например файл .jar, созданный Maven.

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

Наконец, вы увидите все плагины Maven, активированные во время сборки.

tutorials-img

Страница обзора тестов

На странице обзора тестов, которую вы получаете бесплатно при использовании раннера Maven, тоже много полезной информации. Вот что входит в отчет:

  • общий статус теста (успешно, ошибка, неустойчивый и т. п.);
  • выполненные тестовые классы и методы;
  • продолжительность каждого теста;
  • порядок запуска тестов.

Кроме того, у каждого теста есть своя история с основной информацией об этом тесте. Она пригодится, если нужно разобраться в проблемах при тестировании, например: «Почему этот тест внезапно занял больше времени? Это неустойчивый тест?» — и т. п.

Подробнее об отчетах о тестировании — в этом видео.

Отчет об покрытии кода

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

Чтобы увидеть все эти отчеты в интерфейсе TeamCity, достаточно выбрать пару параметров в раннере покрытия кода в IntelliJ IDEA.

tutorials-img

На сегодня все! Чтобы узнать, как пользоваться другими возможностями TeamCity, например отчетами о тестировании или о покрытии кода, посмотрите другие обучающие материалы.

Удачных сборок!