【问题标题】:Publishing from CI build to Nuget only if changes in project仅在项目发生更改时从 CI 构建发布到 Nuget
【发布时间】:2018-07-17 16:27:26
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • 如果这更适合 Stack Exchange 中的其他区域之一,请随意移动它。对于 SO 问题来说似乎有点过于模糊/笼统,但无法弄清楚它还能去哪里。
  • 接受第一个答案只是为了结束问题。我认为鉴于要求和限制,我所要求的内容是不可能的。会关闭/删除问题,但不知道怎么做,所以如果管理员想来,请随意。

标签: git tfs nuget tfsbuild tfs-2015


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这是否相当于 TFS2015 中带有 TFVC 的 CI 触发过滤器?
    • 是的,它们都是路径过滤器。
    • 不幸的是不适合我的场景 Cece,因为这需要我为每个项目触发单独的 CI 构建,这是我希望避免的(在最初的问题中提到,但我本来可以更清楚关于它)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 2017-10-27
    • 1970-01-01
    相关资源
    最近更新 更多