在vNext Build中只获取部分Shelveset

时间:2018-05-17 15:47:23

标签: tfs azure-devops azure-pipelines gated-checkin

我面临以下问题。我们有一个Gated Check-In设置,这意味着不会直接签入更改,但会创建Shelveset并针对该Shelve运行构建。仅在构建成功时,才会签入更改。

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

为了更好地理解,请想象以下结构:
  - MyRepository
  - 来源
 --- MyCodeFiles
  - 文件
 --- SomeDocuments

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

我已经搜索过并找到了unhelve命令的说明: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

所以它看起来像unhelve命令实际上会支持“部分”取消搁置。但是我没有看到如何通过vNext构建实现这一点,因为我找不到关于 GetSources 任务如何工作的任何信息。

我是否遗漏了某些东西,或者目前的实施方式是否无法实现?

1 个答案:

答案 0 :(得分:1)

我不敢说你没有错过任何东西,这在目前的实施中是不可能的。这里有一个更详细的讨论:

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