转载

Bitbucket Pipelines在Atlassian的Bitbucket云上提供持续交付功能

在巴塞罗那举行的 AtlasCamp 上, Atlassian公司发布了Bitbucket Pipelines的beta版本 ,在其Bitbucket Cloud上提供用于持续交付功能。同时,Atlassian公司也宣布他们当前基于Bamboo Cloud提供的持续集成/持续交付云将于2017年1月31日 关闭 。但是他们强调 Bamboo Server 仍然将作为 Bitbucket Server (之前名为Stash)预置的持续集成/持续交付工具。

Bitbucket Pipelines 是Atlassian公司源码仓库托管服务 Bitbucket 的云版本新的 持续交付(Continuous Delivery,CD) 特性,它无需设置构建代理,也无需集成外部持续集成工具。由于整个开发流程,从代码到部署都在Bitbucket Cloud上完成,Pipelines旨在“帮助团队在每次代码推送后进行构建、测试和部署代码”,同时应该无需在不同工具之间进行切换,提供快速反馈环路。例如,构建状态会展示在所有相关联的提交、分支和拉取请求上,并可以从构建失败的命令处直接进入查看日志。

Bitbucket Pipelines在Atlassian的Bitbucket云上提供持续交付功能

和其他流行的基于云的持续集成/持续交付解决方案类似,Bitbucket Pipelines基于 类似代码的配置 ,用于驱动基于临时 Docker 容器的构建环境在每次代码提交到托管仓库的自动运行。一旦对一个仓库开启之后,开发者可以通过在代码仓库根目录的 bitbucket-pipelines.yml YAML文件来管理他们的持续交付管线,其中可以通过引用镜像来指定构建环境,这些镜像可以来自

Docker Hub 或者自定义注册中心。一个简单的示例如下:

image: python:3.4.3 pipelines:   default: # 针对分支构建,默认不需要指定pipeline。     - step:         script:           - pip install -U tox           - pip --version           - tox --version   branches: # 分支pipeline特定的容器     feature/*:       - step:           image: python:3.5.1 # 该步骤使用独立的镜像。           script:             - echo "Runs only on branches that match this pattern."

InfoQ和 Sten Pittet (Bitbucket Pipelines产品经理)进行了交流,深入了解Atlassian公司的集成持续交付解决方案。

InfoQ:您能给我们详细介绍下Bitbucket Pipelines和它的工作原理吗?

**Pittet:**Atlassian在持续集成和持续交付上对Bamboo Server和Bamboo Cloud的投入已经有一段时间,我们希望找到一种方法,让开发团队在快速发布的同时有优秀的质量。持续交付可以帮助开发者达到这个目的,但是对于云上因为设置的复杂性,使得用户难以适应。我们的使命是让开发过程民主化(democratize),帮助每个软件开发团队了解(持续交付)的潜力并更好的工作。纵观我们所拥有的东西,我们意识到实现持续交付的最佳方式通过将持续集成/持续交付工作流集成到Bitbucket来简化我们的产品,贴近应该和持续交付结合的代码仓库。

InfoQ:市场上有很多持续集成/持续交付的产品,很多已经集成到了Bitbucket,直接在Bitbucket Cloud中构建一个新的解决方案的动机是什么?

Pittet:主要动机是为软件开发团队简化流程。之前进行持续交付比较困难是因为我们没有类似Docker这样的技术,可以通过简单的容器化运行代理。但是我们将pipeline引入Bitbucket的主要原因是质量问题不应该等待。如今,测试已经变得越来越关键,我们希望从第一天起就能够对每个开发团队产生价值。因此我们为Bitbucket创建了新的平台[…]。我们相信我们现在已经将Bitbucket变成了一个可以编码、构建、测试和部署的平台,它拥有开发者需要的所有确保软件高质量的工具。

InfoQ:如果我对Bitbucket Pipelines了解的没错,每个构建步骤都作为独立的容器实例运行在Docker镜像中?

Pittet:是的,开发者可以在代码中使用YAML格式文件定义自己的pipeline[…],同时他们可以为指定的分支定义不同的pipeline以支持类似 Gitflow 的分支工作流特性。在每个pipeline中,我们有一些步骤。像这样我们可以定义一个所有步骤都使用的Docker镜像,也可以在步骤级别覆盖镜像[…]。在beta版本中,pipeline限制了每个只有一个步骤,但是我们将在未来进行扩展,使其更加灵活[…]。

Bitbucket提供了默认 Docker镜像作为构建环境 。用户可以从Docker Hub或者自定义注册中心引用镜像,亦或创建他们自己的镜像。 手工 或者在 Docker Hub上自动构建的镜像 也可以在 Bitbucket进行监控 。

Pittet确认Bitbucket Pipelines实现基于 亚马逊EC2容器服务(ECS) 。虽然这种透明和被管控容器的使用是Pipeline的价值主张之一,用户也提出了提供 在他们自己的ECS集群中执行构建 能力的请求。

InfoQ:Bitbucket Pipelines自身作为 Bitbucket Connect 插件实现,Pipelines自身能够被按需扩展吗?

Pittet:这是我们希望在将来提供的功能,beta版本的一个目标是和合作伙伴和希望扩展Bitbucket Pipelines的开发者共同协作,以了解什么是最好的实现方案。如果我们使用Bamboo Cloud作为示例,由于其 Plugins 2 架构的技术限制,我们将没有那样的机会[…]。通过Pipelines我们现在有很多的机会来实现这个目标。我们必须定义这些集成方案,但是我们期待我们能够在未来做些什么。

InfoQ:你们已经在促成第三方提供商(例如Azure和AWS)的 集成方案 。这个点上的集成会包括什么?它们会走向插件的道路吗?

Pittet:目前,我们的集成方案基于文档。这些文档将帮助我们的测试用户把Pipeline集成到诸如Azure平台,得他们可以在上面进行部署。我们也有一些和移动平台的集成[…]。我们将和合作伙伴一起工作,使得这些集成在未来会变得更加简单。

InfoQ:Atlassian最近将预置的Git解决方案Stash 更名 为Bitbucket Server,和Bitbucket Cloud一起成为联合品牌,并且整合了用户接口和API,Bitbucket Pipelines也会因此为Bitbucket Server提供服务吗?

Pittet:我们没有这样的计划。我们考虑到Bamboo Server是Bitbucket Server非常好的预置解决方案,它们已经很好的集成到了一起。我们的计划是在Bamboo Server上投入更多以使其成为大型企业更好的解决方案。最近我们推出了一个新的250级代理[参见前文],因此我们对两边都认真对待,我们希望Bamboo Server继续发展。

目前客户已经表达了对Bitbucket Pipelines会替代Bamboo Cloud但没有提供功能对比列表的 担忧 。当前显著的 限制 是缺少对 Mercurial的支持 ,缺少 邮件 或者HipChat 提醒 ,没有构件存储管理,无法将 构建和推送Docker镜像 作为pipeline的一部分,缺少和 JIRA开发面板 集成。对用户来说目前也缺少为解耦交付和部署而使用的 定时调度 或者 人工触发 构建功能,和第三方服务集成的 网络钩子 , 限制并行构建数量和设置静默期 功能。另一方面,Bitbucket Pipelines类似的配置方式,既以代码方式设置 配置文件 、使用 模板 或 API ,也是Bamboo Server上需求强烈的特性。

Atlassian还未透露Bitbucket Pipelines的定价策略,并且在beta测试期间继续免费提供,内含每个用户每个月300分钟的免费构建。例如一个团队的10个开发人员将会有每个月3000分钟额度,以账户级别计算,在每个月的第一天重置。定价策略将根据团队用户数量来制定定价模型。

Bitbucket Pipelines文档 提供了更多细节,包括 常见问题 。Atlassian的 开发者工具支持门户页 和AtlassianQ&A论坛的 bitbucket-pipelines 话题区提供技术支持。监控Bitbucket Cloud的公开问题追踪系统中的 Pipelines部分 信息可以了解最新开发进度。

查看英文原文: Bitbucket Pipelines Provides Continuous Delivery within Atlassian’s Bitbucket Cloud

原文  http://www.infoq.com/cn/news/2016/07/atlassian-bitbucket-pipelines
正文到此结束
Loading...