【发布时间】:2020-11-23 07:07:23
【问题描述】:
我们正在使用“Azure DevOps Server”2019 Update1 运行 TVFC。
在我们的 vnext 构建结束时,我们想要删除工作区。 我们使用 tf.exe 执行此操作。但是我们必须指定工作区所有者,因为运行构建的帐户(即在构建代理上为构建服务配置的帐户)与用于创建工作区的帐户不同。
工作区所有者是“项目集合构建服务(DefaultCollection)”。 因此,作为删除我们使用的工作区的命令,例如:
tf.exe workspace /delete /noprompt /collection:http://tfs.siplaceworld.net:8080/tfs/DefaultCollection/ ws_1749_167;Project Collection Build Service (DefaultCollection)
这在大多数情况下都有效。我们偶尔会收到一条错误消息:
TF14061: The workspace ws_1749_167;Project Collection Build Service (DefaultCollection) does not exist.
但是在查看构建计算机时工作区确实存在。因此,为了调试目的,在我们尝试删除之前,我添加了对“tf.exe 工作区”的调用以获取所有工作区的列表。
在错误情况下,您会看到工作区所有者不是英文,而是德文:
tf.exe workspaces /collection:http://tfs.siplaceworld.net:8080/tfs/DefaultCollection/
Collection: http://tfs.siplaceworld.net:8080/tfs/DefaultCollection
Workspace Owner Computer Comment
----------- --------------------------------------------------- --------- -------
MCHC16074 ASM AS SW-Dev Build MCHC16074
ws_1678_167 Builddienst für Projektsammlung (DefaultCollection) MCHC16074
ws_1693_167 Builddienst für Projektsammlung (DefaultCollection) MCHC16074
ws_1695_167 Builddienst für Projektsammlung (DefaultCollection) MCHC16074
ws_1700_167 Builddienst für Projektsammlung (DefaultCollection) MCHC16074
ws_1719_167 Builddienst für Projektsammlung (DefaultCollection) MCHC16074
ws_1744_167 Builddienst für Projektsammlung (DefaultCollection) MCHC16074
ws_1747_167 Builddienst für Projektsammlung (DefaultCollection) MCHC16074
ws_1749_167 Builddienst für Projektsammlung (DefaultCollection) MCHC16074
ws_461_169 Builddienst für Projektsammlung (DefaultCollection) MCHC16074
ws_470_169 Builddienst für Projektsammlung (DefaultCollection) MCHC16074
这是零星的,我们不知道它取决于什么。工作区所有者怎么可能有时用德语列出,有时用英语列出?
任何帮助表示赞赏!
【问题讨论】:
-
你能使用
Build.QueuedBy和Build.Repository.Tfvc.Workspace变量吗? docs.microsoft.com/en-us/azure/devops/pipelines/build/… -
是的,我可以。我已经使用变量 $(Build.Repository.Tfvc.Workspace) 来确定工作区,但这并没有给我所有者。并且工作区所有者不是排队构建的人...
-
如果是CI/scheduled builds,则
Build.QueuedBy的值为系统标识,例如:[DefaultCollection]\Project Collection Service Accounts见页面底部docs.microsoft.com/en-us/azure/devops/pipelines/build/… -
在我们的 vnext 构建结束时,我们想要删除工作区。 为什么?构建引擎会为您处理工作区映射。
-
为什么?因为有数百个构建定义会将其工作区留在构建计算机上。这就是为什么我们要在构建完成后进行清理。构建引擎只提供在构建开始时清理工作区,而不是在结束时:(
标签: tfs build azure-devops tfvc vnext