Bamboo与持续集成

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Bamboo与持续集成
目录
一、持续集成 (2)
持续集成之前 (2)
持续集成 (2)
二、Bamboo简介 (2)
Bamboo是什么 (2)
Bamboo解决了那些问题 (2)
Bamboo是如何做到这些的 (2)
Bamboo需要什么 (2)
Bamboo如何组织工作流 (2)
三、Bamboo入门: (2)
创建Project和Plan (2)
链接代码仓库 (2)
选择构建触发方式 (2)
配置tasks (2)
运行 (2)
获取反馈 (2)
一、持续集成
持续集成是一种软件开发的思想,用于应对过晚的集成所带来的合并灾难。

1.1持续集成之前
上图展示了未采用持续集成时使用分支的常规开发流程。

中间的蓝线是主分支,上面的紫线和下面的绿线是特征分支。

与分支颜色相同的方块代表一次提交。

橙色的方块代表一次合并,箭头表示合并的方向。

可以看到,在紫分支的P1-P5次提交合并到绿分支上时,需要大量的工作量处理合并时产生的问题。

这些问题可能导致之前耗费许多时间所进行的开发前功尽弃。

由于这些问题是由大规模的合并所导致的,那么容易想到一个解决办法,即使避免出现大规模合并。

持续集成便应景而生。

1.2持续集成
上图依然采用同样的例子说明持续集成思想。

可以看出,这次合并的次数大量增加,没有出现庞大的橙色方块。

三条分支基本上保持一致。

如果紫分支和绿分支的提交之间存在冲突,他们也能够尽早地发现,并交流如何解决冲突。

避免做无用功而不自知的情况。

上图展示了在实际开发中,持续集成思想是如何实现的。

首先有一个代码仓库服务器,开发者们都向这个仓库提交代码。

然后需要一个持
续集成服务器执行持续集成的具体步骤。

一旦代码仓库有新的变更,便开始执行编译,执行单元测试,执行集成测试,打包等构建过程。

如果需要的话,还可以将构建制品部署到生产环境。

持续集成的形式是频繁进行构建,确保代码正常。

其本质是尽快地暴露问题。

因为问题暴露得越早,越容易修复。

二、Bamboo简介
Bamboo是什么
Bamboo是一款持续集成服务器,可以用来自动化管理软件发布,创建一个持续交付流程。

持续集成是一种软件开发方法。

一旦代码提交到仓库当中,就执行构建、单元测试、集成测试,确保新的代码能够无误地集成到既有的代码之中。

持续构建提供了对于新代码质量尽可能早的错误反馈。

发布管理描述了发布软件时执行的典型步骤:包括构建和功能测试、标记、分配版本号,在生产环境中部署并激活新版本。

Bamboo解决了那些问题
如果你是单独的开发者,使用Bamboo可以给你:
自动化并且可靠的构建和测试过程,让你专注代码
一种管理有不同需求的构建的方式
自动部署到服务器,比如App Store和Google Play
如果你在一个团队中工作,那么除了以上的好处,使用Bamboo还意味着:
你的构建和测试过程不依赖于你特殊的本地环境。

构建和集成测试在开发者提交代码之后会自动触发
如果你在开发一个庞大且复杂的软件,那么除了以上好处,使用Bamboo还意味着:
你可以通过并发优化构建性能
你可以利用各种各样的资源
你可以持续部署以执行验收测试
你可以实现发布管理
Bamboo是如何做到这些的
Bamboo是一个中央管理服务器,计划和协调所有的工作
Bamboo有针对许多类型工作的接口和插件
Bamboo首先从你的代码仓库中获取代码
然后Bamboo开始构建
一旦构建完成,你拥有制品
你可以用制品做更多的事:
压缩他们并复制到其他地方
将他们制作成安装包
将他们安装到测试服务器上以保证一切安装正常Bamboo提供了一个Web程序用来进行配置和报告构建状态
Bamboo需要什么
Bamboo计划和协调了构建和测试过程中的所有工作。

所以,要使用Bamboo,你需要:
一个包含所有源代码的代码仓库
构建脚本
测试工具
一般而言,提交代码的人具有立即修复任何由新代码引起的构建错误的责任。

Bamboo如何组织工作流
Bamboo使用了’plan’和’job’还有’t asks’这些概念来配置和组织工作流中的事件。

Project:
有一个或多个plans
提供project中所有plans的报告
提供和其他软件之间的链接
Plan:
默认有一个stage,但是可以用来将jobs分组到多个stages

处理一系列在同一个代码仓库上顺序运行的stages
指定默认的仓库
指定构建如何被触发,plans之间的触发依赖条件
指定构建结果的通知方式
指定谁拥有查看和配置plan以及他的jobs的权限
提供plan变量的定义
Stage:
默认有一个job,也可以由多个jobs组成
在多个agents上,并行处理他的jobs
一个stage中的所有jobs执行成功之后才能执行下一个
stage
可能生成对接下来的stage有用的制品
Job:
在一个agent上顺序处理他的一系列task
控制task执行的顺序
汇集所有task的需求,用来匹配达到相应需求的agent
定义了构建可能产生的制品
只能使用之前的stage生成的制品
指定构建结果和制品的标签
Task:
是一个小而具体的工作单元,比如获取源代码,执行Maven
goal,运行脚本或者解析测试结果
在Bamboo工作目录里顺序执行
三、Bamboo入门:
这里以Java为例说明如何使用Bamboo为你的项目运行构建并获得快速反馈。

创建Project和Plan
Bamboo plan 指定了源码仓库,构建执行的tasks,还有触发构建的时机。

我们开始创建一个新plan:
1.使用具有创建plan权限的账号登陆到你的Bamboo服务器
2.从菜单栏中选择?Create?>?Create a new plan?
每个plan都属于一个project,因为我们还没有project,所以选择Project?>?New Project,为project和plan输入细节
Bamboo需要知道plan的名字,plan的key和一段说明plan作用的简单描述
链接代码仓库
Bamboo需要知道源码仓库的地址和能够访问仓库的权限,所以它在运行构建的时候获取源代码。

以Bitbucket为例,输入你的账号密码,点击Load Repositories浏览你的仓库。

如果你愿意,可以链接到示例仓库atlassian_tutorial/helloworld
选择构建触发方式
我们可以指定Bamboo如何触发构建。

在这里,我们让Bamboo在代码提交到仓库时就触发构建。

配置tasks
每一个plan都至少有一个task。

Tasks执行真正的工作。

The source code checkout task
一个新创建的plan有一个默认的获取源码task,它执行从之前定义的仓库中获取代码的任务。

The builder task
我们同样希望编译代码,执行单元和集成测试。

我们可以在Bamboo plan中添加一个builder task来执行这些任务。

我们假定你的项目已经有一个定义好的构建脚本,Bamboo可以调用这个脚本。

点击Add Task, then?Builder并选择与你的构建工具符合的task。

下面是三种常见的构建方式:
注意:
Bamboo服务器上必须安装好构建工具,才能执行相应的构建
任务
有许多适用于Bamboo的插件,让其他构建工具也能使用,比
如Gant和Gradle。

获取测试结果
你的测试将会在代码编译完成后进行。

每一个构建task都可以选择是否生成测试结果以及在哪里查看结果。

如果你的项目目录不使用传统的结构,你可以指定其他查看结果的位置。

运行
启用这个plan,点击Create
你应该能看见这个plan开始运行,Bamboo会:
链接到代码仓库
获取源代码
编译代码
执行单元和集成测试
返回测试结果
‘plan summary’会显示这次构建是成功还是失败
在正确目录里的测试会作为构建过程的一部分自动运行,测试结果将会在Bamboo中显示出来。

现在,无论你什么时候提交代码到仓库中,Bamboo都会构建你的代码并反馈测试结果。

获取反馈
Bamboo在dashboard上显示了构建结果的摘要:
plans的构建结果可以在wallboard上显示
你可以通过email, IM和RSS获取构建结果的通知
你可以获取plans的构建统计数据,以及开发者对代码的贡献你可以在结果中查看是那些代码触发了构建,以及那些执行了哪些测试。

相关文档
最新文档