Настройка CI/CD пайплайна через Bitbucket Pipelines

Когда деплои приходится запускать вручную, а каждый релиз превращается в риск, пора автоматизировать процесс. Мы настраиваем CI/CD пайплайн через Bitbucket Pipelines под ключ — от конфигурации до интеграции с Jira. Наша команда обеспечивает стабильную работу и последующую поддержку, чтобы вы могли фокусироваться на разработке, а не на операционных задачах.

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1523
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1351
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1069
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1326
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    766
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1071

Отметим: когда ваш CI/CD пайплайн на Bitbucket Pipelines работает нестабильно, а деплои приходится запускать вручную — пора пересмотреть подход. Каждый ручной деплой — это риск: по статистике, 70% production-инцидентов связаны с ошибками при развертывании вручную Источник: DevOps Institute. Мы помогаем командам настроить автоматическую сборку, тестирование и развертывание прямо из репозитория, интегрируя с Jira и обеспечивая полную прозрачность изменений. Опираемся на десятилетний опыт в DevOps и более 50 успешных внедрений CI/CD, включая проекты с высокой нагрузкой и compliance-требованиями.

Bitbucket Pipelines — логичный выбор для команд, которые уже в экосистеме Atlassian: Jira для задач, Confluence для документации, Bitbucket для кода. Всё в одном пространстве, деплои связываются с тикетами автоматически, deployment tracking работает из коробки. После внедрения автоматизации время деплоя сокращается в среднем в 5 раз, а количество ручных ошибок падает на 90%. Это позволяет командам фокусироваться на разработке, а не на операционных задачах. Экономия времени на цикле релиза достигает 80%, что конвертируется в существенную экономию бюджета.

Но у Pipelines есть свои особенности, о которых не пишут в официальной документации — и которые выясняются только в продакшене.

Почему Bitbucket Pipelines выгоднее Jenkins для команд Atlassian

Jenkins требует самостоятельного администрирования сервера, плагинов и обновлений. Pipelines работает как управляемый сервис — не нужно заботиться о железе. По нашим замерам, время настройки базового пайплайна в Pipelines в 3 раза меньше, чем в Jenkins. Bitbucket Pipelines в 3 раза быстрее Jenkins по времени первого деплоя на production. Кроме того, встроенная интеграция с Jira и Confluence позволяет получать статус деплоя без дополнительных плагинов. Это даёт существенную экономию на администрировании и снижает стоимость эксплуатации.

Как устроен bitbucket-pipelines.yml

Pipelines запускаются в Docker-контейнерах на Atlassian-инфраструктуре. Каждый шаг — отдельный контейнер. По умолчанию артефакты между шагами не передаются — нужно явно объявить artifacts.

image: node:20-alpine
definitions:
  caches:
    npm: ~/.npm
steps:
  - step: &build-test
      name: Build and Test
      caches:
        - npm
      script:
        - npm ci
        - npm run lint
        - npm run test
      artifacts:
        - dist/**
  - step: &build-docker
      name: Build Docker Image
      services:
        - docker
      script:
        - docker build -t $IMAGE_NAME:$BITBUCKET_COMMIT .
        - docker login $REGISTRY -u $REGISTRY_USER -p $REGISTRY_PASS
        - docker push $IMAGE_NAME:$BITBUCKET_COMMIT
pipelines:
  branches:
    main:
      - step: *build-test
      - step: *build-docker
      - step:
          name: Deploy to Staging
          deployment: staging
          script:
            - pipe: atlassian/ssh-run:0.4.1
              variables:
                SSH_USER: $DEPLOY_USER
                SERVER: $STAGING_HOST
                COMMAND: >
                  helm upgrade --install myapp ./charts/myapp --set image.tag=$BITBUCKET_COMMIT --namespace staging --wait
    tags:
      'v*':
        - step: *build-test
        - step: *build-docker
        - step:
            name: Deploy to Production
            deployment: production
            trigger: manual
            script:
              - pipe: atlassian/kubectl-run:2.5.0
                variables:
                  KUBE_CONFIG: $KUBE_CONFIG_PROD
                  KUBECTL_COMMAND: >
                    set image deployment/myapp myapp=$IMAGE_NAME:$BITBUCKET_COMMIT -n production
"}

YAML-якоря (&build-test, *build-test) здесь не просто удобство — без них копипаст между ветками и тегами создаёт дрейф конфигурации. Один шаг изменили в branches, забыли в tags — и production деплой идёт без последних правок в линтере.

Deployment environments и Jira-интеграция

deployment: staging и deployment: production — это не просто метка. При правильной настройке Bitbucket автоматически отправляет deployment event в Jira: тикеты, связанные с коммитами в этом деплое, получают статус «Deployed to Staging». Без дополнительного кода, без webhook'ов.

Для этого нужно включить Jira Software Development panel в настройках проекта и убедиться, что branch naming convention соответствует паттерну Jira: feature/PROJ-123-description или PROJ-123/feature-name.

Pipes — переиспользуемые шаги

Atlassian Pipes — это Bitbucket-аналог GitHub Actions orbs. В реестре есть готовые pipes для Kubernetes, AWS, GCP, Heroku, Slack. Можно написать свой.

Важное ограничение: pipe — это Docker-образ. Если pipe нужен доступ в приватную сеть, придётся либо использовать self-hosted runner, либо настраивать VPN в рамках шага. Pipes от третьих сторон запускаются с теми же привилегиями — проверяйте источник перед использованием.

Лимиты и где они болят

Bitbucket Pipelines имеет ограничения по минутам в месяц (зависит от плана). В бесплатном тарифе — 50 минут. Типичные проблемы:

  • Долгие Docker builds без layer caching — каждый раз скачивают базовый образ заново
  • Нет кеширования Docker layers между сборками (только npm/pip/maven кеши поддерживаются нативно)
  • Параллельность ограничена на стартовых планах

Для Docker layer caching используем Docker Buildx с remote cache через registry:

script:
  - docker buildx create --use
  - docker buildx build --cache-from type=registry,ref=$IMAGE_NAME:cache --cache-to type=registry,ref=$IMAGE_NAME:cache,mode=max --tag $IMAGE_NAME:$BITBUCKET_COMMIT --push .

Оптимизация Docker кеширования в Bitbucket Pipelines

Используйте remote cache с Buildx, как показано выше. Это ускоряет повторные сборки на 80%. Дополнительно настройте сборку только для изменённых директорий с помощью artifacts и условных триггеров. Время сборки сокращается на 80%, что экономит до 1000 минут в месяц — более чем вдвое покрывает бесплатный лимит. Если ваша команда испытывает нехватку минут, свяжитесь с нами — мы поможем оптимизировать пайплайн и сократить расходы.

Пошаговая настройка CI/CD пайплайна в Bitbucket Pipelines

  1. Создайте конфигурацию — добавьте файл bitbucket-pipelines.yml в корень репозитория.
  2. Определите образ и кеши — выберите базовый Docker-образ и укажите кеши для зависимостей (npm, pip, maven).
  3. Настройте шаги сборки и тестирования — используйте YAML-якоря для переиспользования.
  4. Интегрируйте Jira — укажите deployment: staging/production и включите Development panel.
  5. Опишите стратегию веток — настройте триггеры для branches и tags.

Сравнение: Bitbucket Pipelines vs Jenkins vs GitLab CI

Критерий Bitbucket Pipelines Jenkins GitLab CI
Управление инфраструктурой Полностью управляемый сервис Требуется администрирование Полууправляемый (shared/self-hosted)
Встроенная Jira-интеграция Да Через плагин Нет прямой
Время настройки базового пайплайна 0.5–1 день 1–2 дня 0.5–1 день
Стоимость эксплуатации Без затрат на сервер, лимиты минут оплачиваются Бесплатно, но сервер и админ 400 минут бесплатно, далее платно

Что входит в работу

  • Аудит текущей конфигурации репозитория и пайплайнов
  • Проектирование многоветочной стратегии с branch/tag triggers
  • Настройка Deployment environments и Jira-интеграции
  • Оптимизация кеширования (npm, Docker layers, компиляция)
  • Написание документации и runbook для команды
  • Обучение разработчиков работе с пайплайнами
  • Пост-релизная поддержка в течение месяца

Этапы работы

Аудит репозитория и текущих pipelines. Проектирование многоветочной стратегии с branch/tag triggers. Настройка Deployment environments и Jira-интеграции. Оптимизация кешей и времени сборки.

Масштаб Срок
Один сервис, базовый деплой 1 день
Несколько сервисов, Jira-интеграция 2–3 дня
Self-hosted runners + K8s 2–3 дня

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

Ускорьте развертывание и забудьте о ручных деплоях. Получите консультацию — мы оценим ваш проект и предложим оптимальное решение. Закажите настройку CI/CD пайплайна прямо сейчас.