Bitbucket:关键概念、Pipelines和功能

作者: IT Sectr 发布日期: 2026-05-09 阅读时间: 8 分钟

Bitbucket 是Atlassian公司的Git平台,与Jira、Confluence和生态系统中的其他工具集成。Bitbucket提供Git仓库托管、通过Bitbucket Pipelines内置的CI/CD以及强大的代码审查工具。根据Atlassian,2024的数据,全球超过1000万开发者和80万团队使用Bitbucket。

要点

  • Bitbucket — Atlassian的Git平台,与Jira和Confluence深度集成以管理项目。
  • Bitbucket Pipelines — 内置的CI/CD,通过YAML配置并支持Docker容器。
  • Pull Request 附带代码审查,包括内联评论、检查(checks)和强制批准。
  • Bitbucket Cloud — SaaS版本,Data Center — 企业客户的本地版本。
  • 与Jira集成 — 通过消息中的密钥自动将提交和PR与任务关联。

什么是Bitbucket?

Bitbucket 是一个用于托管Git仓库的网络平台,由Atlassian公司开发。最初Bitbucket只支持Mercurial(从2008年开始),但在2020年停止对Mercurial的支持后,完全转向了Git。该平台有两个版本:Bitbucket Cloud(SaaS,Atlassian托管)和Bitbucket Data Center(面向企业的本地版本)。

Bitbucket相比竞争对手的主要优势 — 与Atlassian产品的深度集成。Jira自动将提交和Pull Request与任务关联,Confluence允许在文档中嵌入代码片段,Opsgenie将部署与事件关联。对于已经使用Atlassian生态系统的团队来说,Bitbucket是自然的选择,因为它不需要配置额外的集成。

Bitbucket Cloud提供多个托管级别。免费套餐包括一个用户和有限的存储空间(1 GB)。标准套餐每位用户每月3美元,提供无限私有仓库和每月2500分钟的Pipelines。Bitbucket采用用户许可模式:每个有权访问仓库的用户(包括只读用户)都需要付费。

Bitbucket Pipelines:开箱即用的CI/CD

Bitbucket Pipelines 是一个基于Docker容器运行的内置CI/CD系统。Pipelines直接集成到Bitbucket Cloud中,无需安装单独的运行器或配置webhook。配置在仓库根目录下的 bitbucket-pipelines.yml 文件中描述。每个管道由组合成序列的步骤(steps)组成。

Pipelines支持并行步骤、手动触发、推送和定时触发器、依赖缓存和构建产物。每个步骤在隔离的Docker容器中执行,其镜像在配置中指定。以下是一个构建Android应用程序并进行测试和发布到Firebase App Distribution的示例管道:

yaml
# 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在Cloud版本中每个管道有50分钟的限制,这对大多数项目来说足够,但对于大型单一仓库来说可能成为瓶颈。在Data Center中,这个限制被完全取消 — 管道的持续时间仅由服务器的可用资源决定。Pipelines还支持自定义Docker镜像,允许使用任何构建和测试工具。

Bitbucket中的Pull Request和代码审查

Bitbucket中的Pull Request 注重企业代码审查流程的实现。Bitbucket提供:针对diff特定行的内联评论、来自Pipelines或外部服务的强制检查(checks)、合并的最少批准数量、在所有检查通过之前阻止合并以及利益冲突声明(decline)。PR界面分为三列:源代码、diff和文件结构。

Bitbucket的独特功能 — Code Insights。这是一个用于集成外部代码质量工具(SonarQube、CodeScene、ESLint、Detekt)的API,这些工具直接在Pull Request界面中显示其结果。开发者可以看到:新错误数量、测试覆盖率、代码异味和重复。Code Insights允许基于客观指标(而不仅仅是审阅者的主观意见)做出关于合并的决定。

Bitbucket还支持分支限制(branch permissions):可以禁止删除分支,强制为某些分支创建PR,限制有权合并到main的用户列表。此外还有合并检查(merge checks) — 在Merge按钮之前必须满足的强制性条件列表(Pipelines通过,至少N个批准,没有未解决的评论)。设置保护生产分支免受意外未经审查的更改。

Bitbucket与Jira和Confluence的集成

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 — 将部署与任务版本关联。当管道到达部署阶段时,Jira会检查此版本中的所有任务是否具有Approved状态。如果没有 — 部署将被阻止。这实现了持续交付原则,在任务级别(而不仅仅是代码级别)进行质量控制。

仓库模板

Bitbucket允许创建仓库模板以标准化项目结构。对于移动项目,可以创建包含预设文件的模板:Gradle配置、gitignore、Detekt和Ktlint设置、Android CI管道和带有构建说明的README。新项目只需几次点击即可从模板创建,这加快了新开发人员的入职速度。

Bitbucket对比GitHub和GitLab

Bitbucket与GitHub和GitLab的比较 取决于团队工作的生态系统。Bitbucket在社区规模上输给GitHub(1000万对1亿用户),但凭借Atlassian技术栈在企业集成方面胜出。如果团队已经使用Jira进行任务管理和Confluence进行文档 — Bitbucket提供无缝集成,无需额外配置。

CI/CD方面,Bitbucket Pipelines在高级场景中落后于GitLab CI/CD(没有子管道、矩阵构建、多级管道),并且在现成操作数量上落后于GitHub Actions(Marketplace Actions包含20,000多个步骤,而Bitbucket有数千个公共pipe)。然而,由于Atlassian提供的现成pipe组件,Pipelines在典型场景中配置更简单。

标准BitbucketGitHubGitLab
CI/CDPipelines,50分钟/步Actions,2000分钟/月CI/CD,无限制(自助)
集成Jira,ConfluenceCopilot,Slack,AzureKubernetes,Prometheus
Self-HostedData Center(付费)Enterprise ServerCE(免费)
用户~1000万~1亿~3000万
许可证专有专有MIT(开源)

选择Bitbucket在两种情况下是合理的:团队已经使用Atlassian生态系统(Jira + Confluence + Opsgenie),或者工作在企业环境中,Bitbucket Data Centre已经作为标准工具部署。对于初创公司和开源项目,GitHub提供更丰富的社区和免费功能,而GitLab — 最好的自托管CI/CD。

面向企业的Bitbucket Data Center

Bitbucket Data Center 是该平台的企业版,旨在安装在自己的基础设施上。与Cloud版本不同,Data Center提供:集群(多节点的主动-主动模式)、Smart Mirroring(地理分布的镜像以加速clone/fetch)、高可用性(集群时99.99%正常运行时间)和完整的操作审计。

Data Center包含Cloud版本的所有功能,但带有企业扩展。Smart Mirroring 自动同步不同数据中心服务器之间的仓库 — 来自欧洲和亚洲的开发人员获得相同的clone/fetch速度,因为Git操作通过最近的镜像执行。审计日志记录每一个操作:谁、何时以及从哪个IP创建了分支、进行了推送、合并了PR。

Bitbucket Data Center的许可基于用户数量(而非仓库数量)。50用户的最低许可起价为每年1520美元(标准套餐)。对于以下组织,Data Center是强制性的:需要可用性SLA、数据不能离开所在国家(GDPR、152-FZ)、开发人员数量超过500人或需要与企业LDAP/SAML系统集成。

Bitbucket Snippets用于共享代码

Bitbucket Snippets — 用于存储和共享小段代码的工具。与仓库不同,Snippets没有完整的Git历史记录,但支持版本控制、评论和分支。Snippets对于共享配置(用于本地开发的docker-compose.yml)、SQL迁移脚本和不需要完整仓库的代码示例非常有用。每个Snippet都有唯一的URL,可以关联到Jira中的项目。

用于自动化的Bitbucket API

Bitbucket REST API 2.0 允许以编程方式管理仓库、Pull Request、分支和权限。API用于自动化工作流程:从模板创建仓库、批量更新权限、获取Pull Request统计信息以及与外部CI系统集成。对于经过身份验证的用户,速率限制为每小时1000个请求。API通过PagePagelen参数支持分页以处理大型数据集。

常见问题

什么是Bitbucket,它有什么用?

Bitbucket 是Atlassian的平台,用于存储带有CI/CD、代码审查和内置Jira集成的Git代码。由已在Atlassian生态系统中工作的团队使用。

Bitbucket Pipelines与GitHub Actions有何不同?

Pipelines 使用pipe组件(Atlassian的现成步骤),对于典型任务更简单。GitHub Actions提供更广泛的市场和灵活的矩阵构建,但需要更多配置。

Bitbucket对于小团队需要多少费用?

对于5人团队,Bitbucket Cloud Standard每月费用为15美元(每位用户3美元)。免费套餐仅适用于一个用户,功能有限。

如何将仓库从GitHub迁移到Bitbucket?

Bitbucket提供内置导入器,支持从GitHub、GitLab和其他平台导入。在界面中选择Import repository,输入URL和身份验证信息 — 所有提交和分支都将被迁移。

什么是Bitbucket Data Center?

Data Center 是Bitbucket的企业版,用于安装在自有服务器上,具有集群、Smart Mirroring和审计功能。适合拥有数百名开发人员和数据安全要求的组织。

总结

  • Bitbucket — Atlassian的Git平台,专注于企业集成和代码审查。
  • Pipelines — Docker容器上的内置CI/CD,带有Atlassian的现成pipe组件。
  • 与Jira集成 自动将提交和PR与任务关联,在合并时更新状态。
  • Code Insights 直接在Pull Request界面中显示外部代码分析器的结果。
  • Data Center — 本地企业版,具有集群、Smart Mirroring和完整审计功能。
  • Bitbucket 适合已在企业环境中使用Jira和Confluence的团队。
  • 开始使用 — 创建仓库,连接Pipelines并配置Code Insights — 这将覆盖团队的主要需求。

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读