【问题标题】:When my TFS build is triggered by a branch-specific check-in, why doesn't it set that branch as its source?当我的 TFS 构建由特定于分支的签入触发时,为什么不将该分支设置为其源?
【发布时间】:2019-05-25 20:04:31
【问题描述】:

我的目标是创建一个 TFS CI 构建,该构建由在 TFVC 中托管的项目的两个特定分支上的签入触发。当我手动对构建进行排队并在队列提示的“Shelveset 名称”字段中键入特定分支时,构建按预期工作。但是,当我从一个特定分支签入更改时,构建会尝试使用两个分支的父文件夹作为其默认源,从而导致整个构建定义中的文件路径不正确,无论我使用 $(Build.SourceBranchName) 变量。

我的文件夹结构如下:

- $/MyRepo
|
| -Integration Suite
  |
  | -CurrentVersion
  |
  | -Dev

我使用路径过滤器打开 CI 触发器以包括 $/MyRepo/Integration Suite/CurrentVersion$/MyRepo/Integration Suite/Dev

在“获取源”任务中,我的存储库设置为$/MyRepo,我将这些服务器路径分别映射到CurrentVersionDev 本地路径。

例如,我希望签入CurrentVersion 分支下的更改会将构建源设置为$/MyRepo/Integration Suite/CurrentVersion,但它却设置为$/MyRepo/Integration Suite。这意味着我在定义中使用$(Build.SourceBranchName) 构建的任何路径都有Integration Suite,而它们应该有CurrentVersion

我做错了吗?还是不支持我想要的行为?

【问题讨论】:

    标签: tfs tfsbuild tfvc


    【解决方案1】:

    TFVC 依靠工作区映射来知道要下载什么。工作区映射可以包含跨不同团队项目的多个 TFVC 存储库,单个存储库中的多个分支,基本上,无论您的心愿。因此,它无法理解如何动态更改工作区映射以用于特定分支。

    TFVC 构建的可悲现实是每个分支都需要一个构建。这使得 TFVC...呃...对于许多常见的持续交付场景来说并不是很好。

    【讨论】:

    • 不幸的是,这也是我从我对这个问题的研究中看到的共识。由于我想要构建的分支是“静态的”,因此两个构建可能会在我的特定场景中工作,但我可以看到这是未来的一个主要问题。不过,感谢您的解释。
    猜你喜欢
    • 2019-07-28
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2020-03-18
    • 1970-01-01
    相关资源
    最近更新 更多