Skip to content

📄 TeamCity

1. Общее описание

TeamCity — это серверная система непрерывной интеграции и доставки (CI/CD), разработанная компанией JetBrains. Она автоматизирует сборку, тестирование и развертывание проектов, обеспечивая высокую скорость и надежность процесса разработки ПО.

Основные особенности:

  • Поддержка множества языков программирования и фреймворков.
  • Гибкая система триггеров для запуска билдов.
  • Интеграция с Git, SVN, Mercurial и другими системами контроля версий.
  • Поддержка Docker, Kubernetes и облачных платформ.
  • Веб-интерфейс для управления и мониторинга задач.
  • Настраиваемые пайплайны через Kotlin DSL или визуальный интерфейс.

2. Архитектура TeamCity

TeamCity состоит из следующих компонентов:

Компонент Описание
Server Основной сервер, который управляет конфигурацией, очередью задач, плагинами и предоставляет веб-интерфейс.
Agent Установленный на отдельной машине клиент, который выполняет непосредственно билды.
Project Логическая группа конфигураций билдов, связанных с одним проектом.
Build Configuration Конфигурация билда, определяющая шаги, триггеры, параметры и т.п.
Build Step Отдельный этап выполнения билда (например, сборка Maven, запуск тестов).
Build Agent Pool Группа агентов, доступных для выполнения билдов.

3. Основные понятия

Термин Определение
Build Выполнение билд-конфигурации с конкретными параметрами и результатом.
Build Queue Спис задач, ожидающих выполнения.
Trigger Механизм, запускающий билд при определенных условиях (например, при пуше в репозиторий).
Artifact Результат выполнения билда (например, скомпилированный jar-файл, дистрибутив).
Snapshot Dependency Зависимость одного билда от другого по состоянию кода.
Artifact Dependency Зависимость от результатов предыдущего билда.
Parameter Переменная, которую можно использовать в билде. Может быть статической или динамической.

4. Настройка и установка

4.1 Установка TeamCity Server

  • Поддерживает Windows, Linux, macOS.
  • Установка через официальные дистрибутивы.
  • База данных: HSQL (по умолчанию), MySQL, PostgreSQL, Oracle.
  • После установки доступен через http://<host>:8111.

4.2 Установка Build Agent

  • Качается с сервера.
  • Распаковывается и запускается скриптом (agent.sh / agent.bat).
  • Автоматически регистрируется на сервере.

4.3 Настройка подключения к VCS

  • Поддержка Git, GitHub, Bitbucket, SVN и др.
  • Создается VCS Root, который указывает на репозиторий.
  • Возможна авторизация через SSH, OAuth, Token и другие способы.

5. Создание первого билда

Шаги:

  1. Создать новый проект.
  2. Добавить VCS Root (ссылка на репозиторий).
  3. Создать Build Configuration.
  4. Добавить Build Steps (например, Maven, npm install, pytest).
  5. Настроить триггеры (например, on VCS commit).
  6. Запустить билд вручную или ждать автоматического запуска.

6. Примеры Build Steps

Тип шага Описание
Command Line Произвольная команда в командной строке.
Maven Сборка Maven-проекта.
Gradle Сборка Gradle-проекта.
npm Установка зависимостей и запуск скриптов Node.js.
Python Исполнение Python-скриптов.
Docker Сборка образов, запуск контейнеров.
SSH Exec Удалённое выполнение команд по SSH.

7. Интеграции

TeamCity может интегрироваться с: - GitHub, GitLab, Bitbucket — для автоматического запуска билдов. - Slack, Microsoft Teams, Email — для уведомлений. - Jira — связь билдов с задачами. - SonarQube — анализ качества кода. - Kubernetes — деплой через Helm или kubectl.


8. Best Practices

  • Используйте Kotlin DSL для хранения конфигураций в репозитории.
  • Разделяйте билды на stages (build → test → deploy).
  • Используйте параметры для гибкой настройки билдов.
  • Пишите читабельные названия билдов и шагов.
  • Настройте уведомления об успешных/неуспешных билдах.
  • Регулярно очищайте историю билдов и артефакты.

9. Полезные ссылки


10. FAQ

❓ Как перенести конфигурации между серверами?

Используйте Kotlin DSL или импорт/экспорт проектов через UI.

❓ Можно ли запускать билды локально?

Да, если вы запустите локальный агент и зарегистрируете его на сервере.

❓ Какие права нужны для работы с VCS?

Минимально — только чтение нужного репозитория.

❓ Как отслеживать ошибки в билдах?

Через логи, уведомления, интеграции с Jira/Sentry и т.д.