我面临以下问题。我们有一个门控签入设置,这意味着更改不会直接签入,而是创建一个搁置集,并针对该搁置运行构建。仅当生成成功时,才会签入更改。
现在,我们将构建定义设置为仅映射构建所需的尽可能少的内容,因为我们希望将其运行所需的时间保持在最短。现在的问题是,如果在更改中包含任何未映射的内容,则生成将在GetSources任务中失败,因为它无法取消搁置并给出文件夹映射错误。
为了更好地理解,请想象以下结构:
- MyRepository
-- 源
--- MyCodeFiles
-- 文档 --- 某些文档
因此,在 BuildDefinition 中,我们只映射Sources目录,因为它包含我们需要构建的文件。现在必须确保永远不要在源之外(例如在文档中)包含任何更改,否则生成将立即失败。
我已经搜索并找到了解架命令的描述:https://learn.microsoft.com/en-us/vsts/tfvc/unshelve-command?view=vsts
根据此描述,应该可以指定itemSpec
Identifies the file or folder revisions to unshelve into the current workspace
因此,看起来 unshelve 命令实际上支持"部分"取消搁置。但是,我没有看到如何使用vNext构建实现这一目标的任何方法,因为我找不到有关GetSources任务如何工作的任何信息。
我错过了什么,还是当前的实现根本无法实现?
我不敢说你没有错过任何东西,这在当前的实现中是不可能的。这里有更详细的讨论:
https://github.com/Microsoft/vsts-agent/issues/1087