当前位置: 首页 > news >正文

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旨在“帮助团队在每次代码推送后进行构建、测试和部署代码”,同时应该无需在不同工具之间进行切换,提供快速反馈环路。例如,构建状态会展示在所有相关联的提交、分支和拉取请求上,并可以从构建失败的命令处直接进入查看日志。

\\

5aad7f3914126f3ac7ee88387c818c6b.png

\\

和其他流行的基于云的持续集成/持续交付解决方案类似,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\u0026amp;A论坛的bitbucket-pipelines话题区提供技术支持。监控Bitbucket Cloud的公开问题追踪系统中的Pipelines部分信息可以了解最新开发进度。

\\

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

相关文章:

  • 下拉菜单的编辑
  • 【乐畅】工作积累 ---- 后台倒计时 ( 体力恢复功能 )
  • block防止循环引用的技巧
  • 分布式部署lamp,phpmyadmin,wordpress的安装与应用
  • == 和 equals()的区别
  • Java基本语法-----java常量
  • 开发中的对控件大小 颜色等默认状态的意识
  • 面试资料
  • Linux 常用命令(一)
  • [转载] FFMPEG之AVRational TimeBase成员理解
  • 用GNS3制作路由交换网络拓扑图
  • libevent
  • linux下历史命令history使用方法
  • matlab灰度变彩色+白平衡算法实现
  • Activityd的四种启动模式
  • hexo+github搭建个人博客
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • HashMap剖析之内部结构
  • Java到底能干嘛?
  • npx命令介绍
  • Vue.js源码(2):初探List Rendering
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 对象引论
  • 多线程事务回滚
  • 记录一下第一次使用npm
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 一天一个设计模式之JS实现——适配器模式
  • python最赚钱的4个方向,你最心动的是哪个?
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​MySQL主从复制一致性检测
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #FPGA(基础知识)
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (C++17) std算法之执行策略 execution
  • (搬运以学习)flask 上下文的实现
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (二)windows配置JDK环境
  • .NET Core 中插件式开发实现
  • .net 后台导出excel ,word
  • ::before和::after 常见的用法
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • @取消转义
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [C++ 从入门到精通] 12.重载运算符、赋值运算符重载、析构函数
  • [C++]:for循环for(int num : nums)
  • [Docker]十一.Docker Swarm集群raft算法,Docker Swarm Web管理工具
  • [HTML]Web前端开发技术18(HTML5、CSS3、JavaScript )HTML5 基础与CSS3 应用——喵喵画网页
  • [IOI2018] werewolf 狼人
  • [java进阶]——方法引用改写Lambda表达式
  • [JDK工具-2] javap 类文件解析工具-帮助理解class文件,了解Java编译器机制
  • [linux][调度] 内核抢占入门 —— 高优先级线程被唤醒时会立即抢占当前线程吗 ?
  • [python] 基于diagrams库绘制系统架构图