+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новости

TeamCity 2020.1 - JetBrains выпустил новую версию CI/CD-сервера для обеспечения непрерывной интеграции

TeamCity 2020.1 - JetBrains выпустил новую версию CI/CD-сервера для обеспечения непрерывной интеграции

JetBrains выпустил TeamCity 2020.1 — новую версию CI/CD-сервера.

Что нового в TeamCity 2020.1:

Условия выполнения билд-шагов

Запрос Execute a build step based on a condition был создан в баг-трекере 9 лет назад, и по количеству голосов он много лет держал однозначное лидерство. И вот, наконец, JetBrains реализовал эту функцию! Теперь вы можете задавать условия запуска отдельных шагов сборки.

TeamCity 2020.1 позволяет делать отдельные билд-шаги опциональными, и у этого может быть масса самых разных применений. Например, можно выполнять часть тестов только на выбранном агенте или только под заданной OS. Можно деплоить изменения на различные сервера, в зависимости от бранча. Можно выполнять различные command-line скрипты на различных платформах. И так далее.

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

Но многие пользователи ожидают от продукта другого поведения, и вместо создания цепочек из билдов хотят задавать условия выполнения отдельных шагов внутри билдов. Их просьбы, наконец, реализованы — JetBrains надеется, что теперь TeamCity станет для них понятнее и удобнее. JetBrains же со своей стороны будет внимательно наблюдать, как используется эта возможность.

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

Запуск билд-агентов в кластере Kubernetes

Поддержка запуска билд-агентов в Kubernetes появилась в TeamCity ещё в 2017 году в виде отдельного плагина. В версии 2020.1 JetBrains доработали этот плагин, исправили ряд багов и включили в основной дистрибутив, сделав доступным из коробки. Идея осталась всё та же: билд-агенты запускаются по необходимости, выполняют свою в работу, а затем удаляются после завершения сборки.

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

Уже два года JetBrains активно развивает возможность совместной работы нескольких установок TeamCity в режиме кластера. В версии 2020.1 расширился список обязанностей (responsibilities), которые могут быть назначены вторичным серверам, а также появилась возможность выполнять ряд действий пользовательского уровня в UI.

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

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

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

Возможность загрузить готовый дистрибутив билд-агента

При подключении к серверу TeamCity билд-агенты первым делом проверяют собственную версию и актуальность установленных плагинов. Если находятся несовпадения, то запускается обновление, которое может занять значительное время (до нескольких минут). Чтобы облегчить жизнь пользователям, работающим с облачными билд-агентами, в версии 2020.1 добавлена возможность скачать готовый дистрибутив билд-агента, который не потребует обновления при подключении к серверу.

История инвестигаций

Для исправления падающих билдов TeamCity позволяет назначать инвестигации (investigations), чтобы кто-нибудь из команды изучил причину падения. Инвестигации позволяют понять, занимается ли кто-то сломанным билдом и каков текущий статус проблемы. В JetBrains этой функцией пользуются все команды без исключения, это неотъемлемая часть нашего процесса разработки.

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

В TeamCity 2020.1 JetBrains добавили возможность посмотреть историю инвестигаций: кто её создал и каким образом она пришла к текущему состоянию. Это оказалось настолько полезно, что наш коллега lany отозвался об этой функции так:

“Whoever created the investigation history table, thank you very much! It's the most useful addition to TeamCity during the last year!”

Надеемся, что и вам она придётся по душе!

Уведомления на уровне проектов

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

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

Новые интеграции

Jira Software Cloud

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

Azure DevOps

JetBrains добавили поддержку пулл-реквестов Azure DevOps, расширив список VCS-хостингов, для которых работает функция Pull Requests. Теперь TeamCity позволяет автоматически собирать пулл-реквесты Azure DevOps — аналогично тому, как это работает с GitHub и GitLab.

Новый интерфейс “Sakura”

Год назад JetBrains выпустили новый экспериментальный интерфейс под кодовым названием “Sakura”, и за это время он отлично себя зарекомендовал. Он классный: выглядит свежо, работает быстро и построен на современных технологиях, что позволяет нам добавлять новые функции без тормозов.

Пока что Sakura ещё не поддерживает все-все сценарии, которые доступны в классическом интерфейсе. Однако JetBrains вовсю движемся к этому. В версии 2020.1 JetBrains обновили страницы Agents и Projects, а также добавили возможность кастомизировать боковую панель.

Это не все изменения новой версии! Полный список изменений можно прочитать в документации 

https://www.jetbrains.com/help/teamcity/2020.1/what-s-new-in-teamcity-2020-1.html

Дистрибутивы TeamCity 2020.1 можно скачать с сайта JetBrains

https://www.jetbrains.com/teamcity/download/ 

Также доступен Docker-образ TeamCity на Docker Hub

https://hub.docker.com/r/jetbrains/teamcity-server/

Другие новости

Лучшая цена