Облачная функциональ­ность

Мы хотим, чтобы в TeamCity было все необходимое для быстрых и эффективных CI/CD-процессов. Поэтому мы работаем над тем, чтобы упростить настройку и запуск сборок в облаке.

Постоянные кэши для облачных агентов

Разрабатываем

Команды, использующие TeamCity в облаке, должны иметь возможность запускать сборки так же быстро, как при локальной установке. Благодаря постоянным кэшам облачные билд-агенты смогут обмениваться зависимостями сборки, например, артефактами Maven и пакетами NPM. Это существенно экономит время и сокращает сетевой трафик.

Кроме того, чем меньше загрузок, тем лучше для планеты: это экономит электричество и снижает углеродный след. Так что такая функциональность сделает ваши сборки более экологичными.

Подробнее

Новая модель управления учетными данными AWS

Разрабатываем

Недавно мы выпустили новую систему управления учетными данными — AWS Connection. Она обеспечивает функции сборки и облачные интеграции TeamCity временными учетными данными для доступа в AWS, предоставляя ровно столько прав, сколько нужно для выполнения задачи. Следующим этапом мы планируем поддержку AWS Connection во всех доступных TeamCity-плагинах. Это избавит вашу команду от необходимости вручную настраивать доступ к EC2, ECR, S3 и другим ресурсам.

Встроенная поддержка Microsoft Azure

Разрабатываем

Все больше пользователей предпочитают облачные билд-агенты: такая инфраструктура позволяет при необходимости быстро увеличить пропускную способность пайплайнов. Чтобы упростить миграцию в Microsoft Azure, мы планируем улучшить плагин TeamCity Azure и включить его в поставку TeamCity.

Инструмент для создания образов билд-агентов

Разрабатываем

Инструмент TeamCity для создания образов позволяет создавать пользовательские образы ВМ для агентов TeamCity в разных окружениях. Это помогает ускорить сборку, используя заранее настроенные репозитории систем контроля версий, зависимости между сборками, Docker-образы и т. д.

Подробнее

Режим исполнителя

Разрабатываем

Мы планируем обеспечить поддержку стандартного планировщика, например Kubernetes, HashiCorp Nomad, AWS ECS и т. п., чтобы простые задания сборки можно было запускать без указания и подготовки билд-агента.

Это позволит настраивать конфигурации сборки проектов, не задумываясь о том, какой исполнитель выполнит сборку.

Такой подход удобен для небольших простых задач, не требующих локального кэширования корней VCS, зависимостей и т. п. Кроме того, планировщики помогут оптимизировать использование ресурсов: они могут параллельно выполнять несколько разных задач на одном узле кластера.

Агенты в облаке JetBrains

Разрабатываем

Мы собираемся добавить новые варианты агентов для TeamCity Cloud, размещенных в облаке JetBrains. В частности, мы планируем воссоздать поминутные агенты для macOS и предоставить агенты для Linux на основе ARM.

Многопользовательские серверы TeamCity

Разрабатываем

Сейчас TeamCity Cloud предоставляет отдельный сервер каждому клиенту. Мы изучаем возможность хостинга нескольких проектов на одном сервере. Это позволит нам сократить расходы и, возможно, даже сделать бесплатную версию TeamCity Cloud.

Билд-раннеры и интеграции

Разработчики по всему миру любят TeamCity за тесную интеграцию с инструментами сборки и внешними сервисами, и мы делаем все возможное, чтобы обеспечить им максимальную поддержку. Здесь мы рассказываем о возможностях интеграции, которые планируем добавить в ближайшем будущем.

Функция сборки пул-реквестов для управления запуском сборки

Проектируем

Сейчас функция сборки пул-реквестов использует спецификацию корневой ветки VCS и для веток с открытыми пул-реквестами, которые соответствуют определенным критериям фильтрации.

Мы хотим расширить эту функциональность, чтобы можно было автоматически запускать сборку для определенного набора пул-реквестов, а для других веток сборку нужно было бы запускать вручную.

Подробнее

Консолидация функций проекта и сборки, касающихся интеграции

Исследуем

Эта функция позволит настроить подключение (например, к GitHub) на уровне проекта. Вы сможете указать, должен ли TeamCity автоматически собирать любые пул-реквесты и информацию из баг-трекера прямо в настройках соединения, а также определить, какие конфигурации сборки должны публиковать статусы.

Это позволит сэкономить много времени, поскольку достаточно будет раз и навсегда задать настройки на уровне проекта.

Интерфейс управления токенами

Исследуем

Токены OAuth, выданные функцией подключений, хранятся во внутреннем хранилище токенов в TeamCity. Сейчас они извлекаются из хранилища при конфигурировании определенных настроек (например, корня VCS или функции сборки) через интерфейс администратора.

Мы планируем добавить интерфейс управления токенами. Это позволит просматривать информацию об использовании и областях доступа токенов, а также:

  • просматривать ID токенов и подключения, учетные записи, использованные для выдачи токенов и т. д.;
  • выдавать новые токены, к которым можно обращаться по ID (например, из DSL-кода);
  • удалять токены из хранилища;
  • просматривать и изменять области доступа токенов в проекте;
  • просматривать информацию о фактическом использовании токенов из разных областей.

Подробнее

Автоматическая настройка новых проектов из VCS

Исследуем

TeamCity позволяет масштабировать инфраструктуру до тысяч билд-агентов и десятков тысяч проектов. Однако в какой-то момент добавление новых проектов становится рутиной.

Мы хотим добавить функцию автоматического создания проекта в TeamCity при создании нового репозитория .teamcity.

Проголосовать за эту функцию

Поддержка пул-реквестов в интерфейсе

Проектируем

В TeamCity есть встроенная поддержка пул-реквестов Github. С точки зрения TeamCity каждый пул-реквест представляет собой отдельную ветку. Мы планируем помечать эти ветки в интерфейсе, чтобы их сразу было видно.

Подробнее

Поддержка GitHub Checks

Проектируем

С поддержкой GitHub Checks вы сможете получать более информативные отчеты обо всех событиях в ходе сборки, основанные на данных из GitHub.

Вот что это даст:

  • расширенные гипертекстовые отчеты вместо простых статусов;
  • возможность аннотирования нужных мест в исходном коде (например, для инспекций).

Дополнительные фильтры для сборки пул-реквестов

Проектируем

Сейчас функция сборки пул-реквестов в TeamCity предлагает только один фильтр. Мы планируем добавить новые фильтры: по статусу ревью, меткам, ролям авторов и т. д.

Подробнее

Для разработки игр

Разрабатываем

TeamCity предоставляет функциональность, которой нет ни у одного другого CI-решения. Неудивительно, что он так популярен среди разработчиков игр. Мы начинаем исследовать возможности использования TeamCity в геймдеве по трем основным направлениям:

  • поддержка Unity;
  • поддержка Unreal Engine;
  • основные CI/CD-процессы в разработке игр.

Хотите использовать TeamCity для разработки игр? Пройдите небольшой опрос.

Улучшение интеграции с Perforce

TeamCity предлагает нативную интеграцию с Perforce Helix Core — одной из самых распространенных систем контроля версий в разработке игр. Вот что мы планируем в отношении поддержки Perforce.

Автоматическое удаление рабочих пространств Perforce, созданных TeamCity

Разрабатываем

При использовании выгрузки с помощью агента создаются рабочие пространства Perforce. Даже когда агент TeamCity больше не используется, рабочие пространства сохраняются на сервере Perforce.

Чтобы они не занимали ресурсы сервера, мы планируем добавить автоматическое удаление рабочих пространств Perforce, созданных TeamCity для своих агентов, если последние неактивны.

Следить за ходом работы

Расширение контроля над комментариями Commit Status Publisher к ревью в Helix Swarm

Разрабатываем

В настоящее время Commit Status Publisher сообщает о каждом этапе сборки (постановка в очередь, запуск, успех/неудача и т. д.), но такая информация бывает избыточной.

Мы хотим, чтобы вы сами могли решать, какие комментарии для какого состояния должна отправлять система.

Следить за ходом работы

Пользовательское имя рабочего пространства Perforce для выгрузки с помощью агента

Разрабатываем

В настоящее время при выгрузке с помощью агента имя рабочего пространства Perforce генерируется автоматически. Мы планируем добавить возможность настройки шаблона для имени рабочего пространства. Шаблон будет использовать:

  • ID проекта и ID конфигурации;
  • внешний ID корня системы контроля версий;
  • имя директории выгрузки.

Следить за ходом работы

Поддержка Unreal Engine

Разрабатываем

Unreal Engine — один из самых популярных движков для разработки игр. Мы разрабатываем новый плагин для Unreal Engine, который даст пользователям TeamCity следующие возможности:

  • обнаружение установленного Unreal Engine на билд-агентах;
  • выделенный билд-раннер для Unreal Engine;
  • автоматическое определение шагов сборки для Unreal Engine;
  • структурированные журналы сборки с подсветкой проблем;
  • отчеты о тестировании.

Развертывание с несколькими узлами

Когда несколько узлов TeamCity работают совместно, производительность и надежность CI/CD-процессов выходят на совершенно новый уровень. Мы улучшаем работу TeamCity в кластерной среде, внедряя новые возможности многоузловых развертываний.

Повышение отказоустойчивости

Разрабатываем

Обслуживание сервера не должно мешать разработчикам запускать сборку. Мы планируем вкладываться в создание возможностей для повышения отказоустойчивости TeamCity, в том числе в автоматическое преобразование вторичных узлов в основные. Кроме того, мы планируем отказаться от требования поддерживать единую директорию данных в многоузловом развертывании.

Улучшенное применение изменений к конфигурационным файлам

Разрабатываем

Мы планируем, что в дальнейшем все конфигурационные файлы будут храниться в локальном Git-репозитории. Этот репозиторий можно использовать для совместного использования конфигурационных файлов несколькими узлами TeamCity в многоузловом развертывании.

В результате мы сможем настроить уведомления о внесении любых изменений в эти файлы и обеспечить атомарность как изменений, так и уведомлений о них.

Отдельная служба журналов сборки

Проектируем

При многоузловом развертывании все узлы работают с файлами журналов сборки, которые хранятся в общей директории данных. Обычно «владельцем» одного файла является узел, на котором выполняется соответствующая сборка. Этот узел записывает информацию в файл, а остальные могут ее только считывать.

Однако, если узел TeamCity решит, что на узле-«владельце» файла произошла ошибка (при этом на самом деле узел работает нормально), другой узел может начать записывать данные в тот же файл журнала, и в результате файл будет поврежден.

Мы планируем создать отдельную службу файлов журнала, чтобы все узлы получали доступ к ней по HTTPS. Новый подход поможет избежать повреждения файлов журнала, когда два узла записывают информацию в один файл.

Коммит всех изменений конфигурации в Git-репозиторий

Исследуем

Идея состоит в том, чтобы все изменения (как общие, так и касающиеся отдельных проектов) передавались в указанный 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.

Независимость от импорта в IDE

Исследуем

Чтобы упростить редактирование Kotlin-файлов в простых редакторах кода, (не IDE), мы планируем отказаться от явного указания импорта связанных с DSL пакетов в файлах .kt. Импорты будут автоматически обрабатываться на сервере TeamCity.

Это позволит компилировать код в любом редакторе: TeamCity гарантирует, что он будет работать.

Упрощенный базовый DSL для небольших проектов

Исследуем

Kotlin DSL дает возможность тонкой настройки пайплайнов, однако для небольших проектов он порой избыточно сложен. Поэтому мы планируем упростить базовый DSL для небольших проектов, чтобы можно было просто скопировать примеры DSL-кода из документации. В результате время конфигурирования существенно сократится.

Эксперименты с YAML

Исследуем

Kotlin DSL предоставляет широкие возможности конфигурации CI/CD-проектов, но некоторые пользователи предпочитают использовать для настройки пайплайнов язык YAML.

Мы рассматриваем возможность добавления YAML в качестве одного из способов конфигурации проектов.

Проголосовать за эту функцию

Открытие репозитория версионируемых настроек из сторонней системы

Проектируем

Если вы используете Kotlin DSL для настройки версии, и вам нужно внести изменения в эти настройки, TeamCity сможет открыть файл с нужным кодом из репозитория в сторонней системе. В результате вам не придется долго искать в репозитории тот самый файл.

Подробнее

Улучшение непрерывной интеграции

Вход в систему через JetBrains-аккаунт и новый формат лицензии

Разрабатываем

Мы планируем реализовать прозрачное и гибкое управление лицензиями серверов и агентов через JetBrains-аккаунт. Кроме того, мы хотим, чтобы TeamCity получал эти лицензии в реальном времени и не нужно было генерировать и скачивать лицензионные ключи отдельно.

Мы планируем:

  1. Упростить управление лицензиями для пользователей TeamCity On-Premises, разрешив им управлять лицензиями серверов и билд-агентов через JetBrains-аккаунт, не скачивая множество файлов лицензионных ключей.
  2. Реализовать доступ к развертыванию TeamCity (включая TeamCity Professional) через JetBrains-аккаунт.

Матричные сборки

Разрабатываем

Мы планируем добавить новую функцию матричных сборок, позволяющую TeamCity брать набор параметров и запускать сборку для каждого их сочетания. Это особенно удобно, когда нужно запустить одну и ту же сборку или тест в разных окружениях: например, в разных операционных системах, на разных версиях Java/.NET, в разных браузерах и т. п.

Матричные сборки существенно экономят время и усилия, позволяя один раз выбрать набор заранее определенных параметров (например, ОС и окружение), а затем запускать его параллельно на других конфигурациях сборок.

Панели мониторинга развертывания

Разрабатываем

Мы планируем реализовать сохранение истории развернутых сборок.

Это позволит просматривать текущий статус всех развертываний, в том числе версии, развернутые в производственной и тестовой среде.

Кроме того, можно будет посмотреть отчеты об истории развертывания на всех инстансах. На панели мониторинга развертывания будет отображаться список всех инстансов, их текущий статус (идет развертывание, успех, неудача) и подробная информация о соответствующей сборке (время сборки, агент, кто запустил сборку и т. п.)

Следить за ходом работы

Настройка запуска сборки в определенное время

Разрабатываем

Хотели бы вы запускать сборку не сразу, а в выбранное время?

Мы разрабатываем функцию, которая позволит планировать запуск сборки на определенное время (с указанием часового пояса) или отложить его (например, на два часа).

Сборка будет добавлена в очередь и запущена в указанное время.

Следить за ходом работы

Использование общих ресурсов в композитных сборках

Исследуем

Мы рассматриваем возможность передачи значения, зафиксированного в композитной сборке, в сборки, связанные с ней зависимостями. Кроме того, в будущем мы хотим дать пользователям TeamCity возможность блокировать ресурсы для набора сборок, связанных снэпшот-зависимостями.

Подробнее

Интерфейс TeamCity

Большинство разработчиков используют CI/CD каждый день, и мы хотим, чтобы им было максимально удобно работать с TeamCity.

Перенос вкладок в интерфейс Sakura

Разрабатываем

Начиная с версии 2022.10, в TeamCity по умолчанию используется интерфейс Sakura. Теперь мы работаем над тем, чтобы функциональность классического интерфейса и Sakura полностью совпадала. Для этого мы готовим новую реализацию страниц и дорабатываем подсистему плагинов, чтобы встроить их вкладки в интерфейс Sakura.

Упрощение знакомства пользователей с TeamCity

Разрабатываем

TeamCity — эффективное CI/CD-решение, которое предлагает много продвинутых возможностей. Чтобы новичкам было проще освоиться в TeamCity и настроить инструмент под свои потребности, мы готовим руководства, касающиеся начала работы с решением. Интерактивные руководства и подсказки помогут начинающим пользователям максимально эффективно работать с TeamCity, а опытным — перейти с классического интерфейса на Sakura.

Интерактивные руководства и шаблоны проектов

Проектируем

Для удобства начинающих пользователей TeamCity мы планируем добавить шаблонные демопроекты. С их помощью можно познакомиться с возможностями TeamCity, не подключая к решению собственную кодовую базу, и быстрее выполнить первую успешную сборку.

Интерактивные руководства помогут познакомиться с основными функциями TeamCity прямо в интерфейсе решения. В руководствах представлены различные сценарии использования TeamCity, которые позволят быстрее освоить инструмент.

Производительность интерфейса Sakura

Разрабатываем

Мы работаем над повышением производительности крупных развертываний TeamCity. Сейчас мы в основном занимаемся агентами и страницами проектов. Наша задача — сократить время до первого байта и время до интерактивности, уменьшить совокупное смещение макета и улучшить другие ключевые метрики взаимодействия с веб-интерфейсом. Пользователи TeamCity могут рассчитывать на более быстрое отображение и загрузку страниц во всех браузерах.

Интерфейс Sakura: вкладка Problems

Разрабатываем

TeamCity предлагает обзор текущих проблем и их расследований на уровне проекта и сборки. Пользователи могут проанализировать ошибки конфигурации сборки, неудачные тесты, проблемы, по которым идет расследование, а также посмотреть, кто за них отвечает и какой сейчас статус.

Проблемы со сборкой

Мы перерабатываем интерфейс, чтобы вам было удобнее получать сводную информацию по всем проблемам в выбранном проекте и их статусам. Теперь эта информация отображается на единой вкладке Problems.

Проблемы можно отфильтровать по типу (неудачные тесты, ошибки сборки, ошибки конфигурации сборки), статусу (игнорируется/не игнорируется) и ответственному за расследование.

Когда это обновление будет готово, станет удобнее просматривать сведения о существующих проблемах сборки и их статусе.

Проблемы со сборкой

TeamCity Pipelines

TeamCity Pipelines обеспечит простую и понятную настройку CI/CD-пайплайнов на основе умных функций, используемых в продуктах JetBrains.

TeamCity Pipelines

TeamCity Pipelines — это попытка сместить фокус с отдельных шагов автоматизации сборок и тестов на настройку пайплайнов в целом. TeamCity Pipelines обеспечит простую и понятную настройку CI/CD-пайплайнов на основе умных функций, используемых в продуктах JetBrains.

Новый интеллектуальный редактор упрощает работу с CI/CD-пайплайнами любой сложности благодаря CI/CD-движку TeamCity, который может обрабатывать нагрузки корпоративного уровня. Умный помощник настройки, встроенный в TeamCity Pipelines, проведет пользователя через все этапы конфигурирования пайплайна, автоматически подсказывая, как оптимизировать работу.

Ниже — о некоторых новых возможностях TeamCity Pipelines, которые мы сейчас разрабатываем.

Управление конфигурацией из кода YAML

Исследуем

Kotlin DSL дает широкие возможности конфигурирования пайплайна программным способом. Однако некоторым пользователям удобнее создавать исходную конфигурацию CI/CD-проектов с помощью YAML, поскольку этот язык широко используется в сфере CI/CD.

TeamCity Pipelines позволит хранить настройки сборки, а также описывать задания и зависимости при помощи YAML-кода.

Параллелизация тестов

Разрабатываем

TeamCity может автоматически запускать тестовые наборы параллельно, основываясь на специальном алгоритме, безо всякого участия пользователя. Достаточно выбрать нужное количество билд-агентов для параллельного запуска тестов. Благодаря этому можно будет значительно сократить время сборки при последующем запуске.

Песочница для агентов

Проектируем

Иногда бывает трудно понять, какое ПО установлено на билд-агентах TeamCity, какие ОС они используют и как можно изменить билд-агенты в облаке JetBrains.

Песочница для агентов

Мы хотим разработать своего рода песочницу для агентов, где можно будет выполнять скрипты на агенте, не запуская пайплайн. Пользователи смогут подключаться к агентам в песочнице для расследования ошибок и отладки после завершения сборки.

Кроме того, можно будет открывать терминалы агентов прямо из интерфейса TeamCity Pipelines, чтобы быстро проверить окружение и выполнить отладку по ошибкам именно этого агента.

Расширенная интеграция с Docker

Проектируем

Если на агенте нет ПО, необходимого для конфигурации пайплайна, сборку можно запустить в 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.

Расширенная интеграция с Docker

Отображение выполненной и планируемой оптимизации

Проектируем

За счет умной параллелизации тестов, повторного использования сборок, кэширования и других возможностей, TeamCity значительно сокращает время сборки. Сейчас TeamCity показывает общее время оптимизации (сэкономленное время) для каждого запуска сборки.

Мы планируем расширить эту функцию, чтобы предоставлять более полную информацию о том, как было оптимизировано выполнение сборки. Кроме того, мы хотим подготовить список всех возможных оптимизаций, которые позволят дополнительно сократить время сборки.

Зарегистрируйтесь для участия в программе раннего доступа к TeamCity Pipelines.

Участвовать в программе раннего доступа

TeamCity Cloud

Мы хотим, чтобы процесс установки и поддержки инфраструктуры не отнимал у вас много времени и сил. Поэтому мы предлагаем TeamCity Cloud — полностью управляемое CI/CD-решение, размещенное в облаке JetBrains под нашим управлением. Облачная версия предлагает те же возможности, что и локальная, за исключением некоторых административных функций, которые не нужны при облачной установке.

Весь разрабатываемый функционал продукта будет доступен и в локальной, и в облачной версии, но в план развития TeamCity Cloud включен ряд дополнительных возможностей:

  • агенты для macOS с Apple Silicon (чипы M1); Разрабатываем
  • интеграция с другими продуктами JetBrains; Проектируем
  • лицензирование с поддержкой проектов с открытым исходным кодом; Проектируем
  • новые ценовые категории. Разрабатываем

Попробовать бесплатно