分支上的竹构建计划,而不是开发上的竹构建计划(又称有条件构建)

A_D*_*teo 2 java continuous-integration bamboo maven git-flow

这是一种尝试跨分支实施有条件构建的尝试,由于BAM-11257(自2012年以来一直开放,至今仍未完成),因此默认情况下是不可能的。

内容

  • 竹5.10.3
  • Gitflow分支策略的应用
  • 我们想对在功能分支某种行为,在释放和修复分支的不同的行为,和第三不同的行为develop分支

已实施(无效)方法

  • 三种不同的建造计划
  • 第一个在构建计划的“分支”选项卡中提供一个正则表达式(“创建计划分支以匹配新分支),仅匹配功能和错误修正分支((?=(feature.*|bugfix.*)).*$),然后在其阶段和工作中提供所需的行为。
  • 如上所述的第二个配置为发布和修补程序分支((?=(hotfix.*|release.*)).*$),然后分阶段使用自己的行为
  • 第三个在其“分支”控件中具有“不创建计划分支”,即没有分支,仅用于develop

这可以正常工作,每个分支都有基于所需行为的自己的构建计划。但是,将任何分支合并到时develop,这三个构建计划是并行启动的,因为它们三个develop在其“存储库”中均作为原始分支条目。

问题:如何避免这种副作用?我们如何只为某些分支类型而不是原始分支(在这种情况下develop)指定构建计划?


我知道Bamboo需要一个起源,它可以根据某种策略(正则表达式)从其分支克隆新的构建计划,但是我们如何才能阻止它为原始分支运行构建计划呢?或者,我们可以定义一个构建计划的分支类型分别比它的起源和基于动态名称(例如feature-somethingfeature-bob)?

(关于最后一点:在“存储库”中,我们可以指定一个分支作为源,但这是一个静态值,我们不能在其中放置一个正则表达式,我想这可以解决整个问题)

A_D*_*teo 5

可以在Bamboo中为分支“ 类型 ” 定义一个构建计划,并且默认情况下不链接到其他分支。因此,Bamboo计划配置仅适用于动态分支,没有默认分支可运行。

主要的误解来自以下几点:

  • 在计划配置的“存储库”选项卡中,您可能会有一个“ BitBucket / Stash”存储库,您可以在其中选择存储库还必须选择一个分支,这是一个带有必填默认值的下拉框。这是这里的主要问题。此选项使您必须已经为现有分支(例如develop)定义了构建计划,而您实际上希望为动态分支(例如尚未创建的功能分支)定义了构建计划。
  • 然后,在“分支”选项卡的“自动分支管理”部分下,您实际上可以根据正则表达式选择分支策略以适合动态分支(例如,(?=(feature.*|bugfix.*)).*$上面提到的I),构建计划将被相应地克隆,但主要问题是整个构建计划仍将在默认存储库的默认分支上运行,而您通常不希望这样做。
  • 仍然,在“分支”选项卡中,您可以读到“ 计划分支允许您使用相同的计划配置在源存储库中的不同分支上运行构建。 ”。请注意粗体:分支策略适用于整个存储库中的分支,不仅适用于从您在“存储库”条目中定义的默认分支创建的分支,而且适用于存储库中的任何分支。
  • 这就是转折点:因此,您可以定义一个与master和平行的新分支,develop我们称之为它bamboo-management-branch,甚至可以通过Bitbucket阻止其删除或更改,然后将该分支用作初始计划配置中默认存储库条目的默认分支。而已。现在,您有了一个团队中没有人使用的分支,一个永远不会运行的构建计划,但是将根据您的分支策略在存储库中的动态分支上进行克隆。

上面建议的使用“ Git”而不是“ Bitbucket / Stash”存储库的选项也很完美,因为那里的“ branch”选项不是必需的,是一个开放的文本字段(而不是下拉列表),因此您可以在此处输入不存在的分支名称作为解决方法(请注意:如果您将其保留为空,则master根据官方文档,默认情况下它将指向。

这是您需要为“ Bitbucket / Stash”存储库条目中的现有分支提供的强制分支名称: 在此处输入图片说明

如您所见,我创建了一个虚拟ci-branch角色以使其高兴,它不会被开发团队使用,它是gitflow分支之上的另一个分支,但仅用于CI管理。

然后,可以照常应用分支策略: 在此处输入图片说明

再次说明一下,它是默认存储库的重要部分,而不是默认分支。分支不仅可以从默认分支创建,还可以在该存储库中的任何位置创建。只要正则表达式满意,就将克隆构建。

最后,这是使用纯“ Git”存储库条目而不是“ Bitbucket / Stash”的附加选项: 在此处输入图片说明

如您所见,这里的分支条目是可选的,也符合我们的需求,尽管那样您可能会错过一些不错的Bamboo-Bitbucket自动集成功能(这就是为什么,尽管这种方法很干净,但在bitbucket条目中创建一个虚拟分支听起来仍然很合理)。