仅在项目更改时才从CI构建发布到Nuget

时间:2018-02-07 11:35:46

标签: git tfs nuget tfsbuild tfs2015

背景:TFS2015中的C#.NET和VC源代码控制。 CI使用TFSBuilds。内部Proget服务器,已经从其他TFSBuilds发布了Nuget包。

我希望将一系列框架项目转移到他们自己的Git仓库中。以下是其结构示例供参考。

Framework.sln
  IO.proj
  Logging.proj
  Other.proj

我的困惑来自于如何设计CI构建(s?),以便只有那些已经更改的项目才会发布新的包。目前我有一个构建Framework.sln的CI构建,然后打包并将其中的所有输出发布到Proget,使用BuildNumber增加包版本。

显然这是一个问题,因为对Logging.proj的单一更改将启动CI构建,我最终会发布每个包的新版本,即使只有一个更改为1.在我们切换到TFSBuild之前我们让MSBuild运行bitdiffer来比较差异并自动增加版本号。

我想知道的是,每个项目都必须有一个CI构建,TFS可以使用其他东西处理这种情况,或者我错过了一些非常明显的东西。

注意:我已经将分支策略排除在所有这些之外,因为我认为这不重要,无论分支机构如何管理这个问题仍然会发生,但如果我错了,请告诉我。

2 个答案:

答案 0 :(得分:1)

您可以将VSTS / TFS构建设置为仅在特定路径或文件夹中发生更改时发生,因此在您的情况下,最终可能会构建每个单独项目的3个构建

答案 1 :(得分:1)

建议将TFS 2015升级到TFS 2017.1及更高版本。在新版本的TFS中,您可以在CI触发器中设置路径过滤器:

enter image description here