页面树结构

Bamboo要素包括:

剖析Bamboo构建

任何build-bot都能运行您的构建并将多个步骤联系起来。但是如果您想要以并行方式运行一些步骤,或依次运行其它的步骤,怎么办呢?或者如何聚合来自多项工作的测试结果?或者如何传递构建工件?没人有多余的时间,所以Bamboo假定您想要所有那些目的,而且是为了使它们更易于配置和管理而设计的。  

Bamboo中的基本单位称为一项计划Plan。  

  • 计划由一个或多个以序列方式运行的阶段Stage组成
  • 阶段由一个或多个以并行方式运行的工作Job组成
  • 工作由一个或多个以序列方式运行的任务Task组成 

 

 

看起来就像许多运动的片段,但是别着急:您会弄明白的。(而且嘿——如果构建工程很容易,您也就不需要我们这样的专家了,对吧?) 

任务Task

任务就是使用Bamboo进行自动化构建的基本构建块。任务可以

  • 检查源代码(从多个库中,如果那是您的事)
  • 运行脚本和内嵌命令
  • 调用您的构建引擎,例如MSBuild, Ant, Maven... 您知道的
  • 分析您的代码并生成报表
  • 使用本地脚本或者各种开源和第三方工具部署您的代码

 

 

Bamboo配有多种通用任务Task,并可以从Atlassian Marketplace获得更多的免费任务。

在它们的工作Job中,任务Task以顺序方式运行。通过将多个任务分组成一个单独的工作,您可以保证Bamboo以您所指定的顺序执行它们。相反,任务是各自独立的,可以拆分成工作,因此它们是以并行方式运行的(这样就可以加快您的构建时间)。  

接下来谈谈工作Job ...

工作Job

工作包含多个在构建代理上运行的任务。这些代理可能在同一台作为Bamboo服务器的机器上(本地代理Local Agents)),一台您网络中的不同的机器上(远程代理Remote Agents)),或者在亚马逊弹性计算上(弹性代理Elastic Agents)。

一个给定阶段的工作将以并行方式运行,直到获得执行它们的代理Agent。否则,工作以非特定的顺序一次运行一个。而且,Bamboo不会开始执行下一阶段的工作,直到当前阶段的所有工作都成功完成。这个小细节对持续发布有重大影响。它意味着您可以在同一个阶段有10个并行测试工作,而且如果它们中的任何一个找到了一个错误,您的下一阶段的部署工作就不会执行。使用Bamboo很容易防止破碎构建的意外部署!

再接着谈谈阶段Stage...

阶段Stage

阶段使您能够控制工作流的执行。它们提供了一种封装能够并行运行的独立工作的方式,而且出于同样的原因,提供了保证工作Job能够按您指定的顺序独立运行的方法。

因为它们很容易将您的自动化构建拆分成多个步骤,例如编译、测试和开发,所以阶段非常好。例如,工作可以用于将一系列的测试分解成更小的批处理,这样每个工作就能并行执行一个单独的批处理。当执行集成测试的时候,这很容易节省时间。下一阶段的工作不会开始执行,直到前面阶段的成功完成。例如,这能保证昂贵的集成测试只会在快速执行的单元测试通过以后才能执行。 

 任何阶段都能设计成“人工manual”(这实际上只是意味着“按键"push-button”)。这意味着您可以配置一个单独的构建流水线,这条流水线从代码回购一直到产品,实际上不必将每次构建都部署到产品。可以简单地人工设置那个阶段。Bamboo会使用每次提交构建所有的处理阶段,接着在人工阶段挂起该构建,然后发送合适的通知。当您准备好将一个构建发送到产品的时候,进入Bamboo中的目标构建,然后点击“执行play”按钮来处理您的计划的其余部分。

 

再谈谈计划Plan...

计划Plan

计划定义了您的构建过程中的一切。它是一个包含所有的阶段Stage、它们的工作Job和任务Task以及其它方面的容器。

当创建一项计划的时候,您会为它赋予一个唯一主键,说明从哪个库中(或者哪些库中)提取代码,然后选择它的触发器——使用每次发布定期构建,等等。也有将几个管理选项设置成全局缺省值并在计划层次调整。这些选项包括权限、通知、日志和构建清除、提升构建标准、以及变量。  

较新版本的Bamboo(v4以及更高)包含一项称为计划分支的功能。您可以将分支的位置告诉Bamboo,然后Bamboo就会完成其它的工作,而不是为您的每个活动分支创建克隆计划。对最初的计划所做的任何改变都会自动填充到计划分支中(再见,管理费!)对使用Git和Mercurial的团队来说,Bamboo会监控您的回购中的新分支,并创建计划分支,无需您动手。自动分支检测在DVCS(分布式版本控制系统)团队中非常普及,因此它也会很快用于SVN用户!

  • 无标签