Bitbucket Pipelines — CI/CD-платформа, встроенная в Bitbucket Cloud (облачный Git-хостинг Atlassian). Пайплайны запускаются в Docker-контейнерах на серверах Atlassian при каждом push в репозиторий. Конфигурация в файле bitbucket-pipelines.yml в корне проекта. Идеальный выбор для команд, уже работающих в экосистеме Atlassian (Jira, Confluence).
Структура bitbucket-pipelines.yml
image: node:20
pipelines:
default:
- step:
name: Build and Test
caches:
- node
script:
- npm install
- npm test
branches:
main:
- step:
name: Deploy to Production
deployment: production
script:
- pipe: atlassian/ssh-run:0.4.1
variables:
SSH_USER: deploy
SERVER: $PROD_SERVER
COMMAND: "cd /app && git pull && pm2 restart all"
Ключевые особенности
- Pipes — готовые интеграции от Atlassian и сообщества: SSH Run, AWS Deploy, Google Cloud Run, Kubernetes — более 100 готовых действий
- Caches — кэширование зависимостей между запусками (node_modules, pip, Maven)
- Deployments — управление средами (test, staging, production) с историей деплоев
- Parallel steps — параллельное выполнение шагов для ускорения пайплайна
- Jira-интеграция — автоматическое связывание деплоев с задачами Jira через branch naming
История
Bitbucket Pipelines анонсирован в мае 2016 года как первый нативный CI/CD в Bitbucket. До этого пользователи Bitbucket были вынуждены использовать внешние сервисы (CircleCI, Travis CI). В 2021 году Atlassian добавила поддержку self-hosted runners (на собственных серверах). Бесплатный план включает 50 минут сборки в месяц — значительно меньше, чем у GitLab CI (400 минут). Платный план — $15/пользователя/мес с неограниченными минутами.
Bitbucket Pipelines vs GitLab CI
| Параметр | Bitbucket Pipelines | GitLab CI |
|---|---|---|
| Экосистема | Atlassian (Jira, Confluence) | GitLab Platform |
| Self-hosted runners | Да (с 2021) | Да |
| Бесплатный план | 50 мин/мес | 400 мин/мес |
| On-premise версия | Bitbucket Data Center (отдельный) | GitLab Self-Managed |
Применение в хостинге
Bitbucket Pipelines используется командами в Atlassian-экосистеме (Jira + Confluence + Bitbucket). Деплой на VPS через pipe atlassian/ssh-run или кастомный скрипт с SSH-ключом из переменных окружения. Staging-среда настраивается через Deployment environments с обязательным approval для production. При превышении минутного лимита (50 мин/мес на Free) имеет смысл оптимизировать пайплайн через параллельные шаги и агрессивное кэширование, или перейти на self-hosted runner на собственном VPS — тогда ограничений по минутам нет.
Параллельные шаги и кэширование
Bitbucket Pipelines поддерживает параллельные шаги через ключ parallel: несколько тестовых наборов запускаются одновременно, сокращая общее время пайплайна. Встроенные кэши для Node.js, Maven, pip, Gradle ускоряют установку зависимостей. При кэшировании node_modules установка зависимостей сокращается с 2 минут до 10 секунд, экономя ресурс оплачиваемых минут.
Кэширование зависимостей в пайплайнах
Кэширование — ключевой инструмент ускорения пайплайнов в Bitbucket Pipelines. Пример настройки кэша для Node.js:
definitions:
caches:
npm: ~/.npm
pipelines:
default:
- step:
caches:
- npm
script:
- npm ci
Bitbucket кэширует директорию между запусками одного и того же шага. При изменении package-lock.json кэш инвалидируется автоматически. Экономия времени при включённом кэше для типичного Node.js-проекта: 2–3 минуты на каждый запуск, что при 50 запусках/месяц укладывается в бесплатный лимит 50 минут.