Увидел у коллеги @teamcity_fairy пост про TeamCity. Спасибо за честный разбор плюсов и минусов. Решил поделиться с вами.
Плюсы у TeamCity (далее ТС):
🐚 Удобный UI
🔗 Работа с цепочками сборок
Одна из наиболее используемых фич - удобный, гибкий и хорошо визуализированный механизм цепочек сборок.
⛓️ Сборки по цепочке можно запускать в обе стороны (механизмы dependency и build triggers).
⛓️ Пользовательские переменные тоже можно передавать в обе стороны (dep.*, reverse.dep.*).
⛓️Можно запустить только часть цепочки, если нужно.
⛓️ В случае изменений, ТС автоматически перезапустит только изменившуюся часть цепочки.
⛓️Гарантия, что все билды в цепочке запускаются на одних и тех же ревизиях репо.
Все это позволяет создавать сложные графы зависимостей и поддерживать огромные многокомпонентные проекты, что пригождается большим компаниям.
Еще есть прикольный механизм promotion - можно взять руками старый билд, и запустить с ним новую цепочку дальнейших сборок.
Так же есть опция помечать нужные билды тегами, помогает легко находить нужный артефакт в сотнях сборок.
👨💻 Kotlin DSL
Kotlin DSL - это ооп-язык, позволяющий динамически создавать сборки на ТС и управлять сложными системами сборок. Очень мощный инструмент в плане рефакторинга и управления большим количеством кода.
💡 Позволяет использовать всю силу IDE для работы с Kotlin DSL.
✍️ ТС умеет автоматически переводить простые джобы в Kotlin DSL.
📕 Инфраструктурный код на Kotlin DSL может храниться в отдельном в репо команды инфры и быть доступен только ей - лучше контролируются безопасность и порядок.
🕵️♀️ Гибкий выбор билд-агентов
В ТС удобный и гибкий механизм выбора билд-агентов под разные сборки и требования. Например, можно выбирать агент только с необходимым количеством места на диске под сборку.
🗒 Пулы агентов
Это группы билд-агентов, объединенные по какому-то признаку. Это очень когнитивно разгружает при работе с сотнями билд-агентов.
🔐 Модель доступа
Удобная модель управления доступами с гибко настраиваемыми правами и ролями, есть интеграция с LDAP/Active Directory.
📊 Сильная визуальная аналитика
Удобная и подробная аналитика динамики скорости билдов и флаки-тестов со всевозможными графиками и детализацией.
❌ Но есть и минусы тоже:
❗️ Самый существенный - вендор лок, необходимость лицензии, гео-ограничения (кто дочитал до этого пункта, для того и откроется ответ на вопрос заголовка: к сожалению, именно по этой причине проекты с него мигрируют на другие системы, хотя на нем по-прежнему работает очень много старых проектов).
🔐 В отличии от систем, где код проекта и описание пайплайна хранятся в одном месте (e.g. Gitlab CI), здесь придется потрудиться настроить все доступы отдельно (будь то доступы к UI TeamCity или к репо с Kotlin DSL). C другой стороны, это безопаснее - централизованный контроль доступов.
🚤 ТС сложнее завести в кубере, чем некоторые другие ci/cd-системы.
🐱 Для небольших проектов лучше взять систему с более простым развертыванием и сопровождением.