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 аутоматски повезује комитове и Pull Request-ове са задацима, Confluence омогућава уграђивање код исечака у документацију, а Opsgenie повезује деплојеве са инцидентима. За тимове који већ користе Atlassian екосистем, Bitbucket је природан избор, јер не захтева подешавање додатних интеграција.
Bitbucket Cloud нуди неколико нивоа хостинга. Бесплатни тарифни пакет укључује једног корисника и ограничено складиште (1 GB). Стандардни тарифни пакет кошта 3 долара по кориснику месечно, са неограниченим бројем приватних репозиторијума и 2500 минута Pipelines-а месечно. Bitbucket користи кориснички модел лиценцирања: наплаћује се сваки корисник који има приступ репозиторијуму, укључујући само за читање.
Bitbucket Pipelines је уграђени CI/CD систем који ради на бази Docker контејнера. Pipelines је интегрисан директно у Bitbucket Cloud и не захтева инсталацију посебних ранера или подешавање вебхука. Конфигурација се описује у датотеци 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 нуди: инлине коментаре на конкретне линије 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 — кључна предност платформе. Када програмер укључи у поруку комита кључ задатка (нпр. PROJ-123), Jira аутоматски повезује тај комит са задатком. У интерфејсу задатка приказује се картица Development, где су прикупљени сви комитови, Pull Request-ови, гране и деплојеви повезани са овим задатком. PR-ови аутоматски ажурирају статус задатка у Jira-и при спајању (прелазак у Done).
Confluence се такође интегрише са Bitbucket-ом: могуће је уметати живе код исечке из репозиторијума на Confluence странице путем макроа Code Block. Промене у коду се аутоматски синхронизују са Confluence-ом, што је згодно за вођење архитектуралне документације. Додатно, Atlassian пружа Smart Commits — управљање Jira задацима директно из поруке комита: промена статуса, додавање времена и приоритета.
За 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, матричних изградњи, вишеслојних pipeline-ова) и GitHub Actions по броју готових акција (Marketplace Actions садржи 20.000+ корака наспрам хиљада јавних пајпова у 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% uptime при кластеризацији) и потпуну ревизију радњи.
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 Request-овима, гранама и дозволама. API се користи за аутоматизацију радних процеса: креирање репозиторијума из шаблона, масовно ажурирање дозвола, добијање статистике Pull Request-а и интеграција са спољним CI системима. Rate limit износи 1000 захтева на сат за аутентификоване кориснике. API подржава Pagination кроз 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 и податке за аутентификацију — сви комитови и гране ће бити пренети.
Data Center — корпоративна верзија Bitbucket-а за инсталацију на сопствене сервере са кластеризацијом, Smart Mirroring-ом и ревизијом. Погодан за организације са стотинама програмера и захтевима за безбедност података.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође