仅当项目发生变化时才从 CI 构建发布到 Nuget

Publishing from CI build to Nuget only if changes in project

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

我希望将一组框架项目移到它们自己的 Git 存储库中。下面是它的结构示例以供参考。

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

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

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

我想知道的是我是否必须为每个项目构建一个 CI,TFS 能否使用其他东西处理这种情况,或者我是否遗漏了一些非常明显的东西。

注意:我已将分支策略排除在外,因为我认为这无关紧要,无论以何种方式管理分支,此问题仍会发生,但如果我错了请告诉我。

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

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