На этой странице мы рассказываем о новой функциональности TeamCity, которая находится в активной разработке или на этапе проектирования. Читайте о возможностях, которые появятся в TeamCity уже в ближайшем году.
Информация на этой странице обновляется после каждого релиза. Текущий статус готовящихся обновлений:
Мы хотим, чтобы в TeamCity было все необходимое для быстрых и эффективных CI/CD-процессов. Поэтому мы работаем над тем, чтобы упростить настройку и запуск сборок в облаке.
Разработчики по всему миру любят TeamCity за тесную интеграцию с инструментами сборки и внешними сервисами, и мы делаем все возможное, чтобы обеспечить им максимальную поддержку. В этом разделе мы рассказываем, какие функции планируем добавить в ближайшем будущем.
Когда несколько серверов TeamCity работают совместно, производительность и надежность CI/CD-процессов выходят на совершенно новый уровень. Мы улучшаем работу TeamCity в кластерной среде и расширяем возможности вторичных серверов.
Непрерывная интеграция — основа процесса разработки, поэтому очень важно обеспечить защиту, чтобы минимизировать риск кибератак и утечки данных. Мы разрабатываем новые функции, которые повысят безопасность CI/CD-пайплайнов.
Пользователи все чаще создают CI/CD-конфигурации программным способом, и это здорово. Мы планируем сделать Kotlin DSL еще более выразительным и простым в использовании.
Мы разрабатываем ряд новых функций, которые упростят автоматизацию DevOps-пайплайнов и помогут вам организовать более эффективный процесс разработки.
Мы продолжаем работать над созданием оптимального пользовательского интерфейса — быстрого, удобного и подходящего для самых разных рабочих процессов и методов разработки.
TeamCity Cloud — это облачная версия TeamCity, размещение и управление которой осуществляется JetBrains. В план развития решения включены новые функции.
TeamCity Pipelines — кодовое название нового продукта, над которым мы сейчас работаем. Он обеспечит простую и понятную настройку CI/CD-пайплайнов на основе умных функций, используемых в продуктах JetBrains.
Мы хотим, чтобы в TeamCity было все необходимое для быстрых и эффективных CI/CD-процессов. Поэтому мы работаем над тем, чтобы упростить настройку и запуск сборок в облаке.
Команды, использующие TeamCity в облаке, должны иметь возможность запускать сборки так же быстро, как при локальной установке. Благодаря постоянным кэшам облачные билд-агенты смогут обмениваться зависимостями сборки, например, артефактами Maven и пакетами NPM. Это существенно экономит время и сокращает сетевой трафик.
Кроме того, чем меньше загрузок, тем лучше для планеты: это экономит электричество и снижает углеродный след. Так что такая функциональность сделает ваши сборки более экологичными.
Недавно мы выпустили новую систему управления учетными данными — AWS Connection. Она обеспечивает функции сборки и облачные интеграции TeamCity временными учетными данными для доступа в AWS, предоставляя ровно столько прав, сколько нужно для выполнения задачи. Следующим этапом мы планируем поддержку AWS Connection во всех доступных TeamCity-плагинах. Это избавит вашу команду от необходимости вручную настраивать доступ к EC2, ECR, S3 и другим ресурсам.
Все больше пользователей предпочитают облачные билд-агенты: такая инфраструктура позволяет при необходимости быстро увеличить пропускную способность пайплайнов. Чтобы упростить миграцию в Microsoft Azure, мы планируем улучшить плагин TeamCity Azure и включить его в поставку TeamCity.
Инструмент TeamCity для создания образов позволяет создавать пользовательские образы ВМ для агентов TeamCity в разных окружениях. Это помогает ускорить сборку, используя заранее настроенные репозитории систем контроля версий, зависимости между сборками, Docker-образы и т. д.
Мы планируем обеспечить поддержку стандартного планировщика, например Kubernetes, HashiCorp Nomad, AWS ECS и т. п., чтобы простые задания сборки можно было запускать без указания и подготовки билд-агента.
Это позволит настраивать конфигурации сборки проектов, не задумываясь о том, какой исполнитель выполнит сборку.
Такой подход удобен для небольших простых задач, не требующих локального кэширования корней VCS, зависимостей и т. п. Кроме того, планировщики помогут оптимизировать использование ресурсов: они могут параллельно выполнять несколько разных задач на одном узле кластера.
Мы собираемся добавить новые варианты агентов для TeamCity Cloud, размещенных в облаке JetBrains. В частности, мы планируем воссоздать поминутные агенты для macOS и предоставить агенты для Linux на основе ARM.
Сейчас TeamCity Cloud предоставляет отдельный сервер каждому клиенту. Мы изучаем возможность хостинга нескольких проектов на одном сервере. Это позволит нам сократить расходы и, возможно, даже сделать бесплатную версию TeamCity Cloud.
Разработчики по всему миру любят TeamCity за тесную интеграцию с инструментами сборки и внешними сервисами, и мы делаем все возможное, чтобы обеспечить им максимальную поддержку. Здесь мы рассказываем о возможностях интеграции, которые планируем добавить в ближайшем будущем.
Сейчас функция сборки пул-реквестов использует спецификацию корневой ветки VCS и для веток с открытыми пул-реквестами, которые соответствуют определенным критериям фильтрации.
Мы хотим расширить эту функциональность, чтобы можно было автоматически запускать сборку для определенного набора пул-реквестов, а для других веток сборку нужно было бы запускать вручную.
Эта функция позволит настроить подключение (например, к GitHub) на уровне проекта. Вы сможете указать, должен ли TeamCity автоматически собирать любые пул-реквесты и информацию из баг-трекера прямо в настройках соединения, а также определить, какие конфигурации сборки должны публиковать статусы.
Это позволит сэкономить много времени, поскольку достаточно будет раз и навсегда задать настройки на уровне проекта.
Токены OAuth, выданные функцией подключений, хранятся во внутреннем хранилище токенов в TeamCity. Сейчас они извлекаются из хранилища при конфигурировании определенных настроек (например, корня VCS или функции сборки) через интерфейс администратора.
Мы планируем добавить интерфейс управления токенами. Это позволит просматривать информацию об использовании и областях доступа токенов, а также:
TeamCity позволяет масштабировать инфраструктуру до тысяч билд-агентов и десятков тысяч проектов. Однако в какой-то момент добавление новых проектов становится рутиной.
Мы хотим добавить функцию автоматического создания проекта в TeamCity при создании нового репозитория .teamcity.
В TeamCity есть встроенная поддержка пул-реквестов Github. С точки зрения TeamCity каждый пул-реквест представляет собой отдельную ветку. Мы планируем помечать эти ветки в интерфейсе, чтобы их сразу было видно.
С поддержкой GitHub Checks вы сможете получать более информативные отчеты обо всех событиях в ходе сборки, основанные на данных из GitHub.
Вот что это даст:
Сейчас функция сборки пул-реквестов в TeamCity предлагает только один фильтр. Мы планируем добавить новые фильтры: по статусу ревью, меткам, ролям авторов и т. д.
TeamCity предоставляет функциональность, которой нет ни у одного другого CI-решения. Неудивительно, что он так популярен среди разработчиков игр. Мы начинаем исследовать возможности использования TeamCity в геймдеве по трем основным направлениям:
Хотите использовать TeamCity для разработки игр? Пройдите небольшой опрос.
TeamCity предлагает нативную интеграцию с Perforce Helix Core — одной из самых распространенных систем контроля версий в разработке игр. Вот что мы планируем в отношении поддержки Perforce.
При использовании выгрузки с помощью агента создаются рабочие пространства Perforce. Даже когда агент TeamCity больше не используется, рабочие пространства сохраняются на сервере Perforce.
Чтобы они не занимали ресурсы сервера, мы планируем добавить автоматическое удаление рабочих пространств Perforce, созданных TeamCity для своих агентов, если последние неактивны.
В настоящее время Commit Status Publisher сообщает о каждом этапе сборки (постановка в очередь, запуск, успех/неудача и т. д.), но такая информация бывает избыточной.
Мы хотим, чтобы вы сами могли решать, какие комментарии для какого состояния должна отправлять система.
В настоящее время при выгрузке с помощью агента имя рабочего пространства Perforce генерируется автоматически. Мы планируем добавить возможность настройки шаблона для имени рабочего пространства. Шаблон будет использовать:
Unreal Engine — один из самых популярных движков для разработки игр. Мы разрабатываем новый плагин для Unreal Engine, который даст пользователям TeamCity следующие возможности:
Когда несколько узлов TeamCity работают совместно, производительность и надежность CI/CD-процессов выходят на совершенно новый уровень. Мы улучшаем работу TeamCity в кластерной среде, внедряя новые возможности многоузловых развертываний.
Обслуживание сервера не должно мешать разработчикам запускать сборку. Мы планируем вкладываться в создание возможностей для повышения отказоустойчивости TeamCity, в том числе в автоматическое преобразование вторичных узлов в основные. Кроме того, мы планируем отказаться от требования поддерживать единую директорию данных в многоузловом развертывании.
Мы планируем, что в дальнейшем все конфигурационные файлы будут храниться в локальном Git-репозитории. Этот репозиторий можно использовать для совместного использования конфигурационных файлов несколькими узлами TeamCity в многоузловом развертывании.
В результате мы сможем настроить уведомления о внесении любых изменений в эти файлы и обеспечить атомарность как изменений, так и уведомлений о них.
При многоузловом развертывании все узлы работают с файлами журналов сборки, которые хранятся в общей директории данных. Обычно «владельцем» одного файла является узел, на котором выполняется соответствующая сборка. Этот узел записывает информацию в файл, а остальные могут ее только считывать.
Однако, если узел TeamCity решит, что на узле-«владельце» файла произошла ошибка (при этом на самом деле узел работает нормально), другой узел может начать записывать данные в тот же файл журнала, и в результате файл будет поврежден.
Мы планируем создать отдельную службу файлов журнала, чтобы все узлы получали доступ к ней по HTTPS. Новый подход поможет избежать повреждения файлов журнала, когда два узла записывают информацию в один файл.
Идея состоит в том, чтобы все изменения (как общие, так и касающиеся отдельных проектов) передавались в указанный Git-репозиторий. Затем этот репозиторий может применяться для совместного использования конфигурационных файлов несколькими узлами TeamCity в многоузловом развертывании.
Кроме того, его можно использовать для аудита изменений настроек TeamCity (сделанных через интерфейс, Rest API или версионирование настроек).
Непрерывная интеграция — основа процесса разработки, поэтому очень важно обеспечить защиту, чтобы минимизировать риск кибератак и утечки данных. Мы не только постоянно работаем над повышением безопасности продукта, но и планируем добавить следующие возможности:
Благодаря этой функция TeamCity сможет перед запуском сборки получать значение параметра, хранящееся во внешнем хранилище параметров. Вы можете перейти в интерфейс параметров TeamCity и добавить параметр со ссылкой на внешнее хранилище. Функция будет полезна командам, которые хранят параметры во внешних хранилищах, например, в AWS Parameter Store, HashiCorp Vault, Azure App Configuration, Azure Key Vault и т. п.
Кроме того, репозиторий можно использовать для аудита изменений настроек TeamCity (сделанных через интерфейс, Rest API или версионирование настроек).
Мы разрабатываем функцию, которая будет выявлять пул- и merge-реквесты в форках всех поддерживаемых VCS-хостингов. Для повышения уровня безопасности мы планируем, что сборки, запущенные таким образом, нужно будет обязательно подтверждать вручную.
Благодаря выразительности Kotlin DSL пользователи все чаще создают CI/CD-конфигурации программным способом. Мы планируем улучшить эту функцию. Вот основные изменения, запланированные на ближайшее будущее.
Благодаря Kotlin DSL более опытным пользователям TeamCity проще повторно использовать настройки конфигураций сборки, и они экономят время и силы. Поскольку Kotlin DSL статистически типизирован, его использование в IDE также упрощает выявление доступных API.
В то же время мы понимаем, что незнание Kotlin или невозможность использования конкретной IDE не должны стать препятствием для настройки пайплайнов в TeamCity. Поэтому мы ищем способы упростить работу пользователей с TeamCity.
Чтобы упростить редактирование Kotlin-файлов в простых редакторах кода, (не IDE), мы планируем отказаться от явного указания импорта связанных с DSL пакетов в файлах .kt. Импорты будут автоматически обрабатываться на сервере TeamCity.
Это позволит компилировать код в любом редакторе: TeamCity гарантирует, что он будет работать.
Kotlin DSL дает возможность тонкой настройки пайплайнов, однако для небольших проектов он порой избыточно сложен. Поэтому мы планируем упростить базовый DSL для небольших проектов, чтобы можно было просто скопировать примеры DSL-кода из документации. В результате время конфигурирования существенно сократится.
Kotlin DSL предоставляет широкие возможности конфигурации CI/CD-проектов, но некоторые пользователи предпочитают использовать для настройки пайплайнов язык YAML.
Мы рассматриваем возможность добавления YAML в качестве одного из способов конфигурации проектов.
Если вы используете Kotlin DSL для настройки версии, и вам нужно внести изменения в эти настройки, TeamCity сможет открыть файл с нужным кодом из репозитория в сторонней системе. В результате вам не придется долго искать в репозитории тот самый файл.
Мы планируем реализовать прозрачное и гибкое управление лицензиями серверов и агентов через JetBrains-аккаунт. Кроме того, мы хотим, чтобы TeamCity получал эти лицензии в реальном времени и не нужно было генерировать и скачивать лицензионные ключи отдельно.
Мы планируем:
Мы планируем добавить новую функцию матричных сборок, позволяющую TeamCity брать набор параметров и запускать сборку для каждого их сочетания. Это особенно удобно, когда нужно запустить одну и ту же сборку или тест в разных окружениях: например, в разных операционных системах, на разных версиях Java/.NET, в разных браузерах и т. п.
Матричные сборки существенно экономят время и усилия, позволяя один раз выбрать набор заранее определенных параметров (например, ОС и окружение), а затем запускать его параллельно на других конфигурациях сборок.
Мы планируем реализовать сохранение истории развернутых сборок.
Это позволит просматривать текущий статус всех развертываний, в том числе версии, развернутые в производственной и тестовой среде.
Кроме того, можно будет посмотреть отчеты об истории развертывания на всех инстансах. На панели мониторинга развертывания будет отображаться список всех инстансов, их текущий статус (идет развертывание, успех, неудача) и подробная информация о соответствующей сборке (время сборки, агент, кто запустил сборку и т. п.)
Хотели бы вы запускать сборку не сразу, а в выбранное время?
Мы разрабатываем функцию, которая позволит планировать запуск сборки на определенное время (с указанием часового пояса) или отложить его (например, на два часа).
Сборка будет добавлена в очередь и запущена в указанное время.
Мы рассматриваем возможность передачи значения, зафиксированного в композитной сборке, в сборки, связанные с ней зависимостями. Кроме того, в будущем мы хотим дать пользователям TeamCity возможность блокировать ресурсы для набора сборок, связанных снэпшот-зависимостями.
Большинство разработчиков используют CI/CD каждый день, и мы хотим, чтобы им было максимально удобно работать с TeamCity.
Начиная с версии 2022.10, в TeamCity по умолчанию используется интерфейс Sakura. Теперь мы работаем над тем, чтобы функциональность классического интерфейса и Sakura полностью совпадала. Для этого мы готовим новую реализацию страниц и дорабатываем подсистему плагинов, чтобы встроить их вкладки в интерфейс Sakura.
TeamCity — эффективное CI/CD-решение, которое предлагает много продвинутых возможностей. Чтобы новичкам было проще освоиться в TeamCity и настроить инструмент под свои потребности, мы готовим руководства, касающиеся начала работы с решением. Интерактивные руководства и подсказки помогут начинающим пользователям максимально эффективно работать с TeamCity, а опытным — перейти с классического интерфейса на Sakura.
Для удобства начинающих пользователей TeamCity мы планируем добавить шаблонные демопроекты. С их помощью можно познакомиться с возможностями TeamCity, не подключая к решению собственную кодовую базу, и быстрее выполнить первую успешную сборку.
Интерактивные руководства помогут познакомиться с основными функциями TeamCity прямо в интерфейсе решения. В руководствах представлены различные сценарии использования TeamCity, которые позволят быстрее освоить инструмент.
Мы работаем над повышением производительности крупных развертываний TeamCity. Сейчас мы в основном занимаемся агентами и страницами проектов. Наша задача — сократить время до первого байта и время до интерактивности, уменьшить совокупное смещение макета и улучшить другие ключевые метрики взаимодействия с веб-интерфейсом. Пользователи TeamCity могут рассчитывать на более быстрое отображение и загрузку страниц во всех браузерах.
TeamCity предлагает обзор текущих проблем и их расследований на уровне проекта и сборки. Пользователи могут проанализировать ошибки конфигурации сборки, неудачные тесты, проблемы, по которым идет расследование, а также посмотреть, кто за них отвечает и какой сейчас статус.
Мы перерабатываем интерфейс, чтобы вам было удобнее получать сводную информацию по всем проблемам в выбранном проекте и их статусам. Теперь эта информация отображается на единой вкладке Problems.
Проблемы можно отфильтровать по типу (неудачные тесты, ошибки сборки, ошибки конфигурации сборки), статусу (игнорируется/не игнорируется) и ответственному за расследование.
Когда это обновление будет готово, станет удобнее просматривать сведения о существующих проблемах сборки и их статусе.
TeamCity Pipelines обеспечит простую и понятную настройку CI/CD-пайплайнов на основе умных функций, используемых в продуктах JetBrains.
TeamCity Pipelines — это попытка сместить фокус с отдельных шагов автоматизации сборок и тестов на настройку пайплайнов в целом. TeamCity Pipelines обеспечит простую и понятную настройку CI/CD-пайплайнов на основе умных функций, используемых в продуктах JetBrains.
Новый интеллектуальный редактор упрощает работу с CI/CD-пайплайнами любой сложности благодаря CI/CD-движку TeamCity, который может обрабатывать нагрузки корпоративного уровня. Умный помощник настройки, встроенный в TeamCity Pipelines, проведет пользователя через все этапы конфигурирования пайплайна, автоматически подсказывая, как оптимизировать работу.
Ниже — о некоторых новых возможностях TeamCity Pipelines, которые мы сейчас разрабатываем.
Kotlin DSL дает широкие возможности конфигурирования пайплайна программным способом. Однако некоторым пользователям удобнее создавать исходную конфигурацию CI/CD-проектов с помощью YAML, поскольку этот язык широко используется в сфере CI/CD.
TeamCity Pipelines позволит хранить настройки сборки, а также описывать задания и зависимости при помощи YAML-кода.
TeamCity может автоматически запускать тестовые наборы параллельно, основываясь на специальном алгоритме, безо всякого участия пользователя. Достаточно выбрать нужное количество билд-агентов для параллельного запуска тестов. Благодаря этому можно будет значительно сократить время сборки при последующем запуске.
Иногда бывает трудно понять, какое ПО установлено на билд-агентах TeamCity, какие ОС они используют и как можно изменить билд-агенты в облаке JetBrains.
Мы хотим разработать своего рода песочницу для агентов, где можно будет выполнять скрипты на агенте, не запуская пайплайн. Пользователи смогут подключаться к агентам в песочнице для расследования ошибок и отладки после завершения сборки.
Кроме того, можно будет открывать терминалы агентов прямо из интерфейса TeamCity Pipelines, чтобы быстро проверить окружение и выполнить отладку по ошибкам именно этого агента.
Если на агенте нет ПО, необходимого для конфигурации пайплайна, сборку можно запустить в Docker-контейнере.
The enhanced Docker integration in TeamCity Pipelines will allow you to use the autocomplete feature to find the correct Docker image from https://hub.docker.com/. Кроме того, будет выводиться список ранее использовавшихся Docker-образов со ссылками на каждый найденный образ. Найти нужный образ можно будет быстрее и проще.
Мы изучаем возможность создания удобного решения на тот случай, если конкретного образа в Docker Hub не существует. Пользователи смогут сослаться на Docker-файл из текущего репозитория VCS.
За счет умной параллелизации тестов, повторного использования сборок, кэширования и других возможностей, TeamCity значительно сокращает время сборки. Сейчас TeamCity показывает общее время оптимизации (сэкономленное время) для каждого запуска сборки.
Мы планируем расширить эту функцию, чтобы предоставлять более полную информацию о том, как было оптимизировано выполнение сборки. Кроме того, мы хотим подготовить список всех возможных оптимизаций, которые позволят дополнительно сократить время сборки.
Зарегистрируйтесь для участия в программе раннего доступа к TeamCity Pipelines.
Мы хотим, чтобы процесс установки и поддержки инфраструктуры не отнимал у вас много времени и сил. Поэтому мы предлагаем TeamCity Cloud — полностью управляемое CI/CD-решение, размещенное в облаке JetBrains под нашим управлением. Облачная версия предлагает те же возможности, что и локальная, за исключением некоторых административных функций, которые не нужны при облачной установке.
Весь разрабатываемый функционал продукта будет доступен и в локальной, и в облачной версии, но в план развития TeamCity Cloud включен ряд дополнительных возможностей: