将工作目录移动到另一个驱动器并设置最大大小

4
4个回答

5
它可以更改工作目录到另一个驱动器。
对于新的构建代理,当您运行.\config.cmd命令时,有一步叫做: 输入工作文件夹(按回车键为_work): 您可以在这里更改路径。
默认的工作文件夹位置是代理安装目录下的_work文件夹。您可以将位置更改为代理安装目录之外的位置,例如:D:_work
对于现有的构建代理,您可以删除并重新配置代理。删除旧的工作文件夹不会破坏代理。
您可以参考此博客作为教程(适用于TFS但类似于VSTS)。

如何强制 VSTS 代理回收空间或将代理限制为 X gb?

对于本地代理,您无法执行此操作。代理功能中没有这样的设置。

如果您需要此功能,托管代理提供 10 GB 的空间。

如果您担心磁盘空间:

  1. 通过将 Build.Clean 变量设置为 all,可以在拉取源代码之前清除目录。
  2. 使用 "Delete Files" 实用程序任务。 $(Agent.BuildDirectory)$(Build.SourcesDirectory) 变量对此很有用。它将在成功构建后删除文件。

有关更多信息,请参阅:每次构建后清除工作文件夹?


可以安全地删除工作目录吗?我想将工作目录放在Azure上的临时SSD驱动器上。 - 4c74356b41
好的,我想你误解了我的意思。我的问题是,如果在虚拟机重新启动后目录消失了会发生什么。代理程序会出现问题吗? - 4c74356b41
@4c74356b41 对于误解我感到抱歉。这不会影响代理程序。只是在本地进行了简单的测试,当构建代理未运行时,在构建代理上删除整个 _work 文件夹,触发新的构建,TFS将自动在此情况下创建一个新的 _work 文件夹,并且构建成功运行。这应该与您在 Azure 上的 SSD 驱动器类似。代理程序不会出现异常。您可以在您的环境中进行测试和双重确认。 - PatrickLu-MSFT

3

更改的简单方法是进入代理文件夹,显示所有隐藏文件。您会发现一个JSON文件“ .agent”,打开它,在“workFolder”中指定所需目录的路径。

请勿忘记使用双斜杠\进行转义,此操作前必须停止代理。


1
当您安装代理时,它会要求您选择工作目录。默认目录为代理安装文件夹下的_work文件夹,但您可以在设置时更改。
您无法限制代理使用X空间,但是您可以添加一个构建/发布任务来使用PowerShell检查可用空间,并在可用空间低于Y时终止进程。 更新 此任务可以成为您的第一个构建/发布任务,因此如果可用空间不足,则无需进行后续步骤。

你可能需要运行 tf workspace /delete 命令来删除服务器上的任何 TFVC 工作区映射。在代理程序关闭后,您可以安全地清除现有文件夹。 - jessehouwing
我在谈论的是VSTS,而不是TFS @jessehouwing - 4c74356b41
在VSTS中,您也可以拥有TFVC存储库。这不是TFS vs VSTS的问题。如果您只使用Git存储库,则可以简单地清除工作文件夹。但是,您接下来的几个构建可能会变慢,因为代理将需要再次从头获取存储库。 - jessehouwing
啊,我明白你的意思了。我不在乎那个,我只关心它是否会破坏代理@jessehouwing。 - 4c74356b41
是的,完全删除您的工作文件夹是安全的。代理将在第一次运行时创建它。 - Rodrigo Werlang
它可能会破坏代理,我以前遇到过无法重新创建工作区的问题。 - jessehouwing

0

你也可以使用连接符链接,例如在CMD中运行以下命令(将文件夹替换为您的实际位置):

mklink /J "C:\agent\_work" "D:\agent\_work"

现在,_work文件夹实际上将位于D:驱动器上,但代理程序将认为它是C:上的一个真实文件夹。 我亲自测试过,运行良好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接