这是尝试跨分支机构实施条件构建,默认情况下不可能,因为BAM-11257,自2012年开始,仍然未决。
上下文:
develop
分支上有第三种不同的行为实施(不工作)方法:
(?=(feature.*|bugfix.*)).*$
)。然后它提供了所需的行为它的阶段和工作(?=(hotfix.*|release.*)).*$
),然后分阶段执行自己的行为develop
。这很好用,每个分支都有自己的构建计划,基于所需的行为。但是,当将任何分支合并到develop
时,三个构建计划并行启动,因为它们中的三个在其“存储库”中具有develop
作为原始分支条目。
问题:如何避免这种副作用?我们如何才能为某些分支类型指定构建计划,而不是为原始分支指定(在这种情况下为develop
)?
我理解Bamboo需要根据某种策略(正则表达式)克隆其分支的新构建计划的起源,但是我们如何阻止它来运行原始分支的构建计划呢?或者,我们是否可以独立定义分支类型的构建计划而不是其来源并基于动态名称(例如feature-something
,feature-bob
)?
(在最后一点:在“Repository”中我们可以指定一个分支作为原点,但这是一个静态值,我们不能在那里放一个正则表达式,这可以解决整个问题,我想)
答案 0 :(得分:3)
可以在Bamboo中为分支“ types ”定义构建计划,并且默认情况下不链接到其他分支。因此,Bamboo计划配置仅适用于动态分支,没有默认分支可以运行。
主要的误解来自以下几点:
develop
)定义构建计划,而实际上您希望将其用于动态分支(例如,尚未创建的功能分支)。(?=(feature.*|bugfix.*)).*$
),构建计划将相应地克隆,但主要问题是整个构建计划仍将在默认存储库的默认分支上运行,这是您经常不想要的。master
和develop
平行,让我们称之为bamboo-management-branch
,你甚至可以阻止它通过Bitbucket删除或更改,然后使用此分支作为初始计划配置中的默认存储库条目的默认分支。而已。现在,您有一个没有人会在团队中使用的分支,一个永远不会运行的构建计划,但将根据您在存储库中的动态分支上的分支策略进行克隆 选项建议above,使用“Git”而不是“Bitbucket / Stash”存储库也是完美的,因为“分支”选项不是强制性的,是一个开放文本字段(而不是一个下拉列表),因此您可以在那里键入一个非现有的分支名称作为解决方法(注意:如果您将其保留为空,默认情况下它将指向master
,按official documentation。
以下是您需要为“Bitbucket / Stash”存储库条目中的现有分支提供的强制分支名称:
正如您所看到的,我创建了一个虚拟ci-branch
以使其满意,它将不会被开发团队使用,它是gitflow分支之上的附加分支,但它仅为CI管理提供服务。
再次,澄清它是默认存储库的重要部分,而不是默认分支。可以在该存储库中的任何位置创建分支,而不仅仅是从默认分支创建分支。只要正则表达式很高兴,就会克隆构建。
最后,这是使用纯“Git”存储库条目而不是“Bitbucket / Stash”的附加选项:
正如你所看到的,这里的分支条目是可选的,它也适合我们的需要,虽然你可能会错过一些不错的自动Bamboo-Bitbucket集成(这就是为什么,虽然这种方法很干净,但是在bitbucket条目中是一个虚拟分支听起来仍然合理。)
答案 1 :(得分:1)
我一直面临着类似的问题。我找到的唯一解决方法是停止使用"链接的存储库"。不知道你是否熟悉这个,但你可以使用一个"链接的存储库"可用于所有构建计划,或者您可以专门为您的计划创建一个。 为了解决我的问题,我不得不添加一个类型为" Git"的存储库。 (即使我们使用GitHub)。这让我离开了"分支"字段为空,从而解决了我的问题。
修改的 事实上,我必须指定一个错误的"此字段中的分支名称可使其正常工作...
希望这会有所帮助。 西蒙
答案 2 :(得分:0)
如果包含字符串“develop”,前两个构建计划中的正则表达式是否可以更改为不执行?
类似于这种消极的前瞻:^((?!develop).)*$