Использование функциональных веток с Bitbucket Pipelines

Узнайте, как осуществлять непрерывную поставку с помощью Gitflow или рабочего процесса с функциональными ветками. 

Sten Pittet Sten Pittet

Независимо от того, используете вы Gitflow или просто функциональные ветки с главной веткой, Bitbucket Pipelines позволяет без труда внедрить непрерывную поставку (CD). Чтобы получить возможность выполнять тесты на своих ветках и развертывать их, необязательно настраивать сложный сервер непрерывной интеграции (CI): нужно всего лишь включить Pipelines и определить свои процессы.

Bitbucket Pipeline

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

Шаг 1. Начните с конвейеров, запускаемых по умолчанию на функциональных ветках

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

Итак, первое, что следует сделать при включении Bitbucket Pipelines, — создать конвейер по умолчанию, который будет запускать тесты для каждой ветки. Это легко сделать, выбрав один из доступных шаблонов по умолчанию.

Конфигурация по умолчанию для конвейера JavaScript

Все шаблоны, ориентированные на конкретный язык, используют выбранный по умолчанию конвейер для ключевого слова по умолчанию, который запускается для каждой новой отправленной ветки. Вы можете просто выполнить коммит файла конфигурации bitbucket-pipelines.yml в репозиторий, чтобы запустить свой первый конвейер в главной ветке.

Наш первый конвейер для главной ветки

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

Шаг 2. Добавление нового конвейера для главной ветки

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

image: node:4.6.0
   pipelines:
   default:
     - step:
         script:
           - npm install
           - npm test
   branches:
     main:
       - step:
           script:
             - npm install
             - npm test
             - ./deploy.sh  

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

С этого момента push в главную ветку будет запускать развертывание после сборки и тестирования приложения. Любая другая ветка репозитория будет просто осуществлять сборку и тестирование новых изменений.

Шаг 3. Защитите ветки релизов

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

В репозитории перейдите к Settings > Branch permissions (Настройки > Права доступа к веткам).

Branch permissions

Добавьте разрешение на создание новой ветки для главной ветки. При этом следует оставить пустым поле Write access (Доступ на запись), чтобы разработчики не могли напрямую осуществлять push в главную ветку. Затем добавьте себя в поле разрешения Merge via pull request (Слияние через запрос pull) .

Adding a branch permission

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

Adding a branch permission

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

Шаг 4. Использование запроса pull для отправки изменений в рабочую среду

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

Bitbucket pull request

После слияния можно перейти в раздел Pipelines (Конвейеры) репозитория, чтобы увидеть развертывание в действии.

Bitbucket pipeline logs

Мы рассмотрели основные принципы управления функциональными ветками с помощью Bitbucket Pipelines. Вы можете адаптировать этот пример под свои задачи и создать собственный конвейер непрерывной поставки. Дополнительную информацию см. в наших руководствах по непрерывной поставке и непрерывному развертыванию.