Bitbucket یک پلتفرم Git از شرکت Atlassian است که با Jira، Confluence و سایر ابزارهای اکوسیستم یکپارچه شده است. Bitbucket میزبانی مخازن Git، CI/CD داخلی از طریق Bitbucket Pipelines و ابزارهای قدرتمند برای بازبینی کد را فراهم میکند. به گزارش Atlassian، 2024، بیش از ۱۰ میلیون توسعهدهنده و ۸۰۰٬۰۰۰ تیم در سراسر جهان از Bitbucket استفاده میکنند.
نکات کلیدی
Bitbucket یک پلتفرم وب برای میزبانی مخازن Git است که توسط شرکت Atlassian توسعه یافته است. در ابتدا Bitbucket فقط از Mercurial پشتیبانی میکرد (از سال ۲۰۰۸)، اما پس از توقف پشتیبانی از Mercurial در سال ۲۰۲۰، کاملاً به Git منتقل شد. این پلتفرم در دو نسخه در دسترس است: Bitbucket Cloud (SaaS، میزبانی Atlassian) و Bitbucket Data Center (نسخه محلی برای سازمانها).
مزیت اصلی Bitbucket نسبت به رقبا — یکپارچهسازی عمیق با محصولات Atlassian است. Jira به طور خودکار کامیتها و Pull Requestها را به وظایف متصل میکند، Confluence امکان جاسازی قطعات کد در مستندات را فراهم میکند و Opsgenie استقرارها را با حوادث مرتبط میسازد. برای تیمهایی که قبلاً از اکوسیستم Atlassian استفاده میکنند، Bitbucket انتخاب طبیعی است، زیرا نیازی به پیکربندی یکپارچهسازیهای اضافی ندارد.
Bitbucket Cloud سطوح مختلفی از میزبانی را ارائه میدهد. طرح رایگان شامل یک کاربر و فضای ذخیرهسازی محدود (۱ گیگابایت) است. طرح استاندارد — ۳ دلار به ازای هر کاربر در ماه با تعداد نامحدود مخازن خصوصی و ۲۵۰۰ دقیقه Pipelines در ماه. Bitbucket از مدل صدور مجوز کاربر استفاده میکند: هر کاربری که به مخزن دسترسی دارد، از جمله فقط خواندنی، صورتحساب میشود.
Bitbucket Pipelines یک سیستم CI/CD داخلی است که بر پایه کانتینرهای Docker کار میکند. Pipelines مستقیماً در Bitbucket Cloud یکپارچه شده است و نیازی به نصب runnerهای جداگانه یا پیکربندی 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 محدودیت ۵۰ دقیقه برای هر 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 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 یکپارچه میشود: میتوان قطعات زنده کد را از مخزن از طریق ماکروی Code Block در صفحات Confluence وارد کرد. تغییرات در کد به طور خودکار با Confluence همگامسازی میشود که برای نگهداری مستندات معماری مناسب است. علاوه بر این Atlassian Smart Commits را ارائه میدهد — مدیریت وظایف Jira مستقیم از پیام کامیت: تغییر وضعیت، افزودن زمان و اولویتها.
برای اتوماسیون DevOps Bitbucket از Deployment Gate پشتیبانی میکند — پیوند استقرار به نسخه وظیفه. هنگامی که pipeline به مرحله استقرار میرسد، Jira بررسی میکند که آیا تمام وظایف در این انتشار دارای وضعیت Approved هستند. اگر نه — استقرار مسدود میشود. این اصل Continuous Delivery را با کنترل کیفیت در سطح وظایف و نه فقط کد پیادهسازی میکند.
Bitbucket امکان ایجاد قالبهای مخزن برای استانداردسازی ساختار پروژهها را فراهم میکند. برای پروژههای موبایل میتوان قالبی با فایلهای از پیش تنظیم شده ایجاد کرد: پیکربندی Gradle، gitignore، تنظیمات Detekt و Ktlint، pipeline برای CI اندروید و README با دستورالعمل ساخت. پروژه جدید از قالب در چند کلیک ایجاد میشود که سرعت ورود توسعهدهندگان جدید را افزایش میدهد.
مقایسه Bitbucket با GitHub و GitLab به اکوسیستمی بستگی دارد که تیم در آن کار میکند. Bitbucket از نظر اندازه جامعه به GitHub میبازد (۱۰ میلیون در مقابل ۱۰۰ میلیون کاربر)، اما در یکپارچهسازیهای سازمانی به دلیل پشته Atlassian برنده است. اگر تیم قبلاً از Jira برای مدیریت وظایف و Confluence برای مستندات استفاده میکند — Bitbucket یکپارچهسازی یکپارچه بدون تنظیمات اضافی ارائه میدهد.
از نظر CI/CD Bitbucket Pipelines در سناریوهای پیشرفته از GitLab CI/CD پایینتر است (بدون child pipelines، ساختهای ماتریسی، pipelineهای چندسطحی) و از GitHub Actions از نظر تعداد اقدامات آماده (Marketplace Actions شامل ۲۰٬۰۰۰+ گام در مقابل هزاران pipe عمومی در Bitbucket) پایینتر است. با این حال، Pipelines برای سناریوهای معمولی به لطف اجزای pipe آماده از Atlassian سادهتر تنظیم میشود.
| معیار | Bitbucket | GitHub | GitLab |
|---|---|---|---|
| CI/CD | Pipelines، ۵۰ دقیقه/گام | Actions، ۲۰۰۰ دقیقه/ماه | CI/CD، بدون محدودیت (Self) |
| یکپارچهسازی | Jira، Confluence | Copilot، Slack، Azure | Kubernetes، Prometheus |
| Self-Hosted | Data Center (پولی) | Enterprise Server | CE (رایگان) |
| کاربران | ~۱۰ میلیون | ~۱۰۰ میلیون | ~۳۰ میلیون |
| مجوز | اختصاصی | اختصاصی | MIT (کد باز) |
انتخاب Bitbucket در دو سناریو توجیهپذیر است: تیم قبلاً از اکوسیستم Atlassian (Jira + Confluence + Opsgenie) استفاده میکند یا کار در محیط سازمانی انجام میشود که Bitbucket Data Centre قبلاً به عنوان ابزار استاندارد مستقر شده است. برای استارتاپها و پروژههای منبع باز، GitHub جامعه غنیتر و ویژگیهای رایگان ارائه میدهد و GitLab — بهترین CI/CD خودمیزبان را.
Bitbucket Data Center نسخه سازمانی پلتفرم است که برای نصب بر روی زیرساخت اختصاصی طراحی شده است. برخلاف نسخه Cloud، Data Center ارائه میدهد: خوشهبندی (حالت فعال-فعال برای چندین گره)، Smart Mirroring (آینههای توزیع شده جغرافیایی برای تسریع clone/fetch)، دسترسی بالا (۹۹٫۹۹٪ آپتایم با خوشهبندی) و حسابرسی کامل اقدامات.
Data Center شامل تمام ویژگیهای نسخه Cloud است، اما با افزونههای سازمانی. Smart Mirroring به طور خودکار مخازن را بین سرورها در مراکز داده مختلف همگامسازی میکند — توسعهدهندگان از اروپا و آسیا سرعت clone/fetch یکسانی دریافت میکنند، زیرا عملیات Git از طریق نزدیکترین آینه انجام میشود. گزارشهای حسابرسی هر اقدام را ذخیره میکنند: چه کسی، چه زمانی و از چه IP شاخه ایجاد کرد، push انجام داد، PR را ادغام کرد.
صدور مجوز Bitbucket Data Center بر اساس تعداد کاربران است (نه مخازن). حداقل مجوز برای ۵۰ کاربر با قیمت از ۱۵۲۰ دلار در سال (طرح استاندارد). Data Center برای سازمانهایی که موارد زیر را دارند الزامی است: SLA برای دسترسی مورد نیاز است، دادهها نمیتوانند کشور را ترک کنند (GDPR، ۱۵۲-FZ)، تعداد توسعهدهندگان بیش از ۵۰۰ نفر است یا یکپارچهسازی با سیستم 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 خارجی. محدودیت نرخ ۱۰۰۰ درخواست در ساعت برای کاربران تأیید شده است. API از صفحهبندی از طریق پارامترهای Page و Pagelen برای کار با مجموعه دادههای بزرگ پشتیبانی میکند.
سوالات متداول
Bitbucket پلتفرم Atlassian برای ذخیره کد Git با CI/CD، بازبینی کد و یکپارچهسازی داخلی با Jira است. توسط تیمهایی که در اکوسیستم Atlassian کار میکنند استفاده میشود.
Pipelines از اجزای pipe (مراحل آماده از Atlassian) استفاده میکند، برای کارهای معمولی سادهتر است. GitHub Actions Marketplace گستردهتر و ساختهای ماتریسی انعطافپذیرتر ارائه میدهد، اما به پیکربندی بیشتری نیاز دارد.
برای تیم ۵ نفره Bitbucket Cloud Standard ماهانه ۱۵ دلار هزینه دارد (۳ دلار به ازای هر کاربر). طرح رایگان فقط برای یک کاربر با عملکرد محدود در دسترس است.
Bitbucket واردکننده داخلی از GitHub، GitLab و سایر پلتفرمها را ارائه میدهد. در رابط، Import repository را انتخاب کنید، URL و اطلاعات احراز هویت را وارد کنید — تمام کامیتها و شاخهها منتقل میشوند.
Data Center نسخه سازمانی Bitbucket برای نصب بر روی سرورهای اختصاصی با خوشهبندی، Smart Mirroring و حسابرسی است. مناسب برای سازمانهایی با صدها توسعهدهنده و الزامات امنیت داده.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید