Bitbucket е Git платформа на компанията Atlassian, интегрирана с Jira, Confluence и други инструменти на екосистемата. Bitbucket предоставя хостинг на Git хранилища, вграден CI/CD чрез Bitbucket Pipelines и мощни инструменти за преглед на код. По данни на Atlassian, 2024, Bitbucket се използва от над 10 милиона разработчици и 800 000 екипа по целия свят.
Основни точки
Bitbucket е уеб платформа за хостинг на Git хранилища, разработена от компанията Atlassian. Първоначално Bitbucket поддържаше само Mercurial (от 2008 г.), но след прекратяване на поддръжката на Mercurial през 2020 г., напълно премина към Git. Платформата е достъпна в две издания: Bitbucket Cloud (SaaS, хостинг Atlassian) и Bitbucket Data Center (локална версия за Enterprise).
Основното предимство на Bitbucket пред конкурентите — дълбока интеграция с продуктите на Atlassian. Jira автоматично свързва commits и Pull Requests със задачи, Confluence позволява вграждане на кодови фрагменти в документацията, а Opsgenie свързва внедряванията с инциденти. За екипи, които вече използват екосистемата на Atlassian, Bitbucket е естествен избор, тъй като не изисква конфигуриране на допълнителни интеграции.
Bitbucket Cloud предлага няколко нива на хостинг. Безплатният план включва един потребител и ограничено хранилище (1 GB). Стандартният план струва 3 долара на потребител на месец с неограничен брой частни хранилища и 2500 минути Pipelines на месец. Bitbucket използва потребителски лицензионен модел: всеки потребител с достъп до хранилище, включително само за четене, се таксува.
Bitbucket Pipelines е вградена CI/CD система, която работи на базата на Docker контейнери. Pipelines е интегриран директно в Bitbucket Cloud и не изисква инсталиране на отделни runners или конфигуриране на webhook. Конфигурацията се описва във файла bitbucket-pipelines.yml, намиращ се в корена на хранилището. Всеки pipeline се състои от стъпки (steps), обединени в последователности.
Pipelines поддържа паралелни стъпки, ръчно стартиране, тригери при push и по разписание, кеширане на зависимости и артефакти. Всяка стъпка се изпълнява в изолиран Docker контейнер, чийто образ се задава в конфигурацията. По-долу е показан примерен pipeline за изграждане на Android приложение с тестване и публикуване във Firebase App Distribution:
# bitbucket-pipelines.yml
image: openjdk:17-jdk
pipelines:
pull-requests:
'**':
- step:
name: Build and Test
caches:
- gradle
script:
- ./gradlew assembleDebug testDebugUnitTest
artifacts:
- app/build/outputs/apk/debug/
branches:
main:
- step:
name: Deploy to Firebase
script:
- pipe: atlassian/firebase-distribution:1.0.0
variables:
APP_FILE: 'app/build/outputs/apk/debug/app-debug.apk'
Bitbucket Pipelines има ограничение от 50 минути на pipeline за Cloud версията, което е достатъчно за повечето проекти, но може да бъде тясно място за големи монохранилища. В Data Center това ограничение е напълно премахнато — продължителността на pipeline се определя само от наличните сървърни ресурси. Pipelines поддържа и персонализирани Docker образи, което позволява използването на всякакви инструменти за изграждане и тестване.
Pull Request в Bitbucket е реализиран с акцент върху корпоративните процеси за преглед на код. Bitbucket предлага: inline коментари към конкретни редове от diff, задължителни проверки (checks) от Pipelines или външни услуги, минимален брой одобрения за сливане, блокиране на merge до преминаване на всички проверки и декларация за конфликт на интереси (decline). PR интерфейсът е разделен на три колони: изходен код, diff и файлова структура.
Уникалната функция на Bitbucket — Code Insights. Това е API за интеграция на външни инструменти за качество на код (SonarQube, CodeScene, ESLint, Detekt), които показват резултатите си директно в интерфейса на Pull Request. Разработчикът вижда: брой нови грешки, покритие на тестовете, code smells и дубликации. Code Insights позволява вземане на решение за merge на базата на обективни метрики, а не само на субективното мнение на рецензента.
Bitbucket поддържа също ограничения на клони (branch permissions): може да се забрани изтриването на клони, да се задължи създаването на PR за определени клони, да се ограничи списъкът на потребителите с права за merge в main. Допълнително има проверки за merge (merge checks) — списък от задължителни условия (Pipelines преминат, минимум N одобрения, без отворени коментари), които трябва да бъдат изпълнени преди бутона Merge. Настройките защитават продукционния клон от случайни непроверени промени.
Интеграцията на Bitbucket с Jira — ключово предимство на платформата. Когато разработчикът включи в съобщението на commit ключа на задачата (напр. PROJ-123), Jira автоматично свързва този commit със задачата. В интерфейса на задачата се показва раздел Development, където са събрани всички commits, Pull Requests, клони и внедрявания, свързани с тази задача. PR автоматично актуализират статуса на задачата в Jira при сливане (преход към Done).
Confluence също се интегрира с Bitbucket: могат да се вграждат живи кодови фрагменти от хранилището в страници на Confluence чрез макроса Code Block. Промените в кода се синхронизират автоматично с Confluence, което е удобно за поддържане на архитектурна документация. Допълнително Atlassian предоставя Smart Commits — управление на Jira задачи директно от съобщението на commit: промяна на статус, добавяне на време и приоритети.
За DevOps автоматизация Bitbucket поддържа Deployment Gate — свързване на внедряването с версията на задачата. Когато pipeline достигне етапа на внедряване, Jira проверява дали всички задачи в тази версия имат статус Approved. Ако не — внедряването се блокира. Това реализира принципа на Continuous Delivery с контрол на качеството на ниво задачи, а не само на код.
Bitbucket позволява създаване на шаблони за хранилища за стандартизиране на структурата на проектите. За мобилни проекти може да се създаде шаблон с предварително инсталирани файлове: Gradle конфигурация, gitignore, настройки на Detekt и Ktlint, pipeline за Android CI и README с инструкции за изграждане. Нов проект се създава от шаблон с няколко кликвания, което ускорява въвеждането на нови разработчици.
Сравнение на Bitbucket с GitHub и GitLab зависи от екосистемата, в която работи екипът. Bitbucket губи от GitHub по размер на общността (10 милиона срещу 100 милиона потребители), но печели в корпоративните интеграции благодарение на Atlassian стека. Ако екипът вече използва Jira за управление на задачи и Confluence за документация — Bitbucket осигурява безпроблемна интеграция без допълнителни настройки.
По отношение на CI/CD Bitbucket Pipelines отстъпва на GitLab CI/CD в напреднали сценарии (няма child pipelines, матрични изграждания, многостепенни pipelines) и на GitHub Actions по брой готови действия (Marketplace Actions съдържа 20 000+ стъпки срещу хиляди публични pipes в Bitbucket). Въпреки това, Pipelines е по-лесен за конфигуриране за типични сценарии благодарение на готовите pipe компоненти от Atlassian.
| Критерий | Bitbucket | GitHub | GitLab |
|---|---|---|---|
| CI/CD | Pipelines, 50 мин/стъпка | Actions, 2000 мин/мес | CI/CD, без ограничения (Self) |
| Интеграция | Jira, Confluence | Copilot, Slack, Azure | Kubernetes, Prometheus |
| Self-Hosted | Data Center (платен) | Enterprise Server | CE (безплатен) |
| Потребители | ~10 млн | ~100 млн | ~30 млн |
| Лиценз | Проприетален | Проприетален | MIT (отворен код) |
Изборът на Bitbucket е оправдан в два сценария: екипът вече използва екосистемата Atlassian (Jira + Confluence + Opsgenie) или работата се извършва в корпоративна среда, където Bitbucket Data Centre вече е внедрен като стандартен инструмент. За стартъпи и проекти с отворен код, GitHub предлага по-богата общност и безплатни функции, а GitLab — най-добрият самостоятелно хостван CI/CD.
Bitbucket Data Center е корпоративната версия на платформата, предназначена за инсталиране на собствена инфраструктура. За разлика от Cloud версията, Data Center предлага: клъстеризация (активен-активен режим за множество възли), Smart Mirroring (географски разпределени огледала за ускоряване на clone/fetch), висока достъпност (99,99% ъптайм при клъстеризация) и пълен одит на действията.
Data Center включва всички функции на Cloud версията, но с корпоративни разширения. Smart Mirroring автоматично синхронизира хранилищата между сървъри в различни центрове за данни — разработчици от Европа и Азия получават еднаква скорост на clone/fetch, тъй като Git операциите се изпълняват през най-близкото огледало. Одитните журнали съхраняват всяко действие: кой, кога и от кой IP е създал клон, направил push, обединил PR.
Лицензирането на Bitbucket Data Center е на база брой потребители (не хранилища). Минималният лиценз за 50 потребители е на цена от 1520 долара годишно (стандартен план). Data Center е задължителен за организации, където: се изискват SLA за достъпност, данните не могат да напускат страната (GDPR, 152-ФЗ), броят на разработчиците надвишава 500 души или е необходима интеграция с корпоративна LDAP/SAML система.
Bitbucket Snippets — инструмент за съхранение и споделяне на малки кодови фрагменти. За разлика от хранилищата, Snippets нямат пълна Git история, но поддържат версиониране, коментари и форкове. Snippets са полезни за споделени конфигурации (docker-compose.yml за локално разработване), SQL скриптове за миграция и примерен код, който не изисква пълно хранилище. Всеки Snippet има уникален URL и може да бъде свързан с проект в Jira.
Bitbucket REST API 2.0 позволява програмно управление на хранилища, Pull Requests, клони и разрешения. API се използва за автоматизация на работни потоци: създаване на хранилище от шаблон, масово актуализиране на разрешения, получаване на статистика за Pull Requests и интеграция с външни CI системи. Rate limit е 1000 заявки на час за удостоверени потребители. API поддържа пагинация чрез параметри Page и Pagelen за работа с големи набори от данни.
Често задавани въпроси
Bitbucket е платформата на Atlassian за съхранение на Git код с CI/CD, преглед на код и вградена интеграция с Jira. Използва се от екипи, които вече работят в екосистемата на Atlassian.
Pipelines използва pipe компоненти (готови стъпки от Atlassian), по-лесен е за типични задачи. GitHub Actions предлага по-широк Marketplace и гъвкави матрични изграждания, но изисква повече настройка.
За екип от 5 души Bitbucket Cloud Standard струва 15 долара на месец (3 долара на потребител). Безплатният план е достъпен само за един потребител с ограничена функционалност.
Bitbucket предоставя вграден импортер от GitHub, GitLab и други платформи. В интерфейса изберете Import repository, въведете URL и данни за удостоверяване — всички commits и клони ще бъдат прехвърлени.
Data Center — корпоративната версия на Bitbucket за инсталиране на собствени сървъри с клъстеризация, Smart Mirroring и одит. Подходящ за организации със стотици разработчици и изисквания за сигурност на данните.
Резюме
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също