【问题标题】:TFSBuild:How to trigger a build only when a particular file is checked in?TFSBuild:如何仅在签入特定文件时触发构建?
【发布时间】:2010-11-22 23:25:28
【问题描述】:

我们有一个特定的文件,比如 X.zip,它只能由 1 或 2 人修改。因此,我们不希望在每次签入时触发构建,因为其他文件大多未触及。

我需要在构建之前检查一个条件,签入的项目是否是“X.zip”。如果是,则触发构建,否则不要。我们只使用 CI 构建。

关于如何仅在签入此特定文件时触发构建的任何想法?任何其他方法将不胜感激,因为我是 TFS 的新手......

塔拉。

【问题讨论】:

    标签: msbuild build-automation conditional tfsbuild checkin


    【解决方案1】:

    我不知道任何 OOTB 功能可以做到这一点,您需要做的是编写您自己的自定义 MSBuild 任务,该任务在构建运行之前执行(预构建操作)。

    然后,该任务将需要使用 TFS API 来检查当前签入的文件,如果未找到,则必须将任务设置为失败。

    这并不理想,因为它会向 Team Build 指示构建失败,这取决于您是否使用签入策略,这可能无济于事。也更难一目了然地确定哪些构建因任务而失败,哪些构建因实际问题而失败。

    您可以将构建更改为不那么频繁地进行而不是每次签入,这将减少构建服务器上的负载。

    否则您可能想深入研究 Cruise Control .NET,它可能支持更好的条件构建。

    【讨论】:

    • 感谢您的回复..是的,您是对的.. 是的,我们可以确保构建不会在每次签入时运行,这正是我想要的.. 只是我不知道如何访问签入的文件和/或其路径并在预构建事件中有条件地使用它.. 是否可以在“SolutionsToBuild”属性或构建脚本中的类似内容中提及此条件?
    【解决方案2】:

    如果您可以将 X.zip 移动到它自己的文件夹中,那么您可以使用仅查看包含 X.zip 的文件夹的工作区来设置 CI 构建。

    然后您需要添加对 tf get 的显式调用以下载其余代码,因为 Team Build 仅下载工作区正在查看的内容。

    但这可能比自定义任务方法更简单?

    【讨论】:

      猜你喜欢
      • 2011-07-11
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 2015-02-07
      • 1970-01-01
      • 2022-10-13
      相关资源
      最近更新 更多