@babydragon
2016-07-12T13:53:20.000000Z
字数 3811
阅读 2404
持续交付
在巴塞罗那举行的AtlasCamp上,Atlassian公司发布了Bitbucket Pipelines的beta版本,在其Bitbucket Cloud上提供用于持续交付功能。同时,Atlassian公司也宣布他们当前基于Bamboo Cloud提供的持续集成/持续交付云将于2017年1月31日关闭。但是他们强调Bamboo Server仍然将作为Bitbucket Server预置的持续集成/持续交付工具(之前名为Stash)。
在巴塞罗那举行的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基于类似代码的配置,用于驱动基于临时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部分信息可以了解最新开发进度。
查看英文原文:https://www.infoq.com/news/2016/06/atlassian-bitbucket-pipelines