在 vNext Build 中仅获取部分 Shelveset

Getting only partial Shelveset in vNext Build

我面临以下问题。我们有门控签入设置,这意味着更改不会直接签入,但会创建一个 Shelveset 并针对该搁置构建 运行。只有构建成功,才会签入更改。

现在我们将构建定义设置为仅映射构建所需的少量内容,因为我们希望将 运行 所需的时间保持在最短的水平。现在的问题是,如果您在更改中包含任何未映射的内容,构建将在 GetSources 任务中失败,因为它无法取消搁置并给出文件夹映射错误。

为了更好地理解,想象一下以下结构:
- 我的存储库
-- 来源
--- 我的代码文件
-- 文档
--- 一些文档

所以在 BuildDefinition 中我们只映射 Sources 目录,因为它包含我们需要构建的文件。您现在必须确保从不 包含 Sources 之外的任何更改,例如 Documents,否则构建将立即失败。

我已经搜索并找到了取消搁置命令的描述:https://docs.microsoft.com/en-us/vsts/tfvc/unshelve-command?view=vsts

根据此描述,应该可以指定 itemSpec

Identifies the file or folder revisions to unshelve into the current workspace

所以看起来 unshelve 命令实际上支持 "partially" unshelve。但是我没有看到任何关于如何通过 vNext 构建实现这一点的方法,因为我找不到任何关于 GetSources 任务如何工作的信息。

有什么我遗漏的吗?或者这是目前的实现根本不可能实现的?

恐怕你没有遗漏任何东西,只是在当前的实现中是不可能的。这里有更详细的讨论:

https://github.com/Microsoft/vsts-agent/issues/1087