【问题标题】:TFS - Continuous integration with branchingTFS - 与分支的持续集成
【发布时间】:2017-06-30 21:48:51
【问题描述】:

这是我的场景(TFS Online - username.visualstudio.com/repo):

我有以下文件夹结构

--$
  --TimeManagement  (.sln file at this level)
    --WebApp  (Main branch) (.csproj at this level)
    --WebApp-Dev (Dev Branch) (.csproj at this level)
    --WebApp-QA (QA Branch) (.csproj at this level)
    --TestTimeManagement (Test Project) 

有了这个,我使用默认设置创建了一个构建,我的发布选项将成功构建推送到 azure 网站。在我遇到以下情况之前,这非常有效:

  • 我需要为主分支和开发分支配置相同/唯一的测试项目
  • 我需要更改特定的分支构建,所以我希望构建应该考虑分支的.csproj 而不是.sln 文件。
  • 我可以在每个构建的触发选项卡下进行更改 - 连续构建 - 添加带有分支特定文件夹的过滤器
  • 在这种情况下,我的 dev 分支更改将主要执行构建相关并执行测试,当我最终将我的更改合并到 ma​​in 分支时,与其相关的构建将执行使用相同的测试用例。
  • 我试图解决这个问题,但是,构建与 .csproj 解决方案选项混淆了。它无法找到测试程序集 - **\*test*.dll

简而言之,我正在寻找设置 TFS(目前在线),其中将有多个分支(dev、main、staging、qa)和单个测试项目,并配置构建、特定分支更改的触发器。

疑问:我们可以在.csproj 级别创建分支还是只需要在.sln 级别进行分支?

如果我能得到任何参考文档/视频,那就太好了!

【问题讨论】:

  • 为什么不能只在解决方案级别进行分支?
  • 这可以随时完成并且可行。我想知道我正在尝试的场景是可行的还是完全开箱即用的。避免跨解决方案重复代码/项目。
  • 始终在解决方案级别进行分支。你的建议几乎总是一个坏主意。
  • @Fran,MrHinsh,是的,我明白这一点,但试图了解可行性。
  • 以及分支之间的 nuget 包更改。如果您要签入包,这些将保留在解决方案级别。每个分支可能不同。

标签: c# visual-studio tfs


【解决方案1】:

疑问:我们可以在 .csproj 级别创建分支还是只需要在 .sln 级别进行分支?

您可以在任何级别进行分支:解决方案级别、项目级别、文件夹级别和文件级别。

我有一个设置,我们有多个解决方案,并且有多个项目由一个解决方案使用或由多个共享。如果它们由多个解决方案共享,并且您在处理一个解决方案时对项目进行了更改,那么您可能会破坏其他解决方案。因此,对于这种情况,我有一个 master 解决方案,它有一个 CI 构建,可以构建所有项目以确保没有任何问题。

请记住,当您有许多分支时,合并会变得更加复杂。我建议你从一个简单的 2 分支策略开始:Dev 和 Main 分支。如果这对您不起作用,请创建更多分支。每天的开发都可以在 Dev 分支上进行,准备好后可以中断并转到 Main 分支。但在合并到 Main 之前,请确保从 Main 分支向上合并到 Dev,然后从 Dev 向下合并到 Main:始终将此作为一种好习惯。

环境(Dev、QA、Prod)和分支之间存在差异。关系不必是 1:1。所以你可以有 2 个分支(Dev、Main)并且仍然有许多不同的环境。

【讨论】:

  • @CondingYoshi,我同意你的观点。只是一个问题,因为您也有跨多个解决方案共享的相同项目实施。这种依赖关系 - 引用添加是通过 TFS 中的 MSBuild 完成的吗?我正在尝试在构建中添加多个项目,但是这在本地机器上工作正常,可以轻松添加和查找引用,但是在 TFS MSBuild 级别上,无法找到引用,有什么建议吗?
  • 在 VSTS(TFS 的门户网站)中,您需要确保在 Repository 选项卡中,在服务器路径中您没有仅指定您正在构建的项目。您必须指定一个位置,因此当从该位置下载文件时,所有依赖项也会被下载。
  • 我认为,我需要更多地研究这些选项。
  • 对待存储库选项卡的方式与在开发机器上获取东西时一样(获取最新版本)。这是相同的想法。实际上它是完全相同的,因为构建服务器将获取最新的然后尝试构建它。像开发者一样。
  • 最后但并非最不重要的一点是,有没有办法可以限制签入以在 Visual Studio 级别成功执行单元测试/测试用例?
猜你喜欢
  • 2023-03-08
  • 1970-01-01
  • 2014-08-14
  • 2012-10-21
  • 2014-04-24
  • 2015-01-19
  • 2013-02-04
  • 2017-04-15
  • 2010-11-27
相关资源
最近更新 更多