Pull to refresh
0
JetBrains
Делаем эффективные инструменты для разработчиков

TeamCity 2020.2: вход через OAuth, интеграция с Python, Bitbucket Cloud и JetBrains Space, запуск билдов без агентов

Reading time 5 min
Views 2.6K

Привет, Хабр!

Пару недель назад мы выпустили второй мажорный релиз TeamCity в этом году. У нас давно не было таких мощных обновлений — под катом я расскажу, что нового появилось в версии 2020.2.

Вход через сторонние сервисы

Изменения начинаются с самого первого экрана, который разработчики видят после установки. На экране входа в TeamCity появились иконки для аутентификации через сторонние OAuth-сервисы: Github, Gitlab и Bitbucket Cloud. Это очень удобно для команд, чьи процессы разработки построены вокруг этих сервисов: пользователям не нужно запоминать ещё один пароль, а достаточно сделать один клик. Кроме непосредственно аутентификации, в TeamCity можно автоматически создавать пользователей для каждого члена вашей команды. В будущем мы планируем добавить полную синхронизацию, чтобы удаление пользователя из организации также приводило к удалению его доступа в TeamCity.

Поддерживаются не только облачные сервисы, но и локальные инсталляции GitHub Enterprise и GitLab Self-hosted.

Улучшения в пользовательском интерфейсе Sakura

Сразу после страницы логина вас ждут изменения в пользовательском интерфейсе. Изменилось верхнее меню: оно стало аккуратнее, выросло на несколько пикселей и поменяло цвет на чёрный, чтобы меньше отвлекать внимание от основного контента. Изначально мы разрабатывали его только для нового интерфейса Sakura, но результат нам настолько понравился, что решили включить его и в основной интерфейс тоже.

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

На страничке зависимостей билда (Build Dependencies) сделаны две важные доработки:

  • Вкладка Timeline теперь показывает не только стартовавшие и завершённые билды, но также билды, стоящие в очереди.

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

Мы портировали в Sakura UI страничку истории теста (Test History) и дополнили её графиком трендов. Теперь, если какой-то тест выполняется дольше обычного, это легко определить на глаз.

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

И наконец, мы выпустили новый фреймворк для разработки плагинов. Узнать о нём подробнее можно из доклада Дениса Лесника на TeamCity Technology Day:

Интеграции с Bitbucket Cloud, Python и JetBrains Space

TeamCity — это инструмент общего назначения, и мы хотим, чтобы его могли использовать команды с самыми разными рабочими процессами. Для этого мы «из коробки» поддерживаем множество интеграций с системами контроля версий, инструментами сборки, механизмами нотификаций и т. п. Все важные интеграции мы поддерживаем самостоятельно, не полагаясь на разработчиков сторонних плагинов, — таким образом наши пользователи могут быть уверены, что свежая версия TeamCity поддерживает последнюю версию их любимого инструмента. В версии 2020.2 появилось три новых интеграции.

Пул-реквесты Bitbucket Cloud

После того как Atlassian анонсировали новую облачную стратегию и прекращение поддержки локальных установок Bamboo Server, многие пользователи начали искать альтернативные решения, работающие с Bitbucket и Bitbucket Cloud. TeamCity научился работать с Bitbucket много лет назад, однако оставалось много сценариев, живущих в конце нашего бэклога, на которые не было достаточного спроса. Сейчас спрос появился, и в новой версии мы расширили функцию Pull requests: теперь она поддерживает Bitbucket Cloud. Пока что мы научили TeamCity собирать пул-реквесты, сделанные в основном репозитории (т. е. не из форков). Если будет спрос, то мы продолжим развитие этой функции: приглашаем интересующихся создать тикет в нашем проекте в YouTrack.

Обзор этой функции от нашего девелопер-адвоката:

Билд-раннер Python

Популярность Python растёт с каждым днём: и в рейтинге TIOBE, и по данным нашего собственного исследования Developer Ecosystem он уже обгонял Java и выходил на второе место. Для того чтобы поддержать разработчиков Python, новая версия TeamCity включает в себя полностью новый билд-раннер для Python. Он автоматически определяет все доступные на билд-агенте версии Python, поддерживает виртуальные среды (pipenv, virtualenv) и интегрируется с популярными фреймворками тестирования и средствами инспекции кода. Результаты выполнения сборок проектов на Python отображаются в пользовательском интерфейсе TeamCity так же, как для любых других билд-раннеров: вы можете видеть список изменений и историю тестов, анализировать ошибки и назначать инвестигации.

Обзор нового билд-раннера Python от нашего девелопер-адвоката:

Публикация статуса сборок в JetBrains Space

На прошлой неделе наша компания представила Space — новую платформу для командной работы. В JetBrains мы используем Space уже давно: это наш основной инструмент для хранения кода, проведения код-ревью, обмена знаниями и многих других задач. В версии 2020.2 мы добавили поддержку Space в функцию Commit Status Publisher: статус сборок из TeamCity автоматически публикуется в Space и отображается на странице с коммитами.

Выполнение билд-шагов без использования агентов

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

Такая архитектура оказывается не совсем удобна, если ваши CI/CD-пайплайны включают выполнение задач не на самом агенте, а во внешних сервисах. Допустим, вы используете для деплоймента внешний сервис. После того как билд-агент отправит ему команду, он остановится в ожидании и будет простаивать до тех пор, пока работает внешний сервис. Если же вы при этом используете облачные агенты (например, в AWS), всё становится ещё хуже, поскольку вы теряете не только время, но и деньги.

Для решения этой проблемы мы реализовали возможность «освободить» агента, чтобы последний билд-шаг мог выполняться без его участия. Освободившийся агент может приступать к другим задачам в очереди, а сервер TeamCity может принимать сервисные сообщения от внешнего сервиса и отображать статус выполнения удалённой задачи. С точки зрения лицензирования, мы позволяем выполнять столько внешних билдов (detached builds), сколько доступно лицензий для агентов.

Мультисерверное масштабирование

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

Функции для администраторов

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

Мониторинг внешних хранилищ данных

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

Настраиваемое расписание очистки сервера

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

Это не все возможности новой версии! Полный список изменений можно прочитать в Release notes.

Дистрибутивы TeamCity 2020.2 можно скачать с нашего сайта. Также доступен Docker-образ TeamCity на DockerHub.

Замечания и предложения по новой версии оставляйте в нашем баг-трекере.

Напомню, что у нас есть бесплатная версия TeamCity Professional, которая отлично подойдёт большинству разработчиков. В ней всего два ограничения: она позволяет создавать не более 100 билд-конфигураций и запускать не более 3 параллельных билдов. В остальном она не отличается от TeamCity Enterprise

Удачных сборок!

Tags:
Hubs:
+7
Comments 1
Comments Comments 1

Articles

Information

Website
jetbrains.com
Registered
Founded
Employees
1,001–5,000 employees
Location
Чехия