Bamboo 3.1.1 手动依赖管理/依赖阻止功能无法按预期工作?

发布于 2024-11-25 11:03:48 字数 1011 浏览 2 评论 0原文

我们使用 Bamboo 作为 CI 环境,并有多个构建依赖项(使用手动依赖项管理和依赖项阻止功能)。我们使用 SVN 轮询作为我们的构建策略,所有项目都具有相同的轮询频率。

假设我们有以下构建计划结构:

  • 项目 A 的父构建计划 PA,
  • 项目 B 的子构建计划 CB 依赖于 PA,并选择“如果父计划有未构建的更改则阻止构建”作为依赖阻止策略

我们的目标是设置一个依赖树,以便:

  • 如果项目 B 应该构建,首先检查 A 是否有更改,如果有,则首先构建 PA 并阻止 CB,一旦 PA 完成就恢复 CB
  • 对于手动和自动构建都执行此操作(由于以下原因触发了构建SVN 轮询)

上面描述的目标似乎正是依赖项阻止功能(请参阅 http://confluence.atlassian.com/display/BAMBOO/Setting+up+Build+Dependencies)就是这样。但是,我要么配置错误,要么没有正确理解此功能。

为了测试,我构造了以下情况:

  • 在 A 中创建一个类 DummyClassA
  • 在 B 中创建一个类 DummyClassB,该类引用 DummyClassA,以便首先构建项目 A 供项目 B 进行编译 *手动调用CB

我本来期望通过上述配置,CB意识到父项目发生了变化,因此需要阻止CB,构建PA并恢复CB。 然而,发生的情况是,尝试构建 CB 并明显失败(编译错误),因为项目 B 尚不知道 DummyClassA。似乎没有对 SVN 进行主动检查手动触发CB时的父项目A,这是正确的吗?

我在这里缺少什么?我非常确定必须有一个简单的解决方案,因为这种情况几乎出现在每个严肃的软件项目中,所以我希望 Bamboo 能够立即正确地处理这个问题。 有人能解释一下吗?

最好的, 克里斯

We're using Bamboo as our CI environment and have several build dependencies in place (using manual dependency management & the dependency blocking feature). We're using SVN polling as our build strategy with all projects having the same polling frequency.

Assume we have the following build plan structure:

  • a parent build plan PA for project A,
  • a child build plan CB for project B being dependent on PA, having selected 'Block build if parent Plans have unbuilt changes' as the dependency blocking strategy

Our goal is to setup a dependency tree so that:

  • if project B should get built, first check if A has changes and if so, build PA first and block CB, resume CB as soon as PA has finished
  • do this for manual as well as automatic builds (builds triggered as a result of the SVN polling)

The described goal above seems to be exactly what the dependency blocking feature (see http://confluence.atlassian.com/display/BAMBOO/Setting+up+Build+Dependencies) is all about. However, I either have a configuration error or don't correctly understand this feature.

To test, I've constructed the following case:

  • create a class DummyClassA in A
  • create a class DummyClassB in B which references DummyClassA so that project A has first to be built for project B to compile
    *manually invoke CB

I would have expected that through the configuration mentioned above, CB realizes that the parent project has changes and thus needs to block CB, build PA and resume CB.
However, what happened was that CB was attempted to be built and obviously failed (compile error) as DummyClassA was not yet known to project B. It seems as if there is no active checking of the SVN for the parent project A when CB is manually triggered, is that correct?

What am I missing here? I'm pretty sure that there must be a simple solution as this scenario comes up in virtually every serious software project so I expect Bamboo to handle this out of the box correctly.
Can anyone shed some light on this?

Best,
Chris

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文