TFS多个构建定义之间具有共享资源

Kri*_*ner 1 msbuild tfs continuous-integration build-definition build-dependencies

我正在尝试计划TFS服务器的构建定义,并且我遇到了一个问题/问题,我希望在继续之前澄清一下.

这是我们项目设置的简化版本,对不起我在这台机器上没有UML工具的粗糙:)

解决方案示例

我想要完成的是正确的构建定义,以便:

  1. 如果解决方案1具有签入,则构建解决方案1及其依赖项目依赖项目.
  2. 如果解决方案2具有签入,则构建解决方案2及其依赖项目依赖项目.
  3. 如果Dependency Project有签入,则构建解决方案1和解决方案2(使用Dependency项目)
  4. 如果完成单个签入,触及所有3个项目(作为示例),仅构建解决方案1和2 一次

我可能会使用gated check-ins来防止在构建中断时提交源代码控制.

已经有一段时间了,但我相信当时我有3个构建定义:

  • Monitor Solution 1文件夹 - 构建解决方案1
  • Monitor Solution 2文件夹 - 构建解决方案2
  • Monitor Dependency Solution文件夹 - 构建解决方案1和解决方案2

这在大多数情况下都有效,但如果在解决方案1和依赖解决方案IIRC上发生单一登记,则解决方案1将构建两次.

虽然这是一个不便,我不具备的数字出来,这将是很好知道如何做这正确的方法.

MrH*_*ood 5

@Kritner我建议您从依赖项的输出创建一个NuGet包,并将其发布到内部NuGet存储库.解决方案1和解决方案2应该依赖于NuGet包.

这是在签入新源时触发的一个构建拘留.

此时,如果您要使用新版本的依赖项,则在尝试构建任一解决方案时都会收到通知.视觉工作室中的开发人员将能够选择枯萎,这是正确的时间.

我建议你停下来让开发人员在升级时选择.但是你可以走得更远.

如果您使用类似MyGet的东西来托管您的依赖项,您可以让它为构建创建一个触发器.您可以使用VSO和Service Hook执行此操作,或者您可以编写一些监视新包的内容,然后触发其他版本.如果只有在成功构建和测试时才发布包,则可以提高依赖项的质量.