В версии 2024.03 мы добавили несколько функций, которых давно ждали наши пользователи. Например, плагин HashiCorp Vault теперь встроен в TeamCity. Новая группа ненадежных сборок позволяет различать изменения, внесенные доверенными пользователями, и те, что получены из внешних источников.
Кроме того, новый билд-раннер dotCover позволяет пользователям запускать процессы в рамках профилирования покрытия кода, объединять снэпшоты между этапами сборки и создавать сводные отчеты по параллельным тестам, выполненным в TeamCity, для всей цепочки сборок.
Подробнее о новых возможностях TeamCity — ниже.
Пользователи TeamCity уже давно охотно пользуются интеграцией с HashiCorp Vault, которую обеспечивает специальный плагин. В прошлом году мы существенно пересмотрели принципы этой интеграции, так что ее стало гораздо проще настроить.
Начиная с версии 2024.03, мы встраиваем плагин в TeamCity, и теперь он становится неотъемлемой частью любого развертывания нашего решения.
Подробнее об интеграции TeamCity и HashiCorp Vault — в нашей документации.
Зависимости, использующие артефакты, позволяют конфигурациям сборки получать файлы, созданные другими конфигурациями или другими сборками в рамках той же конфигурации. Для создания таких зависимостей необходимо определить правила артефактов, указывающие, какие файлы необходимо скачать и откуда.
Раньше, если TeamCity не мог найти файлы на основании этих правил, это приводило к появлению ошибки «Unable to resolve artifact dependency» и неудаче сборки.
Начиная с версии 2024.03, мы внедрили более гибкий подход к обработке зависимостей артефактов. Теперь в некоторых случаях можно настроить игнорирование зависимостей:
Оставить отзыв об этой функции можно в тикете YouTrack.
Подробнее об этом и других изменениях читайте в документации.
Функция «Пул-реквесты» позволяет выполнять ревью кода перед его добавлением в основную кодовую базу. Пользователи могут выбрать запуск сборок от всех контрибьюторов или только от сотрудников своей организации. Первый вариант связан с рисками для безопасности, поскольку на сервер TeamCity может попасть вредоносный код, а второй ограничивает возможности сотрудничества со многими контрибьюторами.
В версии 2024.03 мы внедрили так называемую группу ненадежных сборок, которая позволяет TeamCity различать изменения, внесенные доверенными пользователями, и те, что получены из внешних источников.
Сейчас группа ненадежных сборок поддерживает работу с GitHub и GitLab. Подробнее об этой функциональности — в документации.
TeamCity уже некоторое время поддерживает использование JetBrains dotCover в качестве инструмента для контроля покрытия кода на проектах .NET. В версии 2024.03 мы добавили новый билд-раннер к плагину поддержки .NET, обеспечивающему интеграцию с dotCover.
Новый билд-раннер dotCover позволяет:
Подробнее читайте в документации
В версии 2024.03 мы добавили новую функцию в билд-раннер .NET. Она позволяет пользователям настроить политики повторного выполнения неудачных тестов для всей сборки.
Эта функция помогает решить проблему неустойчивых тестов и устранить разовые неудачи при выполнении интеграционных тестов.
Подробнее читайте в документации.
Эта новая возможность Gradle значительно увеличивает производительность сборки за счет кэширования результатов этапа и его использования в следующих сборках. До выхода версии 2024.03 билд-раннер Gradle в TeamCity не поддерживал кэш конфигурации.
В новом релизе TeamCity мы добавили эту функцию, чтобы повысить эффективность и производительность сборок в Gradle. Подробнее о том, как включить использование кэша конфигурации в настройках TeamCity — в документации.
В TeamCity 2023.11 появилось много функций, которые наши пользователи давно ждали, в том числе матричные сборки и кэширование сборок. Все это упростит настройку сборок.
Расширенная интеграция с платформами Git-хостинга, в том числе с GitHub, GitLab, Bitbucket и Azure DevOps, упрощает выбор вариантов аутентификации.
Благодаря полностью переработанному интерфейсу плагинов для EC2 и S3 стало проще работать с этими сервисами Amazon.
Подробнее о новых возможностях — ниже.
Благодаря появлению этой функции теперь в TeamCity можно задать комбинацию параметров и их значений, создав матрицу сборок. Каждая комбинация значений параметров генерирует уникальную сборку. После этого создается матричная сборка, куда входят несколько параллельно запущенных сборок.
Матричные сборки особенно удобны при тестировании ПО в разных конфигурациях, например в разных операционных системах или версиях браузера.
Подробнее о матричных сборках — в документации.
Считается, что в CI/CD-пайплайнах лучше и безопаснее использовать одноразовые билд-агенты. Однако это связано с рядом сложностей.
Каждый раз при запуске сборки на одноразовом агенте приходится скачивать из интернета большую библиотеку или сразу несколько библиотек, без которых сборка невозможна. В результате увеличивается время сборки, откладывается начало процесса.
Теперь в этом нет необходимости.
Кэширование сборок поможет оптимизировать время выполнения CI/CD: все файлы, от которых зависит проект, скачиваются один раз, а затем используются по мере необходимости.
Подробнее о кэшировании сборок — в документации.
В версии 2023.11 мы полностью пересмотрели подход к настройке облачных профилей и образов. Новый интерфейс поможет в этом, предложив подходящие параметры.
Теперь вы можете использовать инстансы EC2 для Mac, запускать билд-агенты на спотовых инстансах AWS EC2, используя показатели размещения спотов, и многое другое.
Кроме того, плагин S3 получил новый, более простой и интуитивно понятный интерфейс. Он позволяет удобно работать как с корзинами Amazon S3, так и с S3-совместимыми хранилищами.
Подробнее читайте в документации.
В версии 2023.05, мы добавили новый вариант подключения к GitHub: вместо традиционной аутентификации с помощью OAuth можно использовать GitHub Apps.
Начиная с версии 2023.11, установить такое подключение станет проще: вам больше не придется настраивать его вручную и регистрировать новые приложения в GitHub.
Кроме того, теперь для аутентификации при установлении соединения через GitHub App можно также использовать безличные обновляемые токены на страницах настройки Commit Status Publisher, Pull Requests и баг-трекера GitHub.
Начиная с версии 2023.11, можно настроить TeamCity так, чтобы он игнорировал черновики merge-реквестов в функции сборки Pull Requests для GitLab.
Функции Commit Status Publisher и Pull Requests для GitLab-репозиториев теперь используют для аутентификации обновляемые токены OAuth.
Функции Commit Status Publisher и Pull Requests для GitLab-репозиториев теперь могут использовать для аутентификации обновляемые токены приложений.
Новая версия TeamCity поддерживает обновляемые токены OAuth для функций сборки Commit Status Publisher и Pull Requests для Azure DevOps.
Подробнее читайте в документации.
В этой версии мы расширили возможности аутентификации в Bitbucket.
Помимо паролей приложения и аутентификации по учетным данным корня VCS, TeamCity поддерживает также обновляемые и постоянные токены доступа в качестве способа аутентификации в рамках функции сборки «Pull Requests» для Bitbucket Cloud.
Теперь функция Pull Requests может использовать обновляемые токены OAuth для подключения к репозиториям Bitbucket Server / Data Center.
Подробнее читайте в документации.
Мы также улучшили существующую интеграцию Swarm и TeamCity. Она позволяет использовать в Swarm статусы сборки из TeamCity, а также переходить из интерфейса TeamCity в интерфейс Swarm.
Начиная с версии 2023.11, можно настроить публикацию TeamCity для функции сборки Commit Status Publisher в Perforce Helix Swarm, интегрировав ее с пользовательскими рабочими процессами, которые были настроены в Swarm ранее. Кроме того, Commit Status Publisher больше не требует учетных данных пользователей с правами администратора.
Теперь интеграцию в TeamCity можно настроить без использования учетных данных пользователей с правами администратора в Swarm. Обновленные возможности интеграции позволяют также включить в пользовательские рабочие процессы критерии качества, основанные на проверках TeamCity.
Подробнее читайте в документации.
Теперь отдельные пулы агентов можно пометить как избранные и переходить к ним из одного места. Это удобно, если вам нужен доступ к пулам агентов, за которые вы отвечаете.
Доступ к агентам через терминал — уникальная функция TeamCity. Удаленный терминал, который можно открыть из интерфейса TeamCity, обеспечивает быстрый и удобный прямой доступ к машине агента. Функция работает на Linux и Windows (при использовании PowerShell) и macOS.
Начиная с версии 2023.11, вам не придется переключать вкладки, чтобы открыть терминалы, — они открываются на той же странице интерфейса TeamCity.
В TeamCity 2023.05 появилось много новых функций, которые вы давно ждали, в том числе темная тема, улучшенный доступ к агентам через терминал, а также улучшения многоузловых развертываний. Интеграция TeamCity с Let's Encrypt и двухфакторная аутентификация для настраиваемых групп пользователей повышают безопасность решения. Кроме того, в этой версии появились такие возможности, как подключение в качестве GitHub App и отправка сообщений в Slack прямо из выполняемой сборки.
Очень важно, чтобы разработчикам было комфортно работать с инструментами, которыми они пользуются каждый день. Поэтому мы добавили одну из тех функций, за которые вы чаще всего голосовали в нашем трекере, — темную тему.
Она снижает нагрузку на глаза и помогает сосредоточиться на работе. Кроме того, некоторые считают, что она просто красивее.
Темная тема доступна как в классическом интерфейсе TeamCity, так и в интерфейсе Sakura. В настройках можно выбрать светлую (Light), темную (Dark) или системную (System) тему. В последнем случае интерфейс автоматически построится под настройки ОС.
В версии 2023.05 можно прямо в интерфейсе TeamCity открывать удаленные терминалы для доступа к машинам агентов. Благодаря этому удобно просматривать журналы агентов, проверять, какое ПО установлено, выполнять отладку тех или иных ошибок агентов.
Это особенно удобно при диагностике ошибок агента, поскольку при использовании терминала не надо хранить SSH-ключи для подключения к агентам. Функция работает на Mac, Linux и Windows (при использовании PowerShell).
В новой версии мы также улучшили логику распределения запросов, чтобы нагрузка на основной и вторичные узлы распределялась равномерно.
Чтобы улучшить масштабирование TeamCity, мы сделали узлы полностью взаимозаменяемыми. Все узлы в сети TeamCity участвуют в распределении запросов пользователей. В результате нагрузка, создаваемая пользователями веб-интерфейса, распределяется более равномерно между всеми узлами.
В версии TeamCity 2023.05 для опроса репозиториев VCS можно использовать сразу несколько узлов. Делегирование этой задачи разным узлам приводит к более равномерному распределению нагрузки, более быстрому определению новых коммитов и ускоренному запуску сборки.
Все это помогает упростить процессы сборки, тестирования и развертывания, сократить задержки и повысить общую эффективность работы.
Безопасность — один из главных приоритетов при разработке TeamCity. Чтобы снизить риск утечки данных и перебоев в работе, мы реализовали следующие возможности.
В новой версии TeamCity появилась интеграция с Let's Encrypt — центром сертификации, предоставляющим бесплатные автоматизированные цифровые сертификаты для использования протокола HTTPS на веб-сайтах. Подключаясь к Let's Encrypt, TeamCity автоматически получает и устанавливает действительный сертификат, который в дальнейшем будет обновляться без каких-либо усилий со стороны пользователя.
В предыдущих версиях включить двухфакторную аутентификацию можно было только для всего сервера. Теперь вы можете создавать произвольные группы пользователей и включать для них обязательную двухфакторную аутентификацию, даже если на сервере действует режим Optional.
Новой версии TeamCity можно разрешить работать с GitHub в качестве GitHub App. Это новая функция, позволяющая выполнять различные действия и использовать GitHub API, не создавая отдельные учетные записи и не действуя от имени пользователя.
Главное преимущество подключения в качестве GitHub App в том, что TeamCity больше не использует учетные данные пользователя для доступа к GitHub. Вместо этого экземпляру GitHub App в организации или учетной записи пользователя в GitHub предоставляются анонимные возобновляемые токены. Это особенно важно при увольнении сотрудника или изменении его прав доступа.
В TeamCity Cloud 2022.12 появилась возможность настроить функцию сборки Pull Requests, так чтобы она игнорировала черновики пул-реквестов в GitHub.
В версии 2023.05 игнорировать черновики пул-реквестов можно также при использовании функции сборки Pull Requests в TeamCity On-Premises. Если выбрать в настройках вариант Ignore Drafts, TeamCity будет пропускать любые черновики пул-реквестов, пока их статус не изменится.
В TeamCity и раньше можно было настроить отправку уведомлений о тех или иных событиях по электронной почте или в Slack. В версии 2023.05 эта функция была доработана: теперь уведомления в Slack и по электронной почте можно отправлять с помощью служебных сообщений.
Чтобы гарантировать доставку сообщений именно тем, кому они предназначены, а также ограничить использование ссылок на ненадежные внешние источники, в служебные сообщения встроены функции безопасности.
Одна из ситуаций, когда это особенно важно, — отправка сообщений при наступлении определенных условий или критических событий: например, если в текущем развертывании возникла ошибка и ее нужно быстро обработать, пока идет сборка.
Помимо отправки настраиваемых уведомлений, с помощью служебных сообщений можно добавлять и удалять теги сборки.
Теги позволяют классифицировать и сортировать сборки по определенным критериям. Например, с помощью тегов можно обозначать причины ошибок сборки — тогда будет легче найти сборки со сходными источниками ошибок.
В версии 2023.05 мы добавили поддержку контейнерного движка Podman, позволяющего управлять контейнерами, даже не имея прав администратора. Он полностью поддерживает команды Docker, поэтому между движками легко переключаться.
Подробнее об этих и других изменениях читайте в документации.
Как и всегда, мы будем рады вашим отзывам! Вы можете отставить их в виде заявки в службу поддержки.
В TeamCity 2022.10 мы сделали Sakura интерфейсом по умолчанию, добавили много новых облачных возможностей, включая систему управления учетными данными AWS и прямой доступ через терминал к билд-агентам на базе AWS EC2, а также улучшили интеграцию с VCS. Администраторы серверов смогут оценить упрощенный способ настройки HTTPS для локальных установок TeamCity. Кроме того, поддерживается модуль аутентификации для входа через Google-аккаунты и несколько новых функций, которые вы давно ждали.
Цветущая сакура — это символ обновления и оптимизма, и именно с такими чувствами мы сделали Sakura UI интерфейсом по умолчанию в TeamCity 2022.10.
Sakura — современный, быстрый и красивый интерфейс. Он включает в себя всю функциональность классического интерфейса TeamCity, учитывает потребности пользователей с ограниченными возможностями и предоставляет много новых уникальных функций. Мы работали над Sakura больше четырех лет и постарались довести до совершенства каждую мелочь. Нам удалось протестировать его на тысячах внутренних и внешних проектов, в том числе на таких гигантах, как IntelliJ IDEA и Kotlin. Уверены: вам он тоже понравится!
Мы знаем, что многие пользователи TeamCity привыкли к старому интерфейсу, поэтому он будет доступен для них еще некоторое время. Однако в одной из следующих версий мы полностью откажемся от него в пользу Sakura, и если, на ваш взгляд, мы что-то упустили, пожалуйста, создайте задачу в YouTrack.
Все больше пользователей TeamCity переносят свои установки в облако, поэтому мы продолжаем развивать облачные возможности.
Мы разработали новую систему управления учетными данными AWS, которая выдает временные краткосрочные ключи AWS для обеспечения безопасности ваших сборок.
Пайплайн доставки должен быть прозрачным и доступным. Для упрощения отладки облачной инфраструктуры мы добавили возможность устанавливать сеансы терминала для билд-агентов AWS EC2 прямо из интерфейса TeamCity, не заходя в консоль управления облачного провайдера и не настраивая списки доступа к сети и пары SSH-ключей.
Эта функция контролируется разрешением Open an interactive session to the agent, которое по умолчанию есть только у администраторов серверов, но при необходимости его можно выдать и другим пользователям.
Если вам приходилось производить отладку в CI/CD-пайплайне, который выполняется в облаке, вы знаете, что это бывает непросто. Мало того, что поиск и запуск нужного агента требует времени и усилий, так еще надо убедиться, что новые сборки не запустятся в ходе процесса.
Здесь на помощь приходит режим обслуживания. В этом режиме по окончании сборки TeamCity не будет автоматически освобождать облачные агенты для запуска новых сборок, а вы сможете заняться устранением неполадок.
Начиная с TeamCity 2022.10, вторичные серверы TeamCity могут запускать и останавливать облачные экземпляры, обеспечивая бесперебойную непрерывную интеграцию в облаке во время обслуживания основного сервера.
В TeamCity 2022.10 вас ждут два улучшения интеграции с инструментами Perforce:
TeamCity 2022.10 теперь использует кратковременные OAuth-токены при работе с GitLab, Bitbucket Cloud и Azure DevOps, что позволяет создавать корни VCS без необходимости вручную генерировать токены доступа для этих сервисов.
Безопасность CI/CD-пайплайна важна как никогда. В версии 2022.10 мы упростили настройку HTTPS для вашего сервера TeamCity. Вам нужно только лишь загрузить HTTPS-сертификат или цепочку сертификатов в формате PEM, а TeamCity сделает все остальное.
Теперь вы можете создавать временные токены доступа, которые позволят другим людям входить в TeamCity через ваш аккаунт, но с ограниченным набором прав, например, только с правом просмотра одного конкретного проекта. Это удобно, когда нужно, чтобы кто-то помог вам отладить пайплайн, или при подготовке демо.
Чтобы охватить больше сценариев использования, TeamCity теперь поддерживает аутентификацию через Google-аккаунты. TeamCity мгновенно сопоставит адрес электронной почты Google с пользователем в системе и позволит начать работу без ввода пароля. Если у вас в команде появляется новый сотрудник, профиль в TeamCity будет создан автоматически при условии, что адрес электронной почты нового пользователя относится к одному из указанных вами доменных имен.
Функция Free Disk Space теперь отслеживает размер артефактов и автоматически вычисляет, сколько нужно места на диске для разрешения зависимостей артефактов. Это упрощает работу, поскольку вам необязательно знать размер артефактов, загружаемых во время сборки, и единственное, что нужно указать, это объем дискового пространства, который необходим для самого процесса сборки.
Начиная с TeamCity 2022.10, вы можете продвигать персональные сборки. Сборки, которые запускаются после продвижения, также становятся персональными.
Это основные нововведения TeamCity 2022.10. Подробнее об этих и других изменениях читайте в документации.
TeamCity 2022.04 поддерживает параллельное тестирование, благодаря которому вы можете тестировать ваши проекты в разы быстрее. Новые возможности анализа кода ускоряют ревью и упрощают поддержку проектов. Тех, кто запускает сборки в облаке, ждет улучшенная интеграция с Amazon S3 и Amazon Cloudfront, а также возможность управлять конфигурациями Cloud Profile программно. Мы также расширили интеграцию с VCS, добавили новые варианты конфигурации и обновили интерфейс.
В TeamCity появилась возможность параллельного тестирования. За счет распределения тестов между несколькими билд-агентами общее время тестирования сокращается. В отличие от других CI/CD-решений, TeamCity распараллеливает тесты, опираясь не только на результаты последнего запуска, а на всю историю запусков. Поэтому вы можете смело рефакторить код, ломать тесты — делать все, что хотите, не рискуя нарушить процесс распараллеливания или затормозить пайплайны.
В нашем случае параллельное тестирование существенно изменило процесс разработки и тестирования TeamCity. Интеграционное тестирование теперь занимает в 10 раз меньше времени (около 20 минут вместо 4 часов).
Производить параллельное тестирование можно по-разному. Проще всего это делать с помощью билд-ранеров Maven, Gradle или .NET, поскольку они поддерживают эту возможность прямо из коробки. Для других билд-раннеров и пользовательских билд-скриптов TeamCity создает специальные файлы, описывающие как оптимально распараллелить ваши тесты.
TeamCity помогает исправлять ошибки и улучшать качество вашего кода разными способами. В версии 2022.04 появился еще один: теперь можно активировать продвинутые инспекции качества кода, позволяющие выполнять новые действия (реализация JetBrains Qodana), например:
Добавив инспекции в пайплайн сборки, вы ускорите ревью кода, упростите поддержку проектов и повысите продуктивность команды. Приглашаем посмотреть демонстрационное видео.
Мир стремительно переходит в облако, и многие наши клиенты следуют этой тенденции. В TeamCity 2022.04 мы улучшили интеграцию с Amazon Web Services и добавили новые варианты конфигурации.
Интеграция TeamCity с Amazon EC2 и Amazon S3 позволяет легко масштабировать инфраструктуру сборки, вне зависимости от объема и сложности проекта. С TeamCity 2022.04 можно не только сохранять в Amazon S3 новые артефакты сборки, но и перемещать туда существующие из локального хранилища TeamCity. Если ваша команда только приступила к миграции с локальной инфраструктуры на облачную платформу, вы сможете извлечь максимум пользы с самого начала.
Чем дальше вы находитесь от корзины S3, в которой хранятся ваши артефакты сборки, тем дольше и дороже вам обходится работа с ними. Поэтому мы добавили в TeamCity нативную поддержку Amazon CloudFront — сервиса, позволяющего работать с артефактами, которые кэшируются на ближайших серверах AWS. Это работает на всех уровнях (билд-агенты, веб-пользователи, API-запросы и пр.), а значит, вы сможете значительно ускорить процесс разработки.
Хранение CI/CD-конфигурации вместе с кодом проекта гарантирует, что проект можно в любой момент собрать, протестировать и развернуть. TeamCity 2022.04 расширяет Kotlin DSL: теперь у каждого проекта может быть своя конфигурация Cloud Profile.
Следуя плану развития TeamCity, мы начинаем заниматься улучшением процесса развертывания. Первым шагом в этом направлении стала возможность утверждать сборки. Теперь можно создавать конфигурации сборки, которые не будут запускаться автоматически, а останутся в очереди, пока их не одобрят все рецензенты. Это особенно полезно, если вы не хотите ограничивать доступ разработчиков к продакшн-окружению, но предпочитаете контролировать процесс развертывания.
Нам важно, что вы думаете. Если вы хотите предложить новую функциональность в области развертывания, сообщите нам об этом в YouTrack.
Мы продолжаем улучшать интеграцию с JetBrains Space и в новой версии добавили поддержку merge-реквестов. Теперь статус сборки merge-реквеста публикуется в истории реквеста в Space.
Список поддерживаемых баг-трекеров теперь включает GitLab. Все просто: если в сообщении коммита упоминается ID задачи, TeamCity автоматически добавит ссылку на соответствующую зачачу в GitLab и покажет информацию о ней.
Раньше функция Commit Status Publisher отправляла информацию в систему контроля версий только после того, как запускалась сборка, а это могло произойти намного позже коммита. Теперь TeamCity обновляет статус коммита сразу после добавления соответствующей сборки в очередь, предоставляя вам самую актуальную информацию. Это работает для всех поддерживаемых VCS-сервисов, включая GitHub, GitLab, Space, Bitbucket и Azure DevOps.
Теперь при запуске произвольной сборки можно указывать конкретную ревизию, и не обязательно, чтобы конфигурация сборки знала об этой ревизии. Это дает вам гораздо больше гибкости, если вы захотите воспроизвести старые сборки, развернуть старые версии, отладить новые конфигурации сборки и во многих других ситуациях.
В TeamCity всегда можно было ограничивать количество одновременных сборок для определенной конфигурации. Версия 2022.04 позволяет оптимизировать распределение ресурсов и ограничивать количество параллельных сборок на уровне веток. К примеру, вы можете разрешить неограниченное количество сборок (и любое количество билд-агентов) для главной ветки и ограничить количество сборок до одной для функциональных веток.
Хотя уязвимость Log4Shell (CVE-2021-44228) не затрагивала TeamCity, некоторые сканеры безопасности не проверяли, какую именно версию фреймворка Log4J использует TeamCity, и в конечном счете указывали на эту уязвимость. Мы обновили Log4J до последней версии, и вы больше не будете получать ложноположительные отчеты.
Как и Log4Shell, уязвимость Spring4Shell (CVE-2022-22965) не затрагивает TeamCity. Однако, чтобы сканеры безопасности не давали ложноположительных отчетов, мы обновили Spring Framework, используемый в TeamCity, до последней версии.
По функциональности интерфейс Sakura все больше напоминает классический интерфейс TeamCity. Мы переработали страницы Agent Pools и Changes, а также значительно улучшили производительность всего интерфейса. Мы планируем сделать Sakura интерфейсом по умолчанию в TeamCity 2022.10. Следите за новостями!
И это далеко не все улучшения TeamCity. Полный список изменений и инструкции по обновлению, вы найдете в документации.