Bitbucket Server (ранее известный как Stash) — решение для централизованного управления разработкой, позволяющее управлять вашими репозиториями, в том числе не открывая доступа к ним извне организации. Bitbucket позволяет упростить хранение репозиториев с исходными кодами на вашем сервере и обеспечивает простоту доступа к репозиториям для всех членов вашей команды.
В мире IT известно, что Bitbucket может быть проинтегрирован с другими продуктами и платформами в единую экосистему, которая делает процесс разработки всеобъемлющим и удобным. Чаще всего Bitbucket интегрируется с JIRA. Однако, поиск и локализация проблем — не единственная задача, с которой типовой процесс разработки сталкивается каждый день, и даже несколько раз в день. Более важной задачей является сохранение целостности проекта в процессе внесения дополнений и исправлений в код. Для этих задач вы можете использовать CI-сервер, который в том числе позволяет создавать сборки проектов и выполнять серии тестов для автоматической проверки функциональности.
Bitbucket «из коробки» предлагает интеграцию с родственным решением от Atlassian — Bamboo. Но, помимо Bamboo, существуют другие CI-решения, которые также достаточно популярны — TeamCity и Jenkins. В нашем посте мы обрисуем специфику интеграции Bitbucket и TeamCity.
REST API как точка интеграции с Bitbucket
С тех пор, как Bitbucket обзавелся REST API (на самом деле, он был у Stash всегда и расширялся по мере развития функционала самого Stash / Bitbucket Server — прим. переводчика), с ним стало намного проще работать и строить на его базе решения для каждого конкретного случая. В настоящее время существует несколько аддонов для интеграции Bitbucket с CI-системами и получения информации о состоянии сборок. Изучая коммиты в репозитории, вы можете одновременно видеть состояние сборки и легко перейти в TeamCity для изучения проблем, возникших при сборке конкретного коммита, или просто скачать последнюю версию приложения для клиента.
Инструменты для интеграции TeamCity и Bitbucket
В Интернете можно найти два плагина для TeamCity, которые могут быть использованы для интеграции с Bitbucket. Commit Status Publisher выпущен непосредственно JetBrains, другой — TeamCity Stash Integration — был разработан mendhak. Оба доказали свою работоспособность в качестве средства интеграции Teamcity и Bitbucket. Давайте взглянем на каждый из них и поищем их плюсы и минусы.
Инсталлируем плагины в Teamcity
Установка плагинов в TeamCity достаточна проста и выполняется в соответствии с документацией. Загружаем zip-архивы с плагинами через административную консоль Teamcity, перезапускаем Teamcity. Плагины доступны и готовы помочь вам получить нужную информацию.
Commit Status Publisher от компании JetBrains
В первую очередь представим «родной» плагин от разработчика самого TeamCity, поскольку инструменты интеграции «от разработчика» обычно бывают удобными, продуманными и функциональными. Настраиваем сборку для передачи состояния сборки в Bitbucket. Для этого нужно добавить Build Feature с типом Commit status publisher (этот тип становится доступным после установки плагина от JetBrains). Завершаем подключение к Bitbucket.
После завершения настройки запустим сборку и убедимся, что Bitbucket получил данные из TeamCity.
По щелчку на иконке сборки открывается окно, содержащее информацию о проекте, конфигурации и номере сборки. Также отображается число пройденных и проигнорированных тестов.
При просмотре подробностей pull request точно так же можно открыть форму с информацией о сборке.
Teamcity Stash (Bitbucket) integration от mendhak
Настраивается плагин аналогично решению от JetBrains. После инсталляции появляется build feature с именем Report build status to Atlassian Bitbucket. В отличие от аддона JetBrains, появляется больше настроек. Можно, к примеру, отмененную сборку пометить в Bitbucket как неуспешную. Или не показывать в Bitbucket статусы всех сборок, оставив только статус последней сборки для каждого коммита.
После коммита кода вы можете увидеть сборки, которые зависят от этого коммита, и их состояние.
Какой плагин выбрать?
Нужно отметить, что они очень похожи друг на друга. Оба используют Bitbucket REST API для обновления статусов сборок. Оба очень просто устанавливаются и настраиваются. На стороне «родного» плагина от JetBrains — поддержка новых версий TeamСity (в TeamCity 10 этот плагин будет встроен «из коробки» — прим. переводчика), быстрый выпуск новых версий и поддержка от команды разработчиков с мировой известностью. На стороне TeamCity Stash(Bitbucket) Integration — чуть больше функциональности и подробная инструкция по настройке плагина. Выбор аддона остается за вами и зависит от ваших требований и пожеланий.