📄 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 и т.д.