如何针对具有多个触发器的多个存储库运行相同的作业?

时间:2017-06-20 20:34:30

标签: bamboo

因此,我正在积极尝试规避竹子的工作限制,因为我有许多非活动的存储库,当新的平台更新出来或添加一次性新功能时偶尔会被修复。

我想要发生的事情是我的存储库轮询要知道我的某个存储库分支机构已经发生了变化,运行了这个工作,并且我们已经回到了square 1我再次收听来自另一个更改的另一个存储库轮询更新。

示例:

  • 回购1推送提交
  • Bamboo"听到"改变并开始工作
  • 回购2推送了提交
  • Bamboo也会听到此更改,但由于有1个代理可用,因此不会继续,此更改将排队等待
  • Repo 1触发更新完成并发布可共享的工件
  • Bamboo解决并启动了Repo 2的工作

甚至可以做这样的事情吗?我到目前为止找到的最好的解决方案(meh)就是创建一个带有顺序构建的作业,它基本上是checkout / build / checkout / build / checkout / build但是这会导致不得不如果我只从一个存储库中轮询一个更新,则运行许多不必要的步骤。这些事情并不经常发生变化。

1 个答案:

答案 0 :(得分:2)

您可以在构建计划中添加多个存储库,并在存储库中轮询触发器,将所有存储库中的复选框添加到计划中。

要添加多个存储库,

  1. 开放式配置编辑
  2. 选择第三个标签“存储库”
  3. 按“添加存储库”按钮。
  4. 配置您的存储库并保存。
  5. 选择第四个标签“触发器”。
  6. 打开存储库轮询触发器,然后选择您在步骤3-4中添加的所有存储库。
  7. 保存触发器。
  8. 然后,存储库轮询必须检查所有已配置的存储库,根据文档:

    https://confluence.atlassian.com/display/BAMBOO058/Triggering+builds

    您还可以在源代码检出任务中添加其他存储库,并检出不同子目录中的每个存储库。 例如。对于回购R1R2R3,您将拥有工作副本目录./W1./W2./W3

    然后由您决定 - 要么将汇编程序任务T克隆到T1T2T3以相应地从每个工作副本进行构建,那么它将在每次提交时为所有作业完成,它们都将生成具有相同内部版本号的工件,或者您可以添加一个shell脚本任务并编写一个shell脚本来发现所有工作副本中的最新提交(假设它是{{ 1}}),创建指向./W2的工作副本子目录的符号链接,组装构建的作业将从./MySymbolicLink文件夹中创建。