【问题标题】:How to change the agent build directory?如何更改代理构建目录?
【发布时间】:2025-11-26 14:15:01
【问题描述】:

我的 Azure DevOps 管道当前创建路径“C:\Agent-xyz_work\23\s...”,以保留将在子项目构建中使用的构建输出。有没有办法将构建文件夹设置为“C:”或“C:\w”等?我需要这个,因为我的第三方 Wix 工具集之一有一个自定义构建操作,当路径太长时会截断路径。为了保持简短,我想让路径尽可能短。

【问题讨论】:

    标签: azure-devops azure-pipelines azure-devops-server-2019 azure-devops-self-hosted-agent


    【解决方案1】:

    您可以更改预定义变量的值。

    对于经典发布管道:

    变量:

    任务:

    日志:

    预定义变量的列表可以找到here

    【讨论】:

      【解决方案2】:

      代理的工作目录是安装代理时配置的,运行时不能更改:

      代理设置
      --work <workDirectory> - 存储作业数据的工作目录。默认为代理目录根目录下的_work。工作目录归给定代理所有,不应在多个代理之间共享。

      我建议您暂停并reconfigure your agent 使用您选择的工作目录。

      【讨论】:

        【解决方案3】:

        预定义变量中所述的代理安装目录是:

        Agent.HomeDirectory: c:\agent
        

        代理工作目录是

        Agent.WorkFolder : c:\agent_work
        

        在这个文件夹中(C:\agent\work\builID),你可以找到一些子文件夹:

        • a -> 人工制品
        • b -> 构建目录
        • s -> 源目录

        您可以使用 powershell 脚本并在您想要的文件夹上复制任何工件或构建输出。

        Powershell 示例:

        $destinationFolder = "C:\myfolder"
        $sourcesDirectory = "$(Build.ArtifactStagingDirectory)\result"
        robocopy $sourcesDirectory $destinationFolder /im /e
        

        https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml

        【讨论】:

        • 感谢您的评论。如果我在运行管道之前设置变量,则构建输出表明它仍在使用“C:\Agent-xyz_work\23\s...”。我在这里犯了什么错误吗?
        • 我不确定这些值是否可以在运行时被覆盖。您可以在配置自定义代理时设置代理工作目录。对于 Azure 提供的代理池,我不确定您是否可以更改默认值。这就是为什么我建议将您需要的任何文件从工作目录复制到您请求的目录中。
        • 谢谢@GeralexGR。我无权访问代理池。另一个团队维护它。那我想我不能覆盖和诉诸你复制东西的其他想法
        最近更新 更多