📄 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. Создание первого билда
Шаги:
- Создать новый проект.
- Добавить VCS Root (ссылка на репозиторий).
- Создать Build Configuration.
- Добавить Build Steps (например, Maven, npm install, pytest).
- Настроить триггеры (например, on VCS commit).
- Запустить билд вручную или ждать автоматического запуска.
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. Полезные ссылки
- Официальный сайт TeamCity
- Документация JetBrains
- GitHub TeamCity Examples
- TeamCity REST API Documentation
10. FAQ
❓ Как перенести конфигурации между серверами?
Используйте Kotlin DSL или импорт/экспорт проектов через UI.
❓ Можно ли запускать билды локально?
Да, если вы запустите локальный агент и зарегистрируете его на сервере.
❓ Какие права нужны для работы с VCS?
Минимально — только чтение нужного репозитория.
❓ Как отслеживать ошибки в билдах?
Через логи, уведомления, интеграции с Jira/Sentry и т.д.