Python 还能承担下一个时代的发展重任吗?Mojo 语言的横空出世对 AI 研发生态有什么影响? 了解详情
写点什么

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

  • 2016-07-12
  • 本文字数:2999 字

    阅读完需:约 10 分钟

在巴塞罗那举行的 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 部分信息可以了解最新开发进度。

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

2016-07-12 19:001988

评论

发布
暂无评论
发现更多内容

flutter 高效开发工具集

Daniel

时空碰撞优化系列·二

誓约·追光者

hive Sparksql 计算效率 优化

甲方日常 20

句子

工作 随笔杂谈 日常 Java 25 周年

c++杂谈-1

菜鸟小sailor 🐕

c++

船长梁晓玲的猎鹰号真的能赚钱嘛?不分析不知道……

成周

心理学 船长梁晓玲 诈骗

2020大厂面试一道高频Spring题,90%的Java开发者都拜倒在它脚下!

Java架构师迁哥

从全备中恢复单库或单表,小心有坑!

Simon

MySQL MySQL 运维

阿里P8大牛的建议,工作1-5年的Java工程师如何让自己变得更值钱

Java架构之路

Java 编程 程序员 面试

区块链用于支付手段只是开端

CECBC

区块链 金融

深度解析物联网设备的区块链技术

CECBC

区块链 智能合约 物联网

nginx 实现接口版本控制

程序员与厨子

php nginx laravel 版本控制

(2)skynet ubuntu下载与安装

休比

众盟科技2020智能化白皮书:穿越新商业周期,读懂商业智能化的真义

脑极体

救人于无形的“环境智能”,到底是一种什么智能?

脑极体

判断一个请求是否是Ajax异步请求

麦洛

ajax

Java引入第三方包的路径问题

谷鱼

路径

架构师训练营第 1 期 第 1 周作业

李循律

架构师训练营第 1 期 -week2

习习

时空碰撞优化系列·一

誓约·追光者

hive 数据分析 Sparksql 计算效率 优化

高并发下为什么更喜欢进程内缓存

架构师修行之路

缓存 架构设计

分布式高并发下Actor模型如此优秀

架构师修行之路

系统设计 reactor 高并发

新疆采风笔记:送行·出发·火车上

刘新吾

随笔 旅行 新疆

添加字幕哪个视频剪辑软件比较简单?

奈奈的杂社

视频创作 视频剪辑 视频后期 自媒体 后期字幕

华为云IoT智简联接,开启物联世界新纪元

华为云开发者联盟

物联网

一个线程池中的线程异常了,那么线程池会怎么处理这个线程?

Java架构师迁哥

架构师训练营 1 期第 2 周:框架设计 - 作业

piercebn

极客大学架构师训练营

分布式系统实践解读丨详解高内聚低耦合

华为云开发者联盟

华为云推UGO:一手抓结构迁移,一手抓SQL转换

华为云开发者联盟

golang 表格编程降低圈复杂度

猴子胖胖

表格开发 Go 语言

“大数据+区块链”的智慧城市建设!

CECBC

区块链 大数据

一个草根的日常杂碎(9月22日)

刘新吾

生活 随笔 记录

  • 扫码加入 InfoQ 开发者交流群
Bitbucket Pipelines在Atlassian的Bitbucket云上提供持续交付功能_DevOps & 平台工程_Steffen Opel_InfoQ精选文章