TFS 2013 使用动态解决方案计数构建定义

Posted

技术标签:

【中文标题】TFS 2013 使用动态解决方案计数构建定义【英文标题】:TFS 2013 Build definition with dynamic solution count 【发布时间】:2016-01-11 22:13:06 【问题描述】:

我正在尝试在 TFS 2013 中设置构建定义,该定义是通过 CI 监视分支文件夹触发的。它需要确定哪些分支涉及哪些触发的签入,然后编译每个分支并放置在放置文件夹中。

用户故事分支文件夹

US1(分支) US2(分支) US3(分支)

CI 观察 UserStoryBranchesFolder 并由 US1、US2 或 US3 上的签入触发(这是有效的)。

现在它需要确定哪个分支与签入相关联,TFS 支持签入中的多个分支,因此这可能是 1,2 或 3 个受影响的分支。 (不工作)

什么没用:

TFS 2013 使用新的工作流 XAML,所以我认为不支持 标签,也许他们支持,但我不知道如何。

通配符配置,尝试 SourceSettings -> SourceControlFolder = UserStoryBranches/*/mySolution.sln

随着 USBranches 被动态创建,我尝试在 UserStoryBranchesFolder 中添加一个 DummySolution.sln 并指向 SourceControlFolder,它匹配并正常工作,但我不知道如何使构建过程模板通过目录搜索,使决策,然后构建。

如果我可以获得编程访问权限: 所有分支的最近修改时间是什么,构建所有分支,以此为时间戳

最终目标(对替代解决方案开放): 我想在每个 sprint 开始时削减用户故事分支,并将它们作为每个分支 1 个应用程序部署到单个 IIS 站点,而不更改 TFS 或 RM(发布管理)中的任何内容。一旦构建位于放置文件夹中,我就很好,如果有另一种方法可以实现这一点,我会非常开放。

【问题讨论】:

【参考方案1】:

我从来没有使用过用户故事,所以请原谅我缺乏知识。但是,您是否能够通过发布来构建用户故事?如果是这样,则发布会创建发布配置文件。签入后,构建定义可以将其用作构建过程的指南。 您还可以使用 csproj 而不仅仅是 sln 作为构建项目。您可以创建一个包含所有用户故事的头部解决方案并构建它吗?

我不明白你到底在做什么,那个标签在哪里(我面前没有电脑)请张贴一些截图

【讨论】:

我正在尝试的需要多个 .sln,而不是 csproj。因此,一个变更集进入并与一个分支相关联,该分支内部将有一个 .sln,我需要构建那个特定的 .sln。所以 ci 监视 /branches 并且 /branches 内可能有 3 个分支,每个分支都有一个独立版本的 mySolution.sln 。所以导航是 /branches/us1/mySolution.sln 与 /branches/us2/mySolution.sln,当变更集进来时,它将用于 us1 或 us2 或两者。我需要 tfs 将 * 替换为 /branches/*/mySolution.sln 中的分支名称【参考方案2】:

保持简单, 1.您希望将用户故事合并到 iis 中的一个网站吗? 2.最新版本是您要部署的版本吗? 3.你为什么关心变更集?在 CI 中,每次签入都会触发具有最新版本的构建。

【讨论】:

分支是动态创建的,因此 ci 正在监视一个包含多个分支的文件夹,而不是每个分支一个 ci。除非有办法在创建分支时克隆构建模板(无需手动配置)?如果有 10 个分支并且有一个变更集影响了其中的两个,则编译这两个解决方案。 我不会为我们每个人创建一个分支,而是在一个分支中为每个人创建一个文件夹,并使 tfs 监听该父分支并在 checkin 时构建它。可以使用发布配置文件的网络部署功能在构建时创建 iis 网站。

以上是关于TFS 2013 使用动态解决方案计数构建定义的主要内容,如果未能解决你的问题,请参考以下文章

如何从 TFS 获取构建定义?

如何配置 tfs build 以在发布构建完成时复制 dll

使用 TFS 2017 BuildAgent 构建解决方案时出现错误 CS0234

CI CD TFS 2013 - TFS 服务器构建上的 Nuget 自动恢复

如何从 TFS 构建定义输出 Windows 服务项目

如何在 tfs 2012 中配置我的输出构建