Bitbucket
Хостинг Git-репозиториев от Atlassian со встроенным CI (Pipelines) и глубокой интеграцией с Jira и Confluence.
Что такое Bitbucket
Bitbucket (битбакет) — платформа для хостинга Git-репозиториев от Atlassian: репозитории, pull request'ы, code review, встроенный CI/CD под названием Pipelines.
Главная причина, по которой выбирают именно его, — экосистема Atlassian. Если компания уже живёт в Jira и Confluence, Bitbucket встраивается бесшовно: ветка создаётся прямо из задачи Jira, статус сборки виден в тикете, а задача автоматически переходит в «Done» при слиянии pull request'а. Вне этой связки Bitbucket проигрывает GitHub и GitLab по экосистеме и сообществу.
Исторический факт, объясняющий часть путаницы: Bitbucket начинался как хостинг Mercurial и долго поддерживал обе VCS. Поддержку Mercurial убрали в 2020 году — сейчас это чистый Git.
Варианты поставки
| Bitbucket Cloud | Bitbucket Data Center | |
|---|---|---|
| Где работает | SaaS Atlassian | Свои серверы |
| CI | Pipelines (встроен) | Bamboo или внешний |
| Лицензия | Подписка на пользователей | Платная, для крупных установок |
Bitbucket Server (одиночная self-hosted-установка) выведен из поддержки — остались только облако и Data Center. Это заметный аргумент против self-hosted-сценария по сравнению с бесплатным GitLab Community Edition.
Bitbucket Pipelines
Встроенный CI. Конфиг — файл bitbucket-pipelines.yml в корне репозитория; каждый шаг выполняется в Docker-контейнере.
image: python:3.12
pipelines:
default: # на любой push
- step:
name: Test
caches: [pip]
script:
- pip install -r requirements.txt
- pytest -q
branches:
main:
- step:
name: Build & push
services: [docker]
script:
- docker build -t $IMAGE:$BITBUCKET_COMMIT .
- echo $REG_PASS | docker login -u $REG_USER --password-stdin $REG
- docker push $IMAGE:$BITBUCKET_COMMIT
- step:
name: Deploy
deployment: production
trigger: manual
script:
- kubectl set image deploy/api api=$IMAGE:$BITBUCKET_COMMIT
Особенность модели: Pipelines тарифицируются в build-минутах, а не по числу runner'ов. Тяжёлые сборки быстро упираются в квоту — тогда подключают self-hosted runner на своём VPS, и его минуты не тратятся:
- step:
runs-on: [self.hosted, linux]
script: [make build]
Что стоит знать при выборе
- Плюсы: связка с Jira из коробки, аккуратные pull request'ы, простой YAML для CI, приватные репозитории для малых команд дёшевы.
- Минусы: слабая экосистема open source-проектов, нет бесплатного self-hosted-варианта, CI менее гибкий, чем GitLab CI или GitHub Actions, лимиты build-минут.
Работа с репозиторием
Со стороны разработчика ничего специфичного нет — это обычный Git-репозиторий:
git clone git@bitbucket.org:team/project.git
git switch -c feature/PROJ-42-add-auth # ключ задачи Jira в имени ветки
git push -u origin feature/PROJ-42-add-auth
Имя ветки с ключом задачи (PROJ-42) — не формальность: именно по нему Bitbucket связывает коммиты, pull request и тикет Jira.
Связанные термины
- Git — система контроля версий, которую хостит Bitbucket
- GitHub — крупнейший конкурент
- GitLab — конкурент с бесплатным self-hosted
- CI/CD — практика, которую реализуют Pipelines
- Code review — процесс вокруг pull request'ов
- Git-репозиторий — что вы там храните
Готовы запустить GPU-задачу?
Запустить GPU-сервер