TeamCity
TeamCity — CI/CD-сервер от JetBrains: он забирает код из репозитория, собирает его на агентах, прогоняет тесты и доводит изменение до артефакта или деплоя. Фирменные черты — цепочки сборок со снапшот-зависимостями и конфигурация как код на Kotlin DSL.
Коротко о навыке
TeamCity — CI/CD-сервер от JetBrains. Схема классическая: сервер хранит конфигурации сборок, следит за репозиториями и управляет очередью, а сами сборки выполняют агенты — отдельные машины или контейнеры. Фирменные черты — build chains (цепочки сборок со снапшот-зависимостями, где компиляция, тесты и деплой связаны в конвейер и переиспользуют результаты друг друга) и Kotlin DSL, позволяющий держать всю конфигурацию сервера как код в репозитории и проводить изменения CI через ревью.
На рынке TeamCity — навык-спутник: его почти никогда не требуют изолированно, он идёт в связке с Git, Docker, сборщиками и тестовыми фреймворками. Доминирующая роль — DevOps-инженер, следом идут тестировщики (и ручные, и автоматизаторы) и Java-разработчики: исторически TeamCity силён именно в Java/Kotlin-командах и там, где уже живёт стек JetBrains. Главные альтернативы — Jenkins, GitLab CI и GitHub Actions; выбор между ними — один из типовых вопросов на собеседовании.
Для этого навыка доступны ограниченные данные (менее 50 вакансий или нет зарплатных данных). Аналитика носит ориентировочный характер.
Что такое Teamcity
Кто использует
Прежде всего DevOps-инженеры; также тестировщики, Java-разработчики и мобильные команды — все, кому нужен управляемый конвейер сборки и тестов.
Позиция на рынке
Заметный, но не самый массовый CI-инструмент: конкурирует с Jenkins, GitLab CI и GitHub Actions, особенно силён в Java/Kotlin-командах и корпоративных установках.
Что такое TeamCity
TeamCity — сервер непрерывной интеграции и доставки: он автоматически забирает код из репозитория после каждого изменения, собирает его, прогоняет тесты и публикует результат — jar-файл, Docker-образ, установщик. Без такого сервера каждый разработчик собирает проект у себя, тесты запускаются «когда вспомнили», а ошибки интеграции всплывают перед релизом. TeamCity превращает это в конвейер: любое изменение проходит одинаковый, воспроизводимый путь от коммита до артефакта, и команда сразу видит, что сломалось и кем.
Сервер, агенты и очередь
Архитектура разделена на две части. Сервер — мозг: хранит конфигурации сборок, следит за репозиториями, показывает результаты и управляет очередью. Агенты — рабочие руки: отдельные машины, виртуалки или контейнеры, которые получают задание, выкачивают код и выполняют шаги сборки. Когда сборка попадает в очередь, сервер подбирает агент по требованиям: сборке iOS нужен агент на macOS с Xcode, Java-сервису — агент с нужным JDK. Такое разделение позволяет масштабировать конвейер добавлением агентов и держать разные окружения в одном пуле.
Build chains: конвейер из сборок
Вместо одной гигантской сборки «собери всё» TeamCity предлагает цепочки: отдельные конфигурации для компиляции, тестов и деплоя связываются снапшот-зависимостями. Снапшот-зависимость гарантирует, что вся цепочка работает на одном и том же наборе ревизий исходников — тесты проверяют ровно тот код, который был собран. Уже собранные части не пересобираются, независимые звенья идут параллельно на разных агентах, а при падении перезапускается только нужное звено. Это главный аргумент TeamCity в сложных конвейерах.
Из чего состоит Teamcity
Как устроен конвейер в TeamCity
Путь изменения от коммита до развёрнутой версии — через очередь, агентов и цепочку сборок.
Триггер ставит сборку в очередь
Сервер следит за репозиторием: новое изменение по фильтру веток запускает сборку. Очередью управляет сервер — он же подбирает агент, подходящий под требования конфигурации.
Агент выполняет шаги
Агент выкачивает код и проходит шаги конфигурации: компиляция, тесты, анализ. Результаты тестов сервер разбирает на лету — история каждого теста и виновное изменение видны сразу.
Цепочка доводит до релиза
Снапшот-зависимости связывают сборки в конвейер: артефакты передаются дальше, независимые звенья идут параллельно, и изменение доезжает до деплоя без пересборок и ручных шагов.
Кому нужен Teamcity
Teamcity переносится между ролями: DevOps-инженер, Ручной тестировщик, Java-разработчик. В одном треке этот навык может быть основным рабочим инструментом, а в другом - сильным прикладным усилителем основной специализации.
Роли с Teamcity за период
DevOps-инженер — самый заметный профиль в распределении ролей по навыку.
Текущий срез показывает активные вакансии сейчас. Распределение по ролям рассчитано по расширенной исторической выборке, поэтому значения могут быть выше текущего количества активных вакансий.
Частые задачи с Teamcity
Teamcity ценен не абстрактным знанием инструмента, а повторяющимися рабочими задачами — ниже они разобраны так, как встречаются в реальной работе.
Первая конфигурация на Kotlin DSL
Сборка проекта с автозапуском по изменениям в репозитории — конфигурация описана кодом.
import jetbrains.buildServer.configs.kotlin.*
import jetbrains.buildServer.configs.kotlin.buildSteps.script
import jetbrains.buildServer.configs.kotlin.triggers.vcs
object Build : BuildType({
name = "Build and Test"
vcs {
root(DslContext.settingsRoot)
}
steps {
script {
name = "Сборка и тесты"
scriptContent = "./gradlew clean build"
}
}
triggers {
vcs {
branchFilter = "+:main\n+:feature/*"
}
}
}) Цепочка со снапшот-зависимостью
Деплой стартует только после успешной сборки — и на том же наборе ревизий исходников.
object Deploy : BuildType({
name = "Deploy"
dependencies {
snapshot(Build) {
onDependencyFailure = FailureAction.FAIL_TO_START
}
artifacts(Build) {
artifactRules = "build/libs/app.jar => app/"
}
}
// цепочка Build -> Deploy: Deploy не пересобирает код,
// а получает готовый артефакт из Build
}) Публикация артефактов
Правила описывают, какие файлы сервер сохранит после сборки и передаст дальше по цепочке.
object Package : BuildType({
name = "Package"
// что сохранить после сборки:
artifactRules = "build/libs/*.jar => binaries/\nbuild/reports/** => reports.zip"
steps {
script {
name = "Собрать jar"
scriptContent = "./gradlew jar"
}
}
}) Тесты с историей падений
TeamCity сам разбирает результаты JUnit/TestNG: история каждого теста, «мигающие» тесты, расследования.
import jetbrains.buildServer.configs.kotlin.buildSteps.maven
steps {
maven {
goals = "clean test"
runnerArgs = "-Dmaven.test.failure.ignore=true"
}
}
failureConditions {
testFailure = true
// сборка падает при упавших тестах,
// но TeamCity успевает собрать все результаты
} Требования к агентам и секреты
Сборка попадёт только на подходящий агент; пароль хранится как защищённый параметр и маскируется в логах.
object BuildIos : BuildType({
name = "iOS Build"
params {
param("env.CONFIGURATION", "Release")
password("env.API_TOKEN", "credentialsJSON:xxxx")
}
requirements {
contains("teamcity.agent.jvm.os.name", "Mac OS X")
exists("env.XCODE_HOME")
}
}) Сборка Docker-образа
Типовой шаг доставки: собрать образ, пометить номером сборки TeamCity и отправить в реестр.
steps {
script {
name = "Собрать и отправить образ"
scriptContent = "docker build -t registry.local/app:%build.number% .\ndocker push registry.local/app:%build.number%"
}
}
// %build.number% — встроенный параметр TeamCity,
// подставляется при запуске сборки Ошибки новичков
Настраивать всё мышкой
Конфигурация, накликанная в интерфейсе, не версионируется: кто, что и когда поменял — неизвестно, откат мучителен, перенос на новый проект — вручную по памяти. Kotlin DSL решает это архитектурно; вести серьёзный конвейер без него — накапливать невоспроизводимость.
Одна гигантская сборка
Компиляция, все тесты и деплой одним списком шагов: сборка идёт часами, параллелить нечего, при падении последнего шага перезапускается всё. Правильный путь — разбить на конфигурации и связать в build chain со снапшот-зависимостями.
Секреты открытым текстом
Токены и пароли в обычных параметрах или прямо в скриптах утекают в логи сборок и в историю DSL-репозитория. Для секретов есть параметры типа password и интеграции с внешними хранилищами — маскировка в логах и шифрование из коробки.
Грязные агенты
Сборка, которая проходит только потому, что на агенте остались кэши и файлы от прошлых запусков, — мина замедленного действия: на новом агенте она развалится. Лечится чистым чекаутом, контейнерными сборками и периодической проверкой на «пустом» агенте.
Привыкнуть к красному
Когда «мигающие» тесты падают через раз, команда перестаёт реагировать на статус сборки — и пропускает настоящие поломки. В TeamCity для этого есть расследования и муты: назначить ответственного, заглушить известную проблему с комментарием, но не игнорировать сигнал.
TeamCity в современных IT-проектах: контекст спроса
Ядро спроса на TeamCity — DevOps-инженеры: для них это один из инструментов конвейера наряду с Docker, Kubernetes и системами мониторинга. Вторая заметная группа — тестировщики, и ручные, и автоматизаторы: они не администрируют сервер, но ежедневно живут в его интерфейсе — запускают прогоны, разбирают упавшие тесты, следят за отчётами. Третья — Java-разработчики и смежные роли: TeamCity исторически силён в Java/Kotlin-экосистеме и командах на стеке JetBrains. Важно понимать: работодатель редко ищет «специалиста по TeamCity» — он ищет инженера, который понимает CI/CD как процесс, а конкретный сервер знает как инструмент. Поэтому TeamCity в резюме работает в связке с Git, Docker и сборщиками, а не отдельной строчкой.
Сокращает ручную работу
Teamcity востребован там, где инструмент реально ускоряет повторяемые задачи команды, а не существует отдельной теорией.
Встроен в рабочий процесс
Спрос держится дольше, когда навык нужен не эпизодически, а как часть ежедневного цикла разработки, проверки или доставки.
Закреплён в зрелом стеке
Teamcity чаще ищут там, где процесс уже стандартизирован и без этого инструмента команда теряет скорость и предсказуемость.
Teamcity формирует устойчивый спрос внутри своего рабочего сегмента.
Спрос на Teamcity на рынке
Teamcity сохраняет устойчивый прикладной спрос на рынке: 36 активных вакансий, #209 по рынку, 0.7% IT-вакансий. Ниже показано число открытых вакансий на конец каждого месяца: это исторический ряд по состоянию на конец месяца, а не текущий срез рынка на сегодня.
#209 по рынку • 0.7% IT-вакансий
-15 вакансий и -19% к предыдущему месяцу.
Навыки в связке с Teamcity
Teamcity редко живёт изолированно: чаще всего рынок видит его рядом с CI/CD, Docker, Java. Самая плотная связка сейчас - CI/CD: оба навыка встречаются вместе в 81% вакансий.
Главная связка: CI/CD • 81% вакансий. Показываем общерыночные связки Teamcity: не junior-минимум из блока выше, а навыки, которые чаще всего встречаются рядом с ним в одной вакансии.
Рабочий стек вокруг Teamcity
навыки, которые рынок чаще всего видит рядом в одной вакансии
Порог входа
Сейчас на рынке 2 активных junior-вакансий с Teamcity. Это 6.2% всех вакансий по навыку, поэтому для старта важнее всего смотреть на реальный объём junior-окна и на стек, который рынок ждёт рядом.
6.2% всех вакансий по навыку • Senior / Junior 8.1x
Окно входа узкое: рынок чаще нанимает с опытом.
Стартовый стек
Медианная вакансия с Teamcity ожидает около 22 навыков в стеке. Это широкий стартовый набор: рынок обычно ищет не один изолированный инструмент, а рабочую комбинацию соседних навыков.
Чаще всего требуют вместе
навыки из junior-вакансий, где встречается Teamcity
Teamcity в резюме: что значит "знаю Teamcity"
Владение TeamCity в резюме — это не просто строчка, а демонстрация понимания CI/CD процессов. Что означает каждый уровень и что показать на собеседовании.
TeamCity в экосистеме
С какими инструментами TeamCity работает в реальных конвейерах.
Kotlin DSL
Конфигурация сервера как код
Когда конвейеров много и изменения CI должны проходить ревью
Порог входа выше, чем у настройки в интерфейсе; код специфичен для TeamCity.
Docker
Изолированные окружения сборки и формат артефактов
Когда на общих агентах нужны разные окружения и доставка образами
Агентам нужен доступ к Docker и контроль места под образы и кэши.
Maven / Gradle
Сборщики, выполняющие шаги внутри конфигураций
Java/Kotlin-проекты — основная среда обитания TeamCity
Логика сборки живёт в сборщике; TeamCity управляет запуском, но не заменяет его.
Allure и тестовые отчёты
Наглядная отчётность поверх результатов автотестов
Когда QA-команде нужна детальная картина прогонов для разборов
Базовую историю тестов TeamCity ведёт сам — внешний отчёт нужен не всегда.
Argo CD / GitOps
Доставка в Kubernetes после CI
Когда деплой должен управляться желаемым состоянием кластера
TeamCity отдаёт проверенный образ, но синхронизацией кластера не занимается.
Где используется Teamcity
TeamCity применяется везде, где код должен превращаться в проверенный артефакт автоматически — от Java-бэкенда до мобильных сборок и корпоративных конвейеров.
CI для Java/Kotlin-бэкенда
Классическая ниша: сборка Maven/Gradle-проектов, юнит- и интеграционные тесты, публикация артефактов в репозиторий. Интеграция с IntelliJ IDEA — удалённый запуск и...
Сборка и доставка образов
Сборка Docker-образов, публикация в реестр, запуск деплой-шагов на тестовые и боевые окружения — TeamCity доводит изменение от коммита до развёрнутой версии.
По направлениям
Teamcity заметен в 3 направлениях рынка с долей выше 5%.
Что даёт TeamCity
Возможности, за которые TeamCity выбирают вместо конкурентов.
Build chains
Цепочки со снапшот-зависимостями: единый набор ревизий на весь конвейер, переиспользование результатов, параллельные звенья и перезапуск только упавшего звена.
Kotlin DSL
Конфигурация сервера как типизированный код в репозитории: ревью изменений CI, откаты через историю, автодополнение и проверка ошибок в IDE.
Интеллект по тестам
История каждого теста, детектор «мигающих», расследования с ответственными и муты известных проблем — падения разбираются, а не копятся.
Функциональность из коробки
VCS, сборщики, отчёты, уведомления и интеграция с IDE встроены и обновляются вместе с сервером — конвейер не рассыпается после обновления плагинов.
TeamCity vs Jenkins vs GitLab CI
Три подхода к CI — критерии, по которым реально выбирают.
TeamCity vs Jenkins: стоимость владения
Главный критерий здесь — сколько команда готова вкладывать в поддержку самого CI. Jenkins бесплатен и гибок, но конвейер собирается из сотен плагинов, которые нужно подбирать, обновлять и чинить...
TeamCity vs GitLab CI: где живёт код
Если весь цикл разработки уже в GitLab, встроенный CI выигрывает связностью: конвейер, merge request и реестр образов в одном интерфейсе, отдельный сервер не нужен. TeamCity берут, когда репозитории...
TeamCity vs GitHub Actions: модель инфраструктуры
Actions запускает облачные раннеры на каждый прогон и берёт оплату минутами — для открытых и небольших проектов это старт без инфраструктуры вообще. TeamCity строится вокруг собственных постоянных...
Как Teamcity используется в реальном проекте
TeamCity: запуск и настройка билд-агентов
TeamCity использует архитектуру «сервер — агенты». Сервер управляет проектами, очередью и историей, а агенты выполняют сборки. Это позволяет масштабировать инфраструктуру: добавил новый агент — увеличил пропускную способность.
Установка сервера (Docker)
TeamCity поставляется как Docker-образ jetbrains/teamcity-server. Запуск: docker run -d --name teamcity-server -p 8111:8111 -v /data/teamcity_server/datadir:/data/teamcity_server/datadir -v...
Подключение агентов
Агенты устанавливаются на отдельные машины или в контейнеры. Используйте образ jetbrains/teamcity-agent, укажите URL сервера и авторизационный токен. Агенты автоматически подключаются и готовы к...
Масштабирование агентов через Kubernetes
Запускайте агенты как поды в Kubernetes. TeamCity может динамически создавать и удалять агенты в зависимости от нагрузки. Используйте официальный helm-чарт или плагин.
Настройка VCS Root
Подключите репозиторий (Git, Mercurial, Perforce, SVN). Укажите URL, ветку и учётные данные. Один VCS Root можно использовать в нескольких конфигурациях сборки.
Создание Build Configuration
Определите шаги сборки (команды, скрипты, сборщики), триггеры (VCS, расписание), параметры и зависимости. Используйте шаблоны для переиспользования.
Настройка цепочек сборок (Build Chain)
Свяжите конфигурации так, чтобы артефакты одной передавались в другую. Например: сборка библиотеки → сборка сервиса → интеграционные тесты. Используйте Snapshot Dependency для точной версионности.
TeamCity: лучшие практики и ошибки новичков
Используйте шаблоны сборок
Создавайте шаблоны для стандартных типов сборок (Java, .NET, Node.js). Изменения в шаблоне автоматически применяются ко всем конфигурациям.
Параметризация конфигураций
Используйте параметры сборки для управления средами, версиями и учётными данными. Определяйте параметры на уровне проекта, конфигурации или конкретного запуска.
Храните конфигурации в VCS (Kotlin DSL)
Перенесите конфигурации TeamCity в Git с помощью Kotlin DSL. Версионируйте изменения, проводите code review, автоматически разворачивайте инфраструктуру.
Правила нейминга билдов
Называйте конфигурации осмысленно: ServiceA: Build, ServiceA: Unit Tests, ServiceA: Deploy Staging. Используйте папки для группировки.
Кэшируйте зависимости между сборками
Включите кэширование Maven/Gradle/npm зависимостей на агенте. Это ускоряет повторные сборки.
Настраивайте уведомления и отчёты
Интегрируйте TeamCity с Slack, Telegram или email. Настройте автоматическую отправку отчётов о стабильности тестов.
Регулярно чистите артефакты
Настройте политику хранения артефактов, чтобы не переполнить диск. TeamCity позволяет удалять старые сборки автоматически.
Используйте интроспекцию (Investigation)
Включите автоматическое назначение ответственного за упавший тест. TeamCity анализирует коммиты и находит автора изменений.
Безопасность Teamcity: что нельзя делать
Управление токенами доступа
Используйте персональные токены доступа (PAT) вместо паролей для агентов и интеграций. Храните токены в параметрах сборки типа 'password'.
SSL-сертификаты для агентов
Настройте HTTPS для сервера TeamCity, чтобы шифровать трафик между сервером и агентами. Используйте Let's Encrypt или корпоративный CA.
Изоляция агентов в Docker
Запускайте агенты в контейнерах, чтобы изолировать среды сборок. Для повышенной безопасности используйте запуск каждого билда в новом контейнере.
Аудит действий пользователей
Включите логирование всех действий (Audit Log) в настройках сервера. Регулярно проверяйте, кто и когда менял конфигурации.
Не используйте :latest образы для агентов
Пингуйте версии агентов, чтобы избежать неожиданных изменений. Используйте digest для критичных окружений.
Ограничьте права агентов
Не давайте агентам права root. Создайте отдельного пользователя с минимальными необходимыми правами.
Храните секреты в Vault
Для хранения паролей и ключей используйте HashiCorp Vault или аналоги. Интеграция с TeamCity через плагины.
Регулярно обновляйте TeamCity
Следите за обновлениями безопасности. JetBrains выпускает патчи, закрывающие уязвимости.
Сканируйте образы на уязвимости
Если используете Docker-образы агентов, проверяйте их на уязвимости с помощью Trivy или Grype.
Перспективы Teamcity
Перспективы Teamcity завязаны не только на текущем спросе, но и на том, как навык встраивается в новые платформы, инструменты и рабочие контуры.
Конфигурация как код — норма
Индустрия окончательно уходит от настройки CI мышкой: конвейер описывается кодом, проходит ревью и живёт в репозитории. Kotlin DSL ставит TeamCity в этот тренд, и владение им...
Облачные варианты
JetBrains развивает облачные версии TeamCity: серверную часть можно не администрировать самим. Это снижает порог входа для небольших команд и смещает ценность специалиста от...
Давление встроенного CI
GitHub Actions и GitLab CI идут «в комплекте» с хостингом кода и забирают простые сценарии. TeamCity удерживает сложные корпоративные конвейеры, глубокую работу с тестами и...
Портфолио с Teamcity: с чего начать
CI-конвейер на Kotlin DSL
Взять свой пет-проект на Java или Kotlin и провести его от коммита до артефакта: сборка, тесты, публикация jar-файла — вся конфигурация в versioned settings, в репозитории рядом с кодом. Показывает и владение TeamCity,...
Build chain с параллельными тестами и деплоем
Цепочка из трёх-четырёх конфигураций: компиляция, параллельные пакеты тестов на разных агентах, сборка Docker-образа и деплой на тестовое окружение. Снапшот-зависимости, требования к агентам, секреты в защищённых...
Как изучить Teamcity
TeamCity осваивается быстрее большинства инструментов DevOps-стека: первую рабочую сборку настраивают за вечер. Глубина приходит с Kotlin DSL, цепочками и эксплуатацией сервера в командах.
База CI/CD
Понять сам процесс: зачем непрерывная интеграция, что такое конвейер, артефакт, окружение, чем CI отличается от CD. Без этого любые кнопки TeamCity —...
Сервер, агент, первая сборка
Поднять сервер и агент из официальных Docker-образов, подключить свой репозиторий и собрать проект: шаги, лог сборки, статус. Это даёт картину архитектуры...
Триггеры, параметры, артефакты
Автозапуск по изменениям в VCS и по расписанию, фильтры веток, параметры конфигурации, правила публикации артефактов. Ежедневный рабочий уровень.
Тесты и отчёты
Подключить запуск тестов, разобраться с историей падений, «мигающими» тестами, расследованиями и мутами. Это то, чем TeamCity выделяется на фоне...
Где учить TeamCity
Соответствие — доля тем навыка, которые охватывает программа курса
Как начать изучать TeamCity
Три шага от пустого сервера до цепочки сборок на Kotlin DSL.
Поднять сервер и агент
Официальные Docker-образы JetBrains поднимают сервер и агент за полчаса. Подключите свой пет-проект и соберите его: шаги, лог, статус — архитектура станет понятной на практике.
Прогнать полный цикл
Добавьте VCS-триггер с фильтром веток, запуск тестов и публикацию артефактов. Сломайте тест намеренно и посмотрите, как TeamCity показывает историю падения и виновное изменение.
Перевести в код и собрать цепочку
Включите versioned settings и опишите конфигурацию на Kotlin DSL, затем разбейте сборку на цепочку со снапшот-зависимостью. Эти два навыка отличают уверенного пользователя от новичка.
Официальные ресурсы и быстрый старт
Для инструментов вроде Teamcity на одной странице полезно держать и объяснение роли на рынке, и быстрые переходы к официальным ресурсам.
Вопросы и ответы
Что такое TeamCity простыми словами?
Это сервер, который автоматически собирает и тестирует код после каждого изменения в репозитории. Разработчик отправил коммит — TeamCity забрал код, собрал его на агенте, прогнал тесты и показал команде результат: зелёная сборка или конкретная ошибка с виновным изменением. Разработка идёт конвейером, а не ручными пересборками.
TeamCity или Jenkins — что выбрать?
Jenkins бесплатен и бесконечно гибок, но собирается из плагинов: их надо подбирать, обновлять и чинить. TeamCity даёт основную функциональность из коробки с продуманным интерфейсом, но на масштабе становится платным. Если есть кому постоянно ухаживать за Jenkins — он дешевле; если важнее предсказуемость и меньшая стоимость поддержки — TeamCity.
TeamCity бесплатный?
Частично. Версия Professional бесплатна и покрывает небольшую команду, но ограничена по числу конфигураций сборок и агентов. Дальше — платные лицензии на сервер и дополнительных агентов. Для обучения и пет-проектов бесплатной версии более чем достаточно.
Что такое Kotlin DSL в TeamCity?
Способ описать всю конфигурацию сервера кодом на Kotlin и хранить её в репозитории. Изменения конвейера проходят ревью как обычный код, откатываются через историю, а новые проекты поднимаются из готового описания. Типизация и автодополнение в IDE ловят ошибки до того, как упадёт сборка.
Что такое build chain?
Цепочка связанных сборок: компиляция, тесты и деплой — отдельные конфигурации, соединённые снапшот-зависимостями. Вся цепочка работает на одном наборе ревизий исходников, готовые результаты переиспользуются, независимые звенья идут параллельно, а при сбое перезапускается только упавшее звено.
Кому нужен навык TeamCity?
В первую очередь DevOps-инженерам — они проектируют и сопровождают конвейеры. Тестировщикам — они ежедневно запускают прогоны и разбирают упавшие тесты. Java- и Kotlin-разработчикам — TeamCity особенно распространён в их экосистеме. Отдельной профессии «инженер по TeamCity» нет: это инструмент внутри роли.
Сложно ли освоить TeamCity?
Старт лёгкий: сервер и агент поднимаются из Docker-образов, первая сборка настраивается за вечер через понятный интерфейс. Сложность растёт с глубиной — Kotlin DSL, цепочки, эксплуатация на десятках проектов. Главное условие — понимать сам процесс CI/CD: без него любой сервер останется набором кнопок.