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

时间:2014-07-18 11:55:48

标签: tfs msbuild continuous-integration build-definition build-dependencies

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

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

Solution Example

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

  1. 如果解决方案1有签入,则构建解决方案1及其依赖项目依赖项目。
  2. 如果解决方案2有签入,则构建解决方案2及其依赖项目依赖项目。
  3. 如果Dependency Project有签到,则构建解决方案1和解决方案2(使用Dependency项目)
  4. 如果完成单个签到,触及所有3个项目(作为示例),则只构建解决方案1和2 一次
  5. 我可能会使用gated check-ins来防止在构建中断时提交源代码控制。

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

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

    大部分工作 ,但如果在解决方案1和依赖关系解决方案IIRC上发生单一签入,则解决方案1将构建两次。

    虽然这是一个不便之处,但我并没有 来弄清楚它,所以知道如何以正确的方式做到这一点会很好。

1 个答案:

答案 0 :(得分:5)

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

这是在签入新来源时触发的一次构建拘留。

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

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

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