TeamCity и GitLab: непрерывная интеграция

TeamCity — гибкое решение, которое можно настроить под любые рабочие процессы. Оно предлагает эффективные CI-инструменты и первоклассную интеграцию с GitLab.com, GitLab Enterprise Edition и GitLab Community Edition.

Успешная сборка при растущих масштабах

По мере того как проект становится больше и сложнее, встроенных в GitLab возможностей непрерывной интеграции уже может не хватать, чтобы поддерживать эффективный процесс доставки приложения пользователям. На помощь приходит TeamCity — гибкое универсальное CI/CD-решение, которое не привязано к конкретным рабочим процессам и подойдет командам любого размера.

Мультиплатформенный, мультиоблачный, мультиязыковой

TeamCity доступен для Linux, Windows и macOS и может работать на ваших физических устройствах, в выбранной вами облачной инфраструктуре, в кластере Kubernetes или любом их сочетании. Решение поддерживает все языки программирования и интегрируется со всеми распространенными инструментами сборки и тестирования ПО.

Конструктивная обратная связь

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

Поддержка любых рабочих процессов

Настроить непрерывную интеграцию для проектов GitLab очень просто. После того как подключение к репозиториям GitLab сконфигурировано, проект TeamCity создается за несколько кликов. Неважно, как именно организованы ваши проекты и рабочие процессы, — TeamCity справится со сборкой.

  • Выполняйте сборку и юнит-тесты для каждого коммита и мгновенно получайте обратную связь по внесенным изменениям.
  • Создавайте отдельные рабочие процессы по именам пользователям, именам веток, сообщениям коммитов или изменениям файлов.
  • Запускайте сборки при открытии merge-реквеста, чтобы выполнить автоматизированные тесты до ревью кода.
  • Планируйте ночные сборки, чтобы иметь возможность выполнить полный набор регрессионных тестов и обеспечить высокое качество кода.
  • Автоматизируйте полный набор сборок и тестов при слиянии изменений с релизной веткой.
  • Начинайте зависимую сборку проекта после успешного завершения исходной сборки.

TeamCity позволяет создать единый надежный CI-пайплайн с использованием разных языков программирования, платформ и инфраструктур сборки. Используя разные корни VCS, можно создать пайплайны для проектов с репозиториями как в GitLab, так и в других системах контроля версий, в том числе GitHub, Bitbucket, Azure DevOps, Mercurial, Subversion и Perforce. Подробнее об интеграции с системами контроля версий.

Автоматизация по завершении сборки

Благодаря полной поддержке возможностей GitLab, TeamCity обеспечивает глубокую и прозрачную интеграцию, и вы получаете четкое представление обо всех процессах DevOps.

Публикация статуса сборки

TeamCity может в реальном времени публиковать в GitLab текущий статус каждой сборки с момента ее добавления в очередь и до завершения. Это позволяет отслеживать ход процесса и просматривать результаты прямо из коммита или merge-реквеста.

Подробнее — в разделе документации, посвященном функции Commit Status Publisher.

Автоматизированное и ручное слияние

Можно автоматически настроить правила, чтобы слияние изменений с веткой выполнялось автоматически в рамках CI-пайплайна. Благодаря поддержке каскадных слияний можно создавать сложные рабочие процессы для внесения изменений в защищенные интеграционные и релизные ветки. Если какие-то тесты завершаются ошибкой и условия слияния не выполнены, вы можете выполнить слияние вручную из интерфейса TeamCity, не возвращаясь в GitLab.

Подробнее — в разделах документации, посвященных автоматическому и ручному слиянию веток.

Метки систем контроля версий

С помощью TeamCity удобно расставлять метки Git, отмечая номера версий по источникам успешных (или всех) сборок. Это можно делать как автоматически, так и вручную.

Подробнее — в разделе документации, посвященном меткам систем контроля версий.

Интеграция с баг-трекерами

Подробную информацию обо всех задачах GitLab, описанных в сообщениях коммитов, можно посмотреть прямо в интерфейсе TeamCity.

Подробнее — в разделе документации, посвященном интеграции TeamCity с баг-трекерами.

Мгновенные уведомления

TeamCity позволяет уведомлять авторов коммитов и коллег об ошибках в сборках и тестах, получать информацию об успешном завершении тестирования и информировать ревьюеров кода, что проверки в рамках непрерывной интеграции завершены и код готов к ревью. Решение предлагает нативную поддержку уведомлений в Slack, IDE и браузере, а также по электронной почти. Обширная экосистема плагинов обеспечивает поддержку уведомлений в Microsoft Teams, Telegram и Discord.

Упрощение аутентификации

Работая с TeamCity Cloud и TeamCity On-Premises, можно использовать аккаунты в GitLab.com или GitLab CE/EE для авторизации и управления доступом.

  • Настройте вход пользователей в TeamCity с учетными данными GitLab.
  • Благодаря автоматической публикации результатов сборки и тестирования в GitLab вы можете предоставить доступ в TeamCity всем вашим пользователям GitLab или только тем, кто отвечает за настройку пайплайнов сборки.
  • Сопоставляйте пользователей TeamCity с профилями в GitLab.
  • Настраивайте разрешения для пользователей TeamCity независимо от ролей в GitLab.

Расширение рабочих процессов с помощью функционала TeamCity

Умное тестирование в реальном времени

Если при сборке или тестировании появляется ошибка, в первую очередь нужно понять характер проблемы и найти ее причину. TeamCity может:

  • Найти конкретный коммит, ставший источником ошибки, уведомить автора изменения и автоматически назначить ответственного за исследование.
  • Проанализировать историю тестов, найти ошибки в последующих сборках и определить неустойчивые тесты.
  • С помощью инспекций IntelliJ IDEA или ReSharper выполнить статический анализ кода в рамках пайплайна сборки и предоставить его результаты.
  • Измерить покрытие кода автоматическими тестами благодаря нативной поддержке инструментов Java и .NET, а также интеграции с другими билд-раннерами, включая Ant, Maven и Python.

Оптимизация непрерывной интеграции

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

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

Вопросы и ответы: непрерывная интеграция с помощью TeamCity и GitLab

Функции интеграции TeamCity с GitLab предоставляются бесплатно?

Интеграция с GitLab доступна во всех версиях TeamCity, включая бесплатную локальную версию. Кроме того, для TeamCity Cloud предусмотрен 14-дневный бесплатный пробный период.

TeamCity лучше GitLab?

Сравнивать TeamCity и GitLab не совсем корректно — это разные инструменты. TeamCity предлагает более широкие и гибкие возможности, чем встроенные CI/CD-функции GitLab, однако в TeamCity не поддерживается баг-трекинг и Git-хостинг.

Поддерживает ли TeamCity реестр контейнеров GitLab?

Да, TeamCity поддерживает все популярные реестры Docker, в том числе реестр контейнеров GitLab. Помимо обычных операций с пул-реквестами и запуска сборок, TeamCity может автоматически удалять устаревшие Docker-образы во время очистки сервера. Это особенно удобно, если у вас локальная конфигурация CI/CD.

Подробнее об интеграции TeamCity с Docker.

Можно ли выполнить сборку кода в TeamCity, не отправляя его в GitLab?

Можно установить TeamCity-плагин в IDE на платформе IntelliJ или в Visual Studio, который позволяет запускать CI-пайплайн без коммита. Эта функция особенно популярна у разработчиков игр.